Sudo Ubuntu
Разделение привилегий пользователей - это фундаментальная парадигма безопасности в Linux.
Разделение привилегий пользователей - это фундаментальная парадигма безопасности в Linux. Обычный пользователь Linux оперирует с ограниченными привилегиями, чтобы снизить область его воздействия на систему в целом. У пользователя своё собственное окружение в котором он имеет права, а не во всей системе.
Специальный пользователь root обладает супер привилегиям. Это административная учетная запись без каких-либо ограничений, как обычного пользователя. Пользователи могут исполнять команды от имени супер-пользователя ( root ) несколькими различными путями. Один из них sudo, /etc/sudoers
Чтобы получить права супер-пользователя, как не банально это прозвучит, можно просто авторизоваться от имени root Работы от имени root считается не безопасной, высока вероятность допустит простую ошибку при манипуляции с файлами или директориями, или выполнить небезопасную команду.
Так же просто получить права root выполним в терминале команду su (будет запрошен пароль).
Наиболее продвинутый подход - это использование команды sudo. sudo позволяет выполнить команду с root привилегиями, без необходимости порождения нового процесса терминала.
$ sudo ls -laпри выполнении sudo будет запрошен пароль пользователя, в отличии от su где запрашивает пароль root.
Чтобы пользователь имел право использовать sudo потребуется настройка. Настройки в файле /etc/sudoers Для редактирования есть специальная команда vusudo
Сам файл выглядит примерно так
# reset/remove all user vars
Defaults env_reset
# отправить уведомление о неправильном вводе пароля
# при попытках пользователя использовать sudo
Defaults mail_badpass
# где в искать приложения для запуска
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
root ALL=(ALL:ALL) ALL
# groups
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
#includedir /etc/sudoers.dПравила привилегий sudo
# (1) (2)=(3:4) 5
root ALL=(ALL:ALL) ALL- (1) имя пользователя
- (2) применять ко всех хостам
- (3) можно выполнять команды от имени любого пользователя
- (4) можно выполнять команды от имени любой группы
- (5) можно выполнять любые команды
Для привилегий группы используется символ %
%developers ALL=(ALL) ALL Чтобы предоставить привилегии пользователю необходимо добавить его в группу sudo
root@#:~ usermod -aG sudo username
# или
root@#:~ gpasswd -a username sudoНастройка правил sudo
Во первых можно организовать пользователей в группы, для этого используем User_Alias
User_Alias DEVELOPERS = andy, carl
USer_Alias MAINTAINERS = foo, barТеперь можно указать привилегии для группы
MAINTAINERS ALL = /usr/bin/apt-get updateЧтобы убрать необходимость ввода пароль используется NOPASSWD
DEVELOPERS ALL = NOPASSWD:/usr/bin/sync-projectПолезная директива NOEXEC запрещает программам выполнять потенциально опасные операции (например порождение новых процессов)
developer ALL = NOEXEC:/usr/bin/lessОпции
выполнение команды от имени пользователя или группы
$ sudo -u operator /usr/bin/backupdb
$ sudo -g operators /usr/bin/updatedbочистка таймера использования sudo
$ sudo -kдля обновления "аренды" sudo
$ sudo -v чтобы посмотреть свои привилегии
$ sudo -lЧасто случается, что при выполнении команды, забыли использовать sudo, используем !!, что означает повтор последней команды
$ /usr/bin/updatedb # <- oops, missing sudo
$ sudo !! # become sudo /usr/bin/updatedb