이것은 su가 필요했던 첫 번째 사건입니다.
노트북의 화면 밝기를 변경하기 위해 / sys / devices / virtual / backlight / acpi_video0 / brightness에서 값을 변경하는 방법에 대한 기사를 읽었습니다.
나는 먼저 $ sudo echo 10 > brightness
허가를 거부 할 것이라는 점을 알아 차렸다 .
나는 su를 사용하여 루트로 전환하고 # echo 10 > brightness
거의 즉시 밝기를 변경했습니다.
마지막으로 이상한 일이 있었는데 # echo 20 > brightness
(maxbrightness 파일에 15 값이 있습니다) 쓰기 오류가 발생했습니다.
누군가 sudo와 su의 차이점을 설명해 주시겠습니까? 쓰기 오류를 이해하면 추가 보너스가 될 것입니다. 모든 도움, 포인터 및 / 또는 링크는 대단히 감사하겠습니다.
답변
리디렉션은 그런 식으로 작동하지 않습니다. >
명령에 추가 하면 루트가 아닌 호출 사용자 (사용자)로서 해당 리디렉션이 실행됩니다. 함께하십시오 tee
:
echo 20 | sudo tee /sys/devices/virtual/backlight/acpi_video0/brightness
또는 별도의 특권 쉘에서 명령을 호출하여 다음을 수행하십시오.
sudo bash -c "echo 20 > /sys/devices/virtual/backlight/acpi_video0/brightness"
답변
이것은 sudo
명령 때문이 아니라 명령 처리 방식 때문입니다. 나는 실제로이 질문 에서 그것을 설명 했다 . 당신이 할 때
$ sudo echo 10 > brightness
쉘은 root로 실행되는 명령 sudo echo 10
을 실행 echo 10
합니다. 그런 다음 셸은 열려고 brightness
출력을 리디렉션 echo 10
할 수는 있지만 셸은 루트가 아닌 권한으로 실행되고 있습니다. 내가 연결 한 질문에 대한 답변으로 게시 된 해결 방법이 있습니다. 좋은 것은 :
$ echo 10 | sudo tee brightness
이제 tee
열어야 brightness
할 것은 루트로 실행되므로 성공합니다.
답변
su = s 스위치 u ser : 다른 사용자로 쉘 사용
sudo = s uper u ser do : 루트 사용자로 다음 명령을 실행합니다.
귀하의 경우 다음 명령 만이 echo 20
므로 echo 20 만 루트로 실행됩니다 (앞서 언급했듯이). 다시 리디렉션이 실행됩니다.