누군가가 해당 사용자 이름으로 로그인할 때마다 컴퓨터가 종료되도록 shutdown이라는 사용자를 만들었습니다. 이를 위해 .profile 끝에 다음 명령을 넣었습니다.
exec sudo shutdown -h now
그러나 이는 목표를 달성하지 못했습니다. 컴퓨터가 종료될 때가 아니라 사용자가 로그인을 닫을 때 로그인 화면이 다시 나타납니다. 따라서 사용자는 로그인할 수 없지만 동시에 동일한 로그인 화면으로 돌아갑니다.
제가 생각하는 이유는 사용자의 종료 비밀번호가 제공되지 않아서 머신이 종료되지 않았기 때문이라고 생각합니다. exec 덕분에 로그인 화면이 다시 돌아왔습니다.
이제 작업을 해결하려면 위의 sudo 명령을 실행할 때 자동으로 비밀번호를 가져오는 방법이 필요합니다. 검색해 보니 옵션을 사용해야 할 것 man sudo
같습니다 .-A
해당 매뉴얼 페이지에 따라 나는 달렸습니다.
SUDO_ASKPASS=/home/ravbholua/pass.txt
export SUDO_ASKPASS
그런 다음 작동하는지 확인하기 위해 실행했습니다.
ravbholua@ravbholua-Aspire-5315:~$ sudo -A pwd
sudo: unable to run /home/ravbholua/pass.txt: Permission denied
이 출력에서 이는 이 경로 파일을 실행하고 내 비밀번호를 sudo에 대한 출력으로 제공해야 함을 의미합니다. 제가 염두에 둔 것은 pass.txt라는 파일에서 비밀번호를 얻을 것이라는 것이었기 때문에 그 파일에 비밀번호를 입력했습니다. 하지만! ! ! ! ! ! !
어떤 제안이라도 부탁드립니다!
답변1
SUDO_ASKPASS는 사용자에게 비밀번호를 묻는 바이너리여야 합니다. 그 사용 예는 GUI 프로그램을 사용할 때 사용자가 비밀번호를 입력하도록 요구하는 GUI 창을 팝업하는 것입니다. 매뉴얼 페이지에는 다음이 있습니다.
사용 가능한 터미널이 없거나 -A 옵션이 지정된 경우 비밀번호 읽기를 위한 도우미 프로그램의 경로를 지정합니다.
원하는 작업을 수행하려면 "shut" 사용자가 암호를 지정하지 않고도 종료를 실행할 수 있도록 /etc/sudoers 파일을 편집해야 할 수도 있습니다. 다음 줄을 사용하면 "shut" 사용자가 "모든" 컴퓨터에서 "/sbin/shutdown -h now" 및 "/sbin/shutdown -r now"를 실행할 수 있습니다.
모두 종료 = NOPASSWD: /sbin/shutdown -h 지금, /sbin/shutdown -r 지금
덜 안전한 옵션은 다음과 같이 sudo의 "-S" 옵션을 사용하여 stdin에서 비밀번호를 읽고 해당 비밀번호를 다시 에코하는 것입니다.
echo "비밀번호" | sudo -S shutdown -h 지금