Как запустить приложение, используя sudo без пароля?
... но все же требуется для приложений, которым требуются права администратора?
Для того, чтобы разрешить следующее:
$ apache2ctl restart
httpd not running, trying to start
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
$ sudo !!
sudo apache2ctl restart #no password asked
$ #works!
Для справки, я видел эту установку на экземплярах Amazon E3
Любая идея?
6 ответов
Вам нужно отредактировать файл sudoers. Имейте в виду, что успех дает вам менее безопасную систему, а сбой может сломать sudo. ВСЕГДА редактируйте файл sudoers с помощью sudo visudo
, поскольку visudo проверяет наличие ошибок и не сохраняет файл, если таковые обнаружены.
Это плохая идея - дать всем разрешение на запуск от имени пользователя root без пароля, поэтому просто пропустите нужный вам исполняемый файл (apache2ctl); добавьте следующее к самому низу файла:
YOURNAME ALL = NOPASSWD: /usr/bin/apache2ctl
Вы можете заменить путь к исполняемому файлу на "ВСЕ", если захотите, что даст вам полное sudo без пароля.
Замените ВАШЕ ИМЯ своим именем пользователя и нажмите Ctrl + X, чтобы сохранить и выйти. Если произошла ошибка, она предложит отменить, отредактировать или сохранить в любом случае.
Убедитесь, что вы используете полный путь к исполняемому файлу:
то есть. /usr/bin/apache2ctl
вместо просто apache2ctl
, Это важно, потому что без явного указания пути sudo позволит любой программе с именем apachectl на текущем пути пользователя запускаться от имени пользователя root.
Реальный ответ на этот вопрос может быть сложным, потому что sudo очень мощный, и его можно настроить для выполнения крутых вещей. Это подробно объясняется в документации.
Краткий ответ sudo visudo
в терминале. Если вы запускаете visudo впервые, он спросит, какой редактор вы предпочитаете. Обычно считается, что nano проще всего использовать, но выберите тот редактор, который вам наиболее удобен / знаком. Вам нужно будет решить, кому вы хотите предоставить доступ; возможно ALL
для всех (очень плохая идея), пользователя или системной группы. Группы имеют префикс со знаком%. Например, если вы хотите дать всем в steroid_users
групповые привилегии root без необходимости ввода пароля для всех команд, которые вы добавите:
%steroid_users ALL=(ALL) NOPASSWD: ALL
в конец файла выйдите и сохраните файл. Если все идет хорошо, и вы являетесь членом группы steroid_users, вы сможете оформить sudo *some-command*
без необходимости ввода пароля.
Имейте в виду, что любой, у кого есть доступ к вашему терминалу, когда вы вошли в систему - или если у вас есть ssh, настроенный для аутентификации на основе ключей, или (что еще хуже) включили беспарольный сеанс входа в систему - полный и беспрепятственный доступ ко всему система. Если в вашей системе несколько пользователей, или если это файловый сервер, все файлы пользователей могут быть подвержены риску, поскольку root может делать все что угодно!
Также, если вы допустите ошибку, visudo выдаст и сообщение об ошибке, а не сохранит изменения в файле. Это поможет предотвратить полное разрушение sudo. Вы должны действительно прочитать документацию. Sudo разработан для того, чтобы предоставить пользователям достаточно доступа для выполнения своей работы без необходимости выставлять всю вашу систему на вооружение. Может быть выгодно предоставлять свободный доступ к паролю только для определенных команд.
Надеюсь, это поможет.
Вам нужно отредактировать файл / etc / sudoers (для этого есть команда visudo), чтобы добавить NOPASSWD до списка разрешенных команд для вашего пользователя или группы. Если ваш пользователь входит в группу администраторов - вам необходимо следующее:
%admin ALL=(ALL) NOPASSWD: ALL
Проверьте https://help.ubuntu.com/community/Sudoers, кстати.
Вы МОЖЕТЕ добавить флаг nopasswd в список пользователей, но это не устраняет все пароли, задаваемые вопросы. Только первый будет задан вопрос.
- Редактировать sudoers:
sudo visudo
(Вы ДОЛЖНЫ использовать sudo. Это административный файл.) - Добавьте вашего пользователя с флагом nopasswd после строки администратора (в конце). Например:
cyrex ALL = NOPASSWD: ALL
или жеcyrex ALL = (ALL) NOPASSWD: ALL
sudo visudo
%<GROUP> ALL = NOPASSWD: apache2ctl
или же
sudo visudo
%<GROUP> ALL = NOPASSWD: /etc/init.d/apache2
Я предполагаю, что это сделало бы это.
Но будьте осторожны с удалением паролей для sudo.
Теперь простой ответ! Невозможный способ испортить что-либо или помешать вашей установке.
Просто введите ваш пароль пару раз, и вам больше никогда не придется его вводить! Это позволит вам добавить учетную запись локального администратора в группу "root", которая затем не будет закомментирована в шаблоне, который предоставит привилегии суперпользователя всей группе "root". Вы можете прочитать мою проблему безопасности / решение для этой процедуры в более поздней части этого поста.
% username & - это глобальная переменная для вашего имени пользователя (замените его на желаемое имя пользователя)
Шаг 1: Откройте окно терминала и введите "sudo usermod -a -G root %username%
"
Шаг 2: Затем скопируйте / вставьте это...
sudo sed -i 's/# auth sufficient pam_wheel.so trust/auth sufficient pam_wheel.so trust/g' /etc/pam.d/su`
Шаг 2 ИЛИ тип
sudo nano /etc/pam.d/su`
Перейти к строке 19 и удалить "#" перед # auth sufficient pam_wheel.so trust
(может быть другой номер строки для некоторых)
* Первая команда добавляет ваше имя пользователя% в группу "root"
Вторая / третья команды позволяют всем членам группы "root" быть суперпользователем без пароля, в отличие от предоставления пользователю "root" su привилегий для аутентификации.
Сноска:
Не возиться с /etc/sudoers
... Есть много проверок / противовесов, которые должна пройти аутентификация 'su'. Для аутентификации суперпользователя используется та же процедура pam.d, что и для всех других аутентификаций при входе. "/etc/security/access.conf" имеет схему управления доступом через коммуникацию tcp/ip(192.168.0.1) и через службы telnet (tty1&tty2 и tty3... и т. д.). Это позволяет более точно фильтровать каждое приложение через транспортный протокол. Если вы беспокоитесь о безопасности, тогда ваша забота должна быть направлена на угрозы удаленного доступа или кода, а не на то, кто действительно касается вашего компьютера, когда вы выходите из комнаты!!!
Пища для паранойи (не печатайте это только, рассмотрите это):
sudo sed -i 's/#-:ALL EXCEPT (wheel) shutdown sync:LOCAL/-:ALL EXCEPT (wheel) shutdown sync:LOCAL/g' /etc/security/access.conf
^ Это блокирует доступ к консоли для всех, кто не является членом системы или root. Иногда программы устанавливают имена пользователей / группы, которые эксплуатируются!