Назад | Перейти на главную страницу

su себе без пароля

Как можно настроить так, чтобы su тому же пользователю, который в настоящее время вошел в систему, то есть

foo$ su -c 'something' foo

не требует пароля? Это не добавит и не удалит никакой безопасности, поскольку это должно быть пустым звуком.

Причина этого заключается в том, что я хотел бы иметь класс пользователей «ниже» root, которые могут администрировать некоторые определенные службы на машине, которые работают под этим пользователем, например news или mysql (проверить их данные, изменить конфигурацию, перезапустить и т. д.). Эти пользователи получат sudo права на эту учетную запись, и это обычно работает хорошо, за исключением того, что сценарии инициализации в некоторых случаях вызывают

su -c 'start_daemon ...' daemonuser

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

Конфигурация для su находится в PAM, так что, возможно, здесь и кроется нужная магия.

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

Запустите visudo и добавьте эту строку:

yourusername ALL = (ALL) NOPASSWD: / bin / su - yourusername

и добавьте это в начало сценария инициализации:

псевдоним su = 'sudo su'

Вы можете сделать это, отредактировав файл 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

«Предоставление вашим пользователям разрешения sudo для этих сценариев, как уже говорили все остальные, - это правильный способ дать им возможность управлять этими демонами». - Зайфер

Я бы так и поступил. Он говорит, что вы должны позволить пользователям запускать сценарии (и только сценарии) от имени пользователя root, отредактировав ваш файл sudoers. Поскольку root может su где угодно и без пароля, скрипты должны работать нормально. Собственно, я сейчас и делаю именно это.

Имейте в виду, что сценарии инициализации предназначены для запуска от имени пользователя root, поэтому su используется в первую очередь (для отбрасывания привилегий root).