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

Для справки я видел эту настройку в e3-экземплярах amazon

Любая идея?

38 голосов | спросил tutuca 2 Maypm11 2011, 19:42:00

6 ответов


49

Вам нужно отредактировать файл sudoers. Имейте в виду, что успех дает вам менее безопасную систему, и отказ может сломаться sudo. ВСЕГДА отредактируйте файл sudoers с помощью sudo visudo, поскольку visudo проверяет наличие ошибок и не сохранит файл, если он найден.

Плохая идея дать все права на запуск с правами root без пароля, поэтому просто пропустите один исполняемый файл, который вам нужен (apache2ctl); добавьте следующее в самую нижнюю часть файла:

YOURNAME ALL = NOPASSWD: /usr/bin/apache2ctl

Вы можете заменить путь к исполняемому файлу с помощью «ALL», если вы выберете, предоставив вам полное sudo без пароля.

Замените YOURNAME своим именем пользователя и нажмите Ctrl + X , чтобы сохранить и выйти. Если произошла ошибка, она предложит все время отменить, отредактировать или сохранить.

Убедитесь, что , что вы используете полный путь к исполняемому файлу: т. е. /usr/bin/apache2ctl вместо просто apache2ctl. Это важно, потому что без явного указания пути sudo позволит любой программе с именем apachectl на текущем пути пользователя запускаться с правами root.

ответил Mark Paskal 2 Maypm11 2011, 20:10:04
24

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

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

%steroid_users ALL=(ALL) NOPASSWD: ALL

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

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

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

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

ответил Chris 12 Mayam12 2012, 10:03:53
5

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

%admin ALL=(ALL) NOPASSWD: ALL

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

ответил korjjj 12 Mayam12 2012, 09:18:25
3

Вы МОЖЕТЕ добавить флаг nopasswd в список пользователей, но это не устранит все вопросы, заданные с помощью паролей. Будет запрошен только первый.

  1. Изменить sudoers: sudo visudo (вам нужно использовать sudo. Это файл администратора.)
  2. Добавьте пользователя с флагом nopasswd после строки администратора (в конце). Например:
    cyrex ALL = NOPASSWD: ALL или cyrex ALL = (ALL) NOPASSWD: ALL
ответил Luis Alvarado 2 Maypm11 2011, 19:52:54
2
sudo visudo
%<GROUP> ALL = NOPASSWD: apache2ctl

или

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

Я думаю, это сделало бы это.

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

ответил Alex 2 Maypm11 2011, 19:59:00
0

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

Просто введите пароль пару раз, а затем вам больше не придется вводить его! Это позволит вам добавить локальную учетную запись администратора в группу «root», которая затем не комментируется из шаблона, который позволит всем привилегиям суперпользователя «root». Вы можете прочитать мою озабоченность по безопасности /решение этой процедуры в последней части этого сообщения.

% имя пользователя и усилитель; является глобальной переменной для вашего имени пользователя (замените ее на желаемое имя пользователя)

Шаг 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 (для некоторых может быть другой номер строки)

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

ответил Nathaniel F. Malm 14 AMpMon, 14 Apr 2014 00:22:15 +040022Monday 2014, 00:22:15

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132