sudo 권한이 거부되었지만 su가 권한을 부여했습니다.

sudo 권한이 거부되었지만 su가 권한을 부여했습니다.

su가 필요한 것은 이번이 처음입니다.

노트북 화면 밝기를 변경하기 위해 /sys/devices/virtual/backlight/acpi_video0/brightness의 값을 변경하는 방법에 대한 기사를 읽었습니다.

$ sudo echo 10 > brightness나는 내가 원했을 때 거절을 당하고 있다는 것을 처음으로 깨달았습니다 .

나는 su를 사용하여 루트로 전환했고 # echo 10 > brightness거의 즉시 밝기를 변경했습니다.

마지막으로 시도했을 때 이상한 일이 일어났고 # echo 20 > brightness(maxbrightness 파일의 값은 15였습니다) 쓰기 오류가 발생했습니다.

누군가 sudo와 su의 차이점을 나에게 설명해 줄 수 있습니까? 쓰기 오류에 대해 알면 추가적인 이점이 있습니다. 어떤 도움, 조언 및/또는 링크라도 대단히 감사하겠습니다.

답변1

리디렉션이 작동하는 방식은 아닙니다. 명령에 추가하면 >루트 대신 호출 사용자(귀하)로 리디렉션이 실행됩니다. 이걸로 해라tee:

echo 20 | sudo tee /sys/devices/virtual/backlight/acpi_video0/brightness

또는 별도의 권한이 있는 쉘에서 명령을 호출하여:

sudo bash -c "echo 20 > /sys/devices/virtual/backlight/acpi_video0/brightness"

답변2

이는 sudo가 아니라 실제로 설명했던 명령이 처리되는 방식 때문입니다.이 문제. 당신이 할 때

$ sudo echo 10 > brightness

쉘은 루트로 실행되는 명령을 실행 sudo echo 10합니다 echo 10. 그런 다음 셸은 brightness출력을 리디렉션할 수 있도록 열려고 시도 echo 10하지만 그럴 수 없습니다. 셸은 루트가 아닌 사용자 권한으로 실행되고 있습니다. 내가 연결한 질문에 대한 답변으로 게시된 몇 가지 해결 방법이 있습니다.

$ echo 10 | sudo tee brightness

이제 tee열립니다 brightness. 루트로 실행 중이므로 성공합니다.

답변3

수 =에스마녀ser: 다른 사용자로 쉘을 사용하세요

스도=에스상위 레이어세레하다: 루트 사용자로 다음 명령을 실행합니다.

귀하의 경우 다음 명령은 echo 20echo 20이므로 이전에 언급한 것처럼 echo 20만 루트로 실행됩니다. 리디렉션이 다시 작동합니다.

답변4

/etc/sudoers파일을 보고 싶을 수도 있습니다 . 해당 목록에 에어컨이 없으면 에어컨을 이용할 수 없습니다.sudo.

관련 정보