Перевод сборника команд Unix ToolBox. Часть 15 SUDO

521

Честно говоря, я не знаю требует ли обслуживание 1с в Москве особых административных прав. Думаю, что настройка 1с точно требует определенных знаний этой программной среды. Но то, что в большинстве дистрибутивов Linux действует жесткая политика предоставления прав пользователям на выполнение определенных задач, я знаю точно. Сегодня наибольшей популярностью пользуется SUDO. Во всяком случае в Ubuntu получить права root можно именно так. О том, как это выглядит командно рассказывается в 15 части перевода ?сборника команд Unix ToolBox.

SUDO

Sudo — стандартное средства наделить пользователя некоторыми административными правами доступа, без выдачи ему пароля на root. Sudo весьма полезна, когда на машине работает много пользователей. Вызывается она просто:

# sudo /etc/init.d/dhcpd restart # Запустить стартовый скрипт от имени root
# sudo -u sysadmin whoami # Запустить команду от имени другого пользователя
Конфигурация Sudo

Программа 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