Как запустить приложение с помощью sudo без пароля?

... но по-прежнему требуется для приложений, которым требуются права администратора?

Для того, чтобы разрешить следующее:

$ apache2ctl restarthttpd not running, trying to start(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80no listening sockets available, shutting downUnable to open logs$ sudo !!sudo apache2ctl restart             #no password asked$                                   #works!

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

Есть какие-нибудь идеи?

Попробуй пройти бота-учителя. Он научит тебя Linux в виде игры: Курсы Linux и DevOPS Бесплатный урок

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

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

YOURNAME ALL = NOPASSWD: /usr/bin/apache2ctl

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

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

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

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

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

%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 в список пользователей, но это не устраняет все задаваемые вопросы о паролях. Будет задан только первый вопрос.

  1. Редактировать sudoers: sudo visudo (Вы ДОЛЖНЫ использовать sudo. Это файл администратора.)
  2. Добавьте своего пользователя с флагом 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 (для некоторых может быть другой номер строки)

*Первая команда добавляет ваш %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

^ Это блокирует доступ к консоли для всех, кто не является членом system или root. Иногда программы устанавливают имена пользователей/группы, которые используются!

Это отличный учебник на форумах, где подробно описывается создание отдельного файла для указания программ, которые вы обычно используете. И это хорошая идея по соображениям безопасности.

Попробуй пройти бота-учителя. Он научит тебя Linux в виде игры: Курсы Linux и DevOPS Бесплатный урок