Sudo - стандартное средства наделить пользователя некоторыми административными правами доступа, без выдачи ему пароля на root. Sudo весьма полезна, когда на машине работает много пользователей. Вызывается она просто:
# sudo /etc/init.d/dhcpd restart # Запустить стартовый скрипт от имени root # sudo -u sysadmin whoami # Запустить команду от имени другого пользователя
Sudo конфигурируется в файле /etc/sudoers
и зачастую только с помощью специального редактора visudo
. Базовый синтаксис (разделитель в строке, знак "," ):
user hosts = (runas) commands # В /etc/sudoers
users
один или более пользователей или группа (например %wheel) для расширения прав доступаhosts
списак хостов (или ALL)runas
список пользователей (или ALL) от чьего имени могут выполняться команды. Заключается в ( )!commands
список команд (или ALL), которые можно запустить от имени root или от имени других пользователейКроме того существуют псевдонимы User_Alias, Host_Alias, Runas_Alias и Cmnd_Alias. Полезно, если конфиг слишком большой. Пример файла sudoers:
# cat /etc/sudoers # Псевдонимы хоста, подсети или имена хостов Host_Alias DMZ = 212.118.81.40/28 Host_Alias DESKTOP = work1, work2 # Псевдонимы пользователя, список пользователей имеющих некоторые права доступа User_Alias ADMINS = colin, luca, admin User_Alias DEVEL = joe, jack, julia Runas_Alias DBA = oracle,pgsql # Псевдонимы команд, список полных путей до команд Cmnd_Alias SYSTEM = /sbin/reboot,/usr/bin/kill,/sbin/halt,/sbin/shutdown,/etc/init.d/ Cmnd_Alias PW = /usr/bin/passwd [A-z]*, !/usr/bin/passwd root # Not root pwd! Cmnd_Alias DEBUG = /usr/sbin/tcpdump,/usr/bin/wireshark,/usr/bin/nmap
# Актуальные права доступа root,ADMINS ALL = (ALL) NOPASSWD: ALL # ADMINS может что-то делать без пароля DEVEL DESKTOP = (ALL) NOPASSWD: ALL # Разработчики имеют полные права доступа на рабочих станциях DEVEL DMZ = (ALL) NOPASSWD: DEBUG # Разработчики могут отлаживать DMZ сервера. # Пользователь sysadmin может использовать некоторые команды sysadmin DMZ = (ALL) NOPASSWD: SYSTEM,PW,DEBUG sysadmin ALL,!DMZ = (ALL) NOPASSWD: ALL # Какие-то права за рамками DMZ. %dba ALL = (DBA) ALL # Группа dba может работать от имени пользователя базы данных # Все могут монтировать/размонтировать CDROM на рабочих станциях ALL DESKTOP = NOPASSWD: /sbin/mount /cdrom,/sbin/umount /cdrom