sudo가 비밀번호를 묻지 않고 자동으로 비밀번호를 수락하도록 만드는 방법은 무엇입니까?

sudo가 비밀번호를 묻지 않고 자동으로 비밀번호를 수락하도록 만드는 방법은 무엇입니까?

저는 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'를 실행할 수 있습니다.

shutdown ALL = NOPASSWD: /sbin/shutdown -h 지금, /sbin/shutdown -r 지금

더 안전하지 않은 옵션은 sudo의 '-S' 옵션을 사용하여 stdin에서 비밀번호를 읽고 다음과 같이 비밀번호를 에코하는 것입니다.

에코 "비밀번호" | sudo -S 종료 -h 지금

관련 정보