Разграничение прав доступа пользователей
Ограничение прав пользователей в операционной системе – тема сложная, но необходимая. В зависимости от семейства операционной системы существуют разные правила и стандарты. Рассмотрим подробнее, как это происходит в ОС Ubuntu.
Права администратора
Чтобы запускать привилегированные команды, пользователь должен обладать правами, как минимум, администратора системы. По умолчанию операционная система отключает повышенный уровень прав у любого пользователя. Чтобы его повысить, воспользуемся следующей командой.
usermod -a -G sudo username1
Теперь пользователь с именем username1 добавлен в группу sudo и является администратором для операционной системы. Ему доступны настройки ОС, а также доступ к каталогу /dev с вложениями. Большинство привилегий администраторов схоже с возможностями суперпользователя, но они неполные.
Как выставить запрет
В корпоративных информационных системах большинство ОС являются многопользовательскими. Соответственно, необходимо для каждого владельца разграничить права доступа. Для этого используется внутренняя команда chmod, например:
sudo chmod o-x $(which ls)>
Вышеуказанная строка означает, что только root имеет право запускать команду ls. Всем остальным в доступе будет отказано.
Разберем другую ситуацию. Есть пользователь с именем username1. Ему необходимо ограничить доступ к команде ls. Для этого создаем группу пользователей usergroup1, в которую перенесём всех кроме username1.
sudo groupadd usergroup1
sudo useradd -G usergroup1 <username2, username3>
Вторая строка добавляет в группу usergroup1 пользователей username2, username3 и т. д. Ограничим права на запуск команды ls. Её смогут активировать только участники usergroup1.
sudo chown :group2 $(which ls)
sudo chmod 754 $(which ls)
Теперь неучастник usergroup1 не сможет активировать ls.
Немного о файле /etc/sudoers
Sudoers содержит информацию о пользователях, которые могут использовать утилиту sudo. Чтобы открыть файл, используем специальную утилиту visudo.
visudo /etc/sudoers
Внутри содержится следующая информация:
Расскажем подробнее о строке:
%sudo означает, что к группе sudo применяется следующее правило. Если устанавливаем правила для конкретного пользователя, то % не нужен.
Первая переменная ALL расшифровывает, как применить правило ко всем IP-адресам. Второй и третий ALL – указанный пользователь или группа имеют право исполнять команды в сессии любого пользователя или группы. Четвертая переменная означает, что данный шаблон применяется ко всем командам.
Например, необходимо установить права на запуск утилиты apt get для группы admin.
%admin ALL=(ALL)NOPASSWD:/usr/bin/apt-get
Alias (псевдонимы)
Для удобства разграничения прав доступа используются алиасы. Они объединяют один или несколько значений в один параметр. Например, присвоим IP-адресу облачного хранилища более удобное имя.
Host_Alias CLOUD = 105.17.125.37
CLOUD – псевдоним, который указывается в параметрах вместо IP-адреса.
При необходимости алиасы используются для объединения пользователей в одну группу.
User_Alias Name = user1,user2,...
, где Name – псевдоним, а user1, user2 – имена пользователей. Также утилита Alias доступна и для команд, т. е. объединяем список инструкций в единую группу.
Cmnd_Alias Name = cmd1,cmd2
- name – произвольное наименование для перечня команд;
- cmd1, cmd2 – перечисление команд через запятую.
Например, объединим обновление пакетов в алиас:
cmnd_Alias APT = /usr/bin/apt-get update,/usr/bin/apt-get upgrade