Я создал пользователя с именем shutdown, чтобы всякий раз, когда кто-то входил в систему с этим именем пользователя, машина выключалась. Для этого я поместил следующую команду в конец .profile.
exec sudo shutdown -h now
Но это не послужило цели. Когда пользователь закрывает вход, вместо того, чтобы машина выключилась, экран входа возвращается. Таким образом, пользователь не может войти, но в то же время возвращается тот же экран входа.
Причина, по которой я чувствую, в том, что поскольку пароль для пользователя shutdown не предоставлен, машина не выключается. А из-за 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
Из этого вывода следует, что этот файл path должен запуститься и предоставить мой пароль в качестве вывода для sudo. Ранее я думал, что он возьмет пароль из этого файла с именем pass.txt, поэтому я ввел свой пароль в этот файл. Но нет!!!!!!!
Пожалуйста, есть какие-нибудь предложения!
решение1
Предполагается, что SUDO_ASKPASS — это двоичный файл, который запрашивает у пользователя пароль. Примером его использования может быть всплывающее окно в GUI с просьбой ввести пароль, когда пользователь использует программу с GUI. На странице руководства по этому поводу говорится следующее:
Указывает путь к вспомогательной программе, используемой для считывания пароля, если терминал недоступен или указана опция -A.
Чтобы сделать то, что вы хотите, вам, вероятно, нужно отредактировать файл /etc/sudoers, чтобы разрешить пользователю «shut» запускать shutdown без указания пароля. Следующая строка позволяет пользователю «shut» запускать «/sbin/shutdown -h now» и «/sbin/shutdown -r now» на «ВСЕХ» машинах.
закрыть ВСЕ = БЕЗ ПАРОЛЯ: /sbin/shutdown -h сейчас, /sbin/shutdown -r сейчас
Более небезопасным вариантом было бы использование опции '-S' команды sudo для считывания пароля из стандартного ввода и вывода пароля на него следующим образом:
echo "пароль" | sudo -S shutdown -h now