Сегодня много пользователей Linux знакомы с sudo. Ubuntu отчасти этому способствует, заставляя пользователей использовать sudo там, где раньше они использовали su: например, при установке программного обеспечения или выполнении каких-либо других административных задач. Однако есть масса моментов, с которыми администраторы Linux обязательно должны быть знакомы, прежде, чем использовать sudo.
Большинство пользователей не знает, что при помощи sudo можно запускать программы от имени любой учётной записи, а не только от имени root. В руках опытного администратораsudo может быть использована для создания отличной системы распределения прав доступа, делегировав таким образом некоторым пользователям выполнение отдельных административных задач, при этом не давай им ключей от квартиры, где деньги лежат. Давайте рассмотрим способы настройки административного доступа пользователей к системе, не снижая при этом эффективности их работы.
Запомните! для редактирования файла /etc/sudoers используйте только программу visudo!
Довольно соблазнительно дать доверенным пользователям полный доступ к системе, разрешив им при помощи sudo запускать что угодно от имени какой угодно учётной записи в системе. Не поддавайтесь этому соблазну. Предоставьте каждому пользователю столько привилегий, сколько необходимо и ни на йоту больше!
Отключите возможность переключения на любые учётные записи. Насколько это возможно, не давайте возможность пользователям входить в систему под другими учётными записями. Настройте sudo так, чтобы пользователи могли запускать лишь минимально-необходимый набор команд от имени конкретных учётных записей. Например, если вам нужно, чтобы пользователь мог устанавливать новое программное обеспечение в систему, сконфигурируйте sudo так, чтобы он имел возможность запускать менеджер пакетов от имени root и ничего более.
Не используйте директивы ALL. Одна из наиболее распространённых ошибок — это использование директивы ALL, которая разрешает пользователю выполнять что угодно от имени кого угодно. Вероятно, вы потратите больше времени на конфигурирование системы, избегая использование этой директивы, но, в конечном счёте, оно того стоит.
Разделяйте sudoers. Если вы администрируете большое количество систем, и копирование/etc/sudoers на все системы — вам вовсе не по душе, вы можете разбить /etc/sudoers на части и затем подключать их в основной файл по мере необходимости. Например, у вас есть набор директив, управляющих доступом к администрированию MySQL. Вынесите эту часть в отдельный файл с именем sudoers.mysql и затем при помощи директивы includeподключайте этот файл в основной там, где необходимо.
Используйте группы. Если это возможно, делегируйте полномочия не учётным записям, а группам. Например, делегируйте группе admin администрирование установки и обновления программного обеспечения. После этого, всякий раз, когда возникнет необходимость дать новому пользователю нужные привилегии, вам не нужно будет править /etc/sudoers, а лишь добавить учётную запись пользователя в нужную группу.
Таймаут. Убедитесь, что в конфигурации не задан слишком короткий таймаут. Это будет раздражать пользователей. «Правило большого пальца» для таймаута — что-то около пяти минут.
Правильно используйте пути к файлам. При помощи директивы sudo secure_pathзадайте путь к каталогам с исполняемыми файлами, запретив пользователям запускать программы, находящиеся вне разрешённых каталогов.
Используйте отдельный лог-файл. По умолчанию sudo протоколирует события в общий системный файл messages. Это вполне пригодно для использования на рабочих станциях, но никак не годится для использования на серверных системах. Настройте sudo так, чтобы чтобы она вела протокол в отдельный файл. Таким образом вы упростите себе задачу наблюдения за действиями доверенных пользователей и sudo в целом.
Где sudo может оказаться неэффективной
Да, sudo — мощный инструмент, но он также сложен в настройке и поддержке. В тех местах, где количество поддерживаемых систем относительно небольшое и администрирование выполняется опытными администраторами, sudo — отличное средство для настройки и управления административными полномочиями. Однако в больших системах, с большим количеством IT-персонала и сотнями серверов, sudo быстро проявляет свои недостатки. Вы можете использовать sudo совместно с другими административными утилитами. Например, для управлениями конфигурацией sudo на большим количеством систем, вы можете использовать sudo совместно с фреймфорками вроде Puppet. Такой вариант может быть вполне пригоден в организациях, использующих UNIX/Linux в качестве основной операционной системы.
Если же ваша компания использует в сети как MS Windows с развёрнутой Active Directory, так и Linux, то вы можете попробовать Likewise Enterprise, чтобы наладить связь между Linux-хостами и Active Directory. При помощи неё вы можете не только связать учётные записи UNIX и Active Directory, но и управлять конфигурацией sudo на всех серверах вашей сети.
Вы можете найти много утилит, дополняющих sudo, и при помощи которых сможете точно управлять административными полномочиями доверенных пользователей. Прежде чем разворачивать sudo в вашей сети, обязательно оцените адекватность вашего решения и выберите те места, использование sudo будет действительно полезным и эффективным. Использование sudo на предприятиях малого бизнеса может быть весьма эффективным, если вы последуете рекомендациям и тщательно продумаете конфигурацию sudo. Если в используемой вами конфигурации что-то настроено неверно, то такая ситуация почти равнозначна той, если бы просто дали кому-то пароль суперпользователя, добавляя к этому ложное ощущение безопасно-настроенной системы.
По мотивам LinuxPlanet.Com