Я предоставил группе разрешение на запуск определенных команд без пароля через sudo. Когда один из пользователей делает опечатку или запускает неправильную команду, система запрашивает у них пароль, а затем они получают ошибку. Это сбивает с толку пользователя, поэтому я хотел бы просто отобразить ошибку, а не запрашивать пароль. Это возможно?
Вот пример моего файла sudoers:
%mygroup ALL=(ALL) NOPASSWD:/usr/local/bin/myscript.sh *
Пример, когда они запускают неправильный скрипт:
# sudo /usr/local/bin/otherscript.sh
[sudo] password for user:
Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>.
Желаемый вывод:
Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>. Please check the command and try again.
Обратите внимание на отсутствие запроса пароля.
Мой Google-фу не удалось меня и возвращает результаты , только на не спрашивая пароля , когда пользователь будет разрешено выполнять команду.
sudo
позволят вам выполнить без ввода пароля. С помощью функции, которую вы хотите, я мог бы получить эту информацию для конкретных команд.sudo
такой же большой проблемой, если пользователи имеют доступ на запись к этим файлам.Ответы:
Из краткого прочтения
sudo(8)
И для сомневающихся:
Проверено таким образом:
Таким образом,
alias
forsudo
для этих людей, вероятно, добьется цели, чтобы предотвратить запрос пароля. Теперь, почему это требует специальной компиляцииsudo
, я не знаю, я просто прочитал руководство.источник
alias sudo="$(which sudo) -n"
в / etc / bashrc, а затем использовал быsudo
(скорректированное поведение) илиcommand sudo
(поведение по умолчанию) по желанию.Одна вещь, которая сработала для меня (Sudo версия 1.8.17p1), но удовлетворяет только часть вашей проблемы, это установить количество попыток ввода пароля равным 0.
Это заставляет sudo завершить работу с кодом 1, когда пробуется любая команда, требующая пароль. Тем не менее, он не выдает никаких сообщений об ошибках.
источник
Тебе нельзя.
Невозможно сказать, кто вы, пока вы не прошли аутентификацию, и по умолчанию вы не можете аутентифицироваться без пароля.
Вы можете изменить аутентификацию, чтобы использовать USB-ключи, сканеры отпечатков пальцев, голосовую аутентификацию, распознавание лиц или кучу других вещей, но суть та же.
Вы не можете проходить аутентификацию без аутентификации И до того, как вы аутентифицируетесь, sudo не имеет права рассказывать вам, что вы можете или не можете запустить.
источник
@StrongBad сделал комментарий, который заслуживает ответа:
Я думаю, что лучшим решением было бы написать скрипт-обертку, который всегда вызывает
sudo
с правильными параметрами. (В том числе-n
)Скрипт-обертка может выполнять разбор аргументов и т. Д., Так что вызываемый скрипт sudo становится настолько малым, насколько это возможно, и, следовательно, с меньшей вероятностью может иметь ошибки.
источник
Это невозможно. Единственный способ - это изменить исходный код и скомпилировать свой собственный форк
sudo
источник