Разграничение прав на выполнение различных команд является очень важным моментом в многопользовательской системе. Разграничить команды для обычных пользователей и администраторов необходимо хотя бы для того, чтобы неопытные пользователи не могли устанавливать или удалять программы или выполнять случайные действия в системе.
Команда sudo является механизмом предоставления прав администратора, обычно доступных только для пользователя root, для обычных пользователей.
Разрешить sudo для определенных пользователей
По умолчанию новый пользователь создается без права исполнения команд sudo, это сделано в целях безопасности. Чтобы пользователь имел возможность выполнять все команды необходимо добавить его в группу sudo:
usermod -a -G sudo <имя пользователя>
Например:
usermod -a -G sudo cloud
После добавления в группу sudo пользователь становится администратором. Администраторы в linux могут настраивать систему, им предоставлен доступ ко всем файлам в каталоге /dev, им предоставлены привилегии близкие к возможностям суперпользователя.
Примечание: в Ubuntu 12.04 LTS и более поздних версиях существует привычная группа admin, которая поддерживается для совместимости с более ранними версиями ОС, а все администраторы добавляются в группу sudo.
Запрет вызова команд
Запрет вызова команд может быть полезен в многопользовательских системах, например, чтобы пользователи не могли менять права на файлы или каталоги, выключать или перезагружать сервер, вызывать различные программы или утилиты.
Чтобы запретить выполнение определенных команд или утилит для всех кроме пользователя root, достаточно выполнить следующую команду:
Например:
Примечание: полагается, что все системные команды по-умолчанию принадлежат пользователю root.
После выполнения данной операции, все кроме root не смогут использовать команду ls:
Чтобы запретить user1 использовать определенную команду, необходимо создать группу group2 и добавить в нее всех, кроме user1:
Затем изменить группу владельцев нужной команды на group2:
sudo chown :group2 <команда>
Например:
И наконец, запретить всем, кроме группы и владельца исполнять файл:
Например:
Редактирование файла /etc/sudoers
Файл /etc/sudoers определяет какие пользователи могут запускать sudo команды, а также управляет особыми правилами, например, нужен ли пользователю пароль для определенных команд. Файл состоит из псевдонимов (переменных) и пользовательских спецификаций.
Чтобы открыть файл /etc/sudoers используйте утилиту visudo, она специально предназначена для редактирования этого файла и позволяет не допустить ошибок в синтаксисе:
visudo
Файл будет открыт в текстовом редакторе по-умолчанию.
Стандартное содержимое файла выглядит следующим образом:
Примечание: здесь параметр Defaults имеет несколько значений:
- env_reset - сбрасывает все пользовательские переменные;
- mail_badpass - сообщает системе отправлять уведомления о неудачных попытках ввода пароля sudo пользователю mailto. По умолчанию это учетная запись root.
- secure_path - пути, по которым операционная система будет искать файлы, используемые для операций sudo.
Рассмотрим подробнее строку:
- %sudo - имя пользователя или группа, к которой нужно применить правило (имя группы указывается после символа %, имя пользователя без).
- <>Первое ALL означает, что правило применяется ко всем IP-адресам, второе ALL, что указанный пользователь может запускать команды в сессии любого пользователя, третье ALL означает, что указанный пользователь может запускать команды в любой группе. Последнее ALL указывает, что эти правила нужно применять ко всем командам.
Например, для настройки прав для команды apt-get можно использовать следующую строку:
- %admin - правило применяется для всех пользователей группы admin;
- ALL= - правило применяется ко всем IP-адресам;
- (ALL) - пользователь может запускать команды в сессии любого пользователя;
- NOPASSWD - пароль не требуется;
- :/usr/bin/apt-get - список команд, разделенный запятой.
Host alias - это псевдонимы для IP адресов с которых отправляются на выполнение команды. Псевдоним для хоста можно задать следующим образом:
Host_Alias <Имя> = <Хост_или_IP-адрес>
Например:
Host_Alias CLOUD = 105.17.125.37
User alias - это псевдонимы имен пользователей или групп прямо внутри файла sudoers, а не в системе. Псевдоним можно задать следующим образом (для групп используйте %):
Например:
Cmnd alias - являются псевдонимами для имен команд прямо внутри файла sudoers, а не в системе. Псевдоним команды можно задать следующим образом:
Cmnd_Alias <Имя> = <команда1>,<команда2>
Например:
Ознакомиться с другими инструкциями вы можете на нашем сайте. А чтобы попробовать услугу — кликните на кнопку ниже.