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


11

이것은 su가 필요했던 첫 번째 사건입니다.

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

나는 먼저 $ sudo echo 10 > brightness허가를 거부 할 것이라는 점을 알아 차렸다 .

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

마지막으로 이상한 일이 있었는데 # echo 20 > brightness(maxbrightness 파일에 15 값이 있습니다) 쓰기 오류가 발생했습니다.

누군가 sudo와 su의 차이점을 설명해 주시겠습니까? 쓰기 오류를 이해하면 추가 보너스가 될 것입니다. 모든 도움, 포인터 및 / 또는 링크는 대단히 감사하겠습니다.


답변:


17

리디렉션은 그런 식으로 작동하지 않습니다. >명령에 추가 하면 루트가 아닌 호출 사용자 (사용자)로서 해당 리디렉션이 실행됩니다. 함께하십시오 tee:

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

또는 별도의 특권 쉘에서 명령을 호출하여 다음을 수행하십시오.

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

티 팁처럼. 15 년간의 유닉스 sysadmining 동안 나에게는 일어나지 않았다 :-) 분명히 보았을 때.
Mr Shark

8

이것은 sudo명령 때문이 아니라 명령 처리 방식 때문입니다. 나는 실제로이 질문 에서 그것을 설명 했다 . 당신이 할 때

$ sudo echo 10 > brightness

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

$ echo 10 | sudo tee brightness

이제 tee열어야 brightness할 것은 루트로 실행되므로 성공합니다.


3

su = s 스위치 u ser : 다른 사용자로 쉘 사용

sudo = s uper u ser do : 루트 사용자로 다음 명령을 실행합니다.

귀하의 경우 다음 명령 만이 echo 20므로 echo 20 만 루트로 실행됩니다 (앞서 언급했듯이). 다시 리디렉션이 실행됩니다.


2

/etc/sudoers파일을 보고 싶을 수도 있습니다 . 당신의 a / c가 거기에 없다면 당신은 할 수 없을 것 sudo입니다.


사실, 그러나이 경우 특정 오류 메시지가 나타납니다 ( "사용자 이름이 sudoers 파일에 없습니다")
Michael Mrozek
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.