Су себе без пароля
Как можно настроить это так, чтобы su
к тому же пользователю, который в настоящее время вошел в систему, то есть
foo$ su -c 'something' foo
не требуется пароль? Это не добавит и не удалит какую-либо безопасность, так как это должно быть noop.
Причина этого заключается в том, что я хотел бы иметь класс пользователей "ниже" root, который может администрировать некоторые конкретные службы на машине, которые работают под этим пользователем, например, news
или же mysql
(проверить их данные, изменить конфигурацию, перезагрузить и т. д.). Эти пользователи получат sudo
права на эту учетную запись, и это обычно работает хорошо, за исключением того, что сценарии инициализации в некоторых случаях вызывают
su -c 'start_daemon ...' daemonuser
и это разрушает эту схему. Конечно, я могу изменить сценарии инициализации или добавить дополнительные sudo
разрешения, но я хотел бы избежать такого рода исключений, потому что они беспорядок, чтобы поддерживать в долгосрочной перспективе.
Конфигурация для su
находится в PAM, так что правильная магия, возможно, лежит там.
5 ответов
Вы должны использовать sudo
для этого не su
, С помощью sudo вы можете указать NOPASSWD
в /etc/sudoers
:
username ALL=/path/to/command NOPASSWD: ALL
Я думаю, что здесь есть основное недоразумение.
Эти пользователи получат права sudo для этой учетной записи, и это обычно работает хорошо, за исключением того, что сценарии инициализации в некоторых случаях вызывают su -c 'start_daemon...' daemonuser, что приводит к отказу от этой схемы.
Когда скрипт инициализации делает su -c <start_daemon> <daemon_user>
он переключает контекст, в котором работает демон.
например, наши сценарии tomcat делают именно это, чтобы демон мог работать с разрешениями пользователя "tomcat".
Теперь, если вы собираетесь изменить сценарии инициализации, чтобы сделать su -c <start_daemon> <your_user>
Вы сломаете демона, поскольку он ожидает, что он будет работать в определенной среде.
Предоставление пользователям sudo разрешения для этих сценариев, как все уже сказали, является правильным способом дать им возможность управлять этими демонами.
"Предоставление пользователям sudo разрешения для этих сценариев, как все уже сказали, является правильным способом дать им возможность управлять этими демонами". - Зайфер
Это то, что я сделал бы. Он говорит, что вы должны позволить пользователям запускать сценарии (и только сценарии) от имени пользователя root, редактируя файл sudoers. Поскольку root может работать в любом месте без пароля, сценарии должны работать нормально. Я делаю именно это сейчас, на самом деле.
Имейте в виду, что начальные скрипты предназначены для запуска с правами root, поэтому su стоит на первом месте (для удаления привилегий root).
Вы можете сделать это, отредактировав файл PAM su в /etc/pam.d и используя модуль pam_succeed_if. В файле уже есть запись для root, поэтому скопируйте эту строку и добавьте еще одну после нее.
достаточно учетной записи pam_succeed_if.so uid = 0 use_uid quiet
достаточно учетной записи pam_succeed_if.so uid = [ваш UID здесь] use_uid quiet
Запустите visudo и добавьте эту строку:
имя пользователя ALL=(ALL) NOPASSWD: /bin/su - имя пользователя
и добавьте это в начало сценария инициализации:
псевдоним su='sudo su'