Эффективное использование sudo

Многие администраторы Linux-систем в своей работе нередко используют утилиту sudo, дающую возможность предоставлять пользователям неограниченные полнолномочия при работе с системой. И все они конечно же нередко вносили изменения в файле /etc/sudoers, добавляя в него новых пользователей.


Но, как показывает практика, в большинстве своем, администраторы используют в качестве шаблона строку:

root ALL=(ALL) ALL

,имеющуюся по умолчанию, и предоставляя неограниченный доступ пользователя root для остальных администраторов. К примеру:

root ALL=(ALL) ALL
jerry ALL=(ALL) ALL
dfs ALL=(ALL) ALL

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

Начнем с того, что синтаксис команды sudo имеет вид:

пользователь хост =(фактический пользователь) команда

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

К примеру, вы предполагаете дать возможность одному из ваших системных администраторов, доступ только к его системе и больше ни к какому-либо другому серверу:

mark des.teller.ru=(ALL) ALL

В круглых скобках необходимо указать имя фактического пользователя, обладающего правами на запуск команды. Это бывает удобным, когда необходимо кому-либо из пользователей выполнять какие-любо действия от имени других пользователей. К примеру:

vasya mail.teller.ru=(www) ALL

Ну, и последний столбец содержит команды, запускать которые имеет право пользователь, которому вы даете полномочия и имя которому указано в первом столбце. Допустим, строка типа:

vasya www.teller.ru=(www) /usr/sbin/apachectl

будет значить то, что пользователю vasya даются полномочия от имени www выполнять команду apachectl.

Если вашему новому системному администратору придется работать с большим количеством программ, то нет необходимости перечислять их в последнем столбце (кстати, отделяются друг от друга команды в последнем столбце при помощи запятой). В этом случае можно воспользоваться возможностью псевдонимов (aliases). Допустим:

User_Alias ADMINS=vasya,dfs,rita
Runas_Alias DAEMONS=bind,snmp,www
Host_Alias SERVERS=mail.teller.ru,www.teller.ru,ns.pye.ru
Cmnd_Alias PROG=/usr/sbin/named*,/bin/killall,/usr/bin/top,/usr/sbin/apachectl
ADMINS SERVERS=(DAEMONS) PROG

Если вы не располагаете временем на то, чтобы внести не один десяток сотрудников вашего отдела в список пользователей sudo (и представьте, что вы должны вспомнить все их имена пользователей!), то вам поможет возможность добавления в /etc/sudoers системных групп. Так, строка типа:

%admins SERVERS=(DAEMONS) PROG

даст возможность всем пользователям системной группы admins выполнять команды, перечисленные в псевдониме PROG на серверах SERVERS от имени учетных записей псевдонима DAEMONS.





О нас

Мы - группа IT-специалистов, работающая с .nix-системами уже более 15 лет и создающая различные проекты для людей.

Рекомендуем
Подключайся