Я бы хотел добавить /etc/sudoers
правило, разрешающее любому пользователю из группы admin
войти как пользователь из группы users
.
Пример:
В группе admin
У меня есть: alan
и smith
. В группе users
: anna
, mike
. И другие пользователи: stephen
, nick
.
alan
и smith
может это сделать:
sudo su - anna
sudo su - mike
Но этого сделать нельзя:
sudo su -
sudo su - root
sudo su - stephen
Напрасно пробовал что-то вроде этого:
%admin ALL=(ALL) NOPASSWD:/bin/su - %users
Любые идеи?
P.S. было бы идеально, если бы соблюдалась еще одна зависимость:
alan
также в users
группа и smith
не могу:
sudo su - alan
так как alan
в admin
группа.
Я не думаю, что ты действительно хочешь или нуждаешься su
для вашего варианта использования. Похоже, что вам нужно, чтобы определенная группа пользователей могла произвольно принимать личность любого пользователя в другой определенной группе. Для этого вам просто понадобятся sudoers:
%admin ALL=(%users) NOPASSWD:ALL
Вышеупомянутое правило sudoers означает, что все пользователи в admin
группа может бежать любой команда так как любой пользователь в users
группа через sudo -u <user> <command>
.
Если вы хотите, вы можете ограничить команды, которые пользователи-администраторы могут запускать как другой пользователь, которого вы заменяете ALL
в конце что-то более конкретное. Видеть man sudoers
подробнее об этом.
Чтобы получить ~ оболочку входа в систему для данного users
группа пользователей, вместо использования su
, админ может сделать:
sudo -u anna /bin/bash -il
Примечание о su
(человек су):
Команда su используется, чтобы стать другим пользователем во время сеанса входа в систему.
su
всегда запрашивает пароль пользователя, под которым вы регистрируетесь, Кроме для случая, когда вызывающий пользователь является пользователем root. sudo su - [user]
не запрашивает пароль, потому что вы поднимаетесь до root (через sudo), затем exec su - [user]
чтобы начать новый сеанс входа в систему. Но если вы не хотите повышать уровень sudoer до root, sudoer должен знать пароль пользователя, которого они хотят. su
как, побеждая цель использования sudo
в первую очередь.
Вы просто не можете использовать "% users", потому что это будет означать группу linux, а не переменную sudoers.
Вы можете сделать что-то вроде следующего:
Cmnd_Alias SWITCH_USERS = /bin/su - anna, /bin/su - mike
%admin ALL=(ALL) NOPASSWD: SWITCH_USERS
Если вы создаете две группы admin / users в системе только для этого вопроса, вы можете захотеть создать псевдонимы пользователей sudoers (так что вам нужно только отслеживать файлы sudoers). По моему личному мнению, лучше всего использовать параметры sudoers для sudo , и системные группы для разрешений, связанных с файлами / каталогами (но это мое мнение, не обязательно)
Руководство Sudoers немного сложно понять по некоторым темам. Вот хорошее руководство (с примерами), которое может помочь вам отредактировать файл sudoers: как редактировать файл sudoers
Я думаю, что самое полезное, что вы должны помнить о том, что вы пытаетесь выполнить, это: если вы добавляете полную команду в sudoers (со всеми параметрами и параметрами, она должна запускаться таким образом, поэтому "/ bin / su - "не будет работать, если вы укажете имя пользователя после команды (см. мой пример). Вы можете отрицать с помощью NOEXEC: команду, которую вы хотите запретить любым способом в sudo, и всегда используйте" visudo "для редактирования / etc / sudoers, что проверяет синтаксис.