Как запустить приложение, используя 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 случаи

Есть идеи?

41
задан 16 May 2011 в 01:03

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.

51
ответ дан 16 May 2011 в 01:03

Вы ДОЛЖНЫ добавить флаг nopasswd в список пользователей, но это не устраняет все задаваемые вопросы. Будет задан только первый вопрос.

  1. Редактируйте sudoers: sudo visudo (Вам нужно использовать sudo. Это файл администратора)
  2. Добавьте пользователя с флагом nopasswd после строки администрирования (в конце). Например:
    cyrex ALL = NOPASSWD: ALL или cyrex ALL = (ALL) NOPASSWD: ALL
3
ответ дан 16 May 2011 в 01:03

Вам нужно будет отредактировать файл '/ etc / sudoers' (для этого есть команда 'visudo'), чтобы добавить NOPASSWD перед списком разрешенных команд для вашего пользователя или группы. Если ваш пользователь находится в группе «admin» - вам необходимо следующее:

%admin ALL=(ALL) NOPASSWD: ALL

Отметьте https://help.ubuntu.com/community/Sudoers , кстати.

5
ответ дан 16 May 2011 в 01:03

Теперь простой ответ! Невозможно испортить что-либо или подделать вашу установку.

Просто введите свой пароль пару раз, и тогда вам больше никогда не придется его вводить! Это позволит вам добавить локальную учетную запись администратора в группу «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 достаточным pam_wheel.so trust (для некоторых может быть другой номер строки)

* Первая команда добавляет ваше% username% в группу "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. Иногда программы устанавливают имена пользователей / группы, которые используются!

0
ответ дан 16 May 2011 в 01:03

Настоящий ответ на этот вопрос может быть сложным, потому что sudo очень мощный и может быть настроен для выполнения интересных вещей. Это подробно описано в документации .

Краткий ответ выполняется sudo visudo в терминале. Если вы запускаете visudo впервые, он спросит, какой редактор вы предпочитаете. nano обычно считается самым простым в использовании, но выберите редактор, с которым вы наиболее удобны / знакомы. Вам нужно будет решить, кому вы хотите предоставить доступ; это может быть ВСЕ для всех ( очень плохая идея) , пользователя или системной группы. Группы начинаются со знака%. Например, если вы хотите предоставить всем в группе steroid_users привилегии root без необходимости ввода пароля для всех команд, вы должны добавить:

%steroid_users ALL=(ALL) NOPASSWD: ALL

в конец файла, выйти и сохранить файл . Если все пойдет хорошо и вы являетесь членом группы steroid_users, вы сможете выполнить sudo * some-command * , не беспокоясь о необходимости вводить пароль.

Имейте в виду, что любой, у кого есть доступ к вашему терминалу, когда вы вошли в систему - или если у вас есть ssh-настройка для аутентификации на основе ключей, или (что еще хуже) включили вход в сеанс без пароля - полный и беспрепятственный доступ ко всей вашей системе . Если в вашей системе несколько пользователей или это файловый сервер, все файлы пользователей могут быть в опасности, поскольку root может делать что угодно!

Кроме того, если вы сделаете ошибку, visudo выдаст сообщение об ошибке и не сохранять изменения в файле. Это поможет предотвратить полное нарушение sudo. Вам действительно следует прочитать документацию . Sudo предназначен для предоставления пользователям доступа, достаточного для выполнения их работы, без необходимости раскрывать всю вашу систему. Может быть полезно предоставить доступ без пароля только для определенных команд.

Надеюсь, это поможет.

25
ответ дан 16 May 2011 в 01:03
sudo visudo
%<GROUP> ALL = NOPASSWD: apache2ctl

или

sudo visudo
%<GROUP> ALL = NOPASSWD: /etc/init.d/apache2

Думаю, это сработает.

Но будьте осторожны с удалением паролей для sudo.

2
ответ дан 16 May 2011 в 01:03

Другие вопросы по тегам:

Похожие вопросы: