При добавлении пользователя в новую группу, когда разрешения группы пользователей становятся активными, если это пользователь /nologin?

При добавлении пользователя в новую группу, когда разрешения группы пользователей становятся активными, если это пользователь /nologin?

У меня есть учетная запись уровня обслуживания для запуска моего веб-сервера, и этот пользователь настроен с /sbin/nologin.

Обычно при добавлении пользователя в группу вам необходимо выйти из системы и снова войти в нее, чтобы использовать новые групповые разрешения.

Я хотел бы добавить этого пользователя в другую группу, чтобы расширить некоторые его разрешения, но поскольку пользователь моего веб-сервера никогда не входит в систему, когда и как этот пользователь получит доступ к новым групповым разрешениям?

решение1

Группы процесса устанавливаются программой, которая изменяет пользователя с root на целевого пользователя перед выполнением программы процесса. Когда пользователь входит в систему, программа, которая изменяет пользователя, — это программа входа ( login, su, sshd, …), а программа процесса — это оболочка пользователя. Для демона, запущенного под системным пользователем, программа, которая изменяет пользователя, может быть suили каким-либо другим инструментом, например, Debian'sstart-stop-daemon. Например, start-stop-daemonвсегда добавляет дополнительные группы в процесс. Программа изменения пользователя должна иметь логику для установки как основной группы из базы данных пользователей, так и дополнительной группы из базы данных групп.

решение2

С CentOS 6 nscdможет быть запущен. Если вы не изменили владельца группы с помощью команды высокого уровня (например, usermod), вам нужно убедиться, что запущен, grpconvчтобы /etc/gshadow также обновился. Если nscdзапущен, добавьте nscd -i group, чтобы сделать недействительным кэш локальной группы. Если вы изменили основной GID, запустите nscd -i passwd.

Проверьте результат с помощью id -a $ACCOUNT.

После этого перезапустите службу.

решение3

Я предлагаю su - ; /etc/init.d/NAME stop; /etc/init.d/NAME start;

«/etc/init.d/NAME restart» может быть недостаточно.

Связанный контент