Команда su – это специальная команда Linux, которая позволяет запускать команду от имени другого пользователя и группы. Она также позволяет вам переключиться на учетную запись root (если она запускается без каких-либо аргументов) или другую указанную учетную запись пользователя.
Всем пользователям по умолчанию разрешен доступ к команде su. Но как системный администратор вы можете отключить доступ su для пользователя или группы пользователей, используя файл sudoers, как показано ниже.
Файл sudoers управляет плагином политики безопасности sudo, который определяет привилегии пользователя sudo. Команда sudo позволяет пользователям запускать программы с правами безопасности другого пользователя (по умолчанию, как пользователь root).
Чтобы переключиться на другую учетную запись пользователя, пользователь может запустить команду su из своего текущего сеанса входа в систему, как показано на рисунке. В этом примере пользователь aaronk переключается на учетную запись testuser. Пользователю aaronk будет предложено ввести пароль для учетной записи testuser:
$ su testuser
Чтобы переключиться на учетную запись root, пользователь должен иметь пароль root или привилегии для вызова команды sudo. Другими словами, пользователь должен существовать в файле sudoers. В следующем примере пользователь aaronk (пользователь sudo) переключается на учетную запись root.
После вызова sudo пользователю aaronk предлагается ввести свой пароль, если он действителен пользователю предоставляется доступ к интерактивной оболочке в качестве root:
$ sudo su
Отключить доступ su для пользователя Sudo
Отключаем доступ su для пользователя с sudo. Например пользователь aaronk, сначала создайте резервную копию исходного файла sudoers, расположенного в /etc/sudoers. Делается это следующим образом:
$ sudo cp /etc/sudoers /etc/sudoers.bak
Далее требуется открыть файл sudoers, используя следующую команду.
Обратите внимание, что не рекомендуется редактировать файл sudoers вручную, всегда используйте команду visudo:
$ sudo visudo
В разделе псевдонимы команд создайте следующий псевдоним:
Cmnd_Alias DISABLE_SU = /bin/su
Затем добавьте следующую строку в конце файла, замените имя пользователя aaronk на пользователя для которого вы хотите отключить доступ su:
aaronk ALL=(ALL) NOPASSWD: ALL, !DISABLE_SU
Сохраните файл и закройте его.
Далее проверьте, работает ли то что мы сделали. Система должна вернуть сообщение об ошибке, подобное этому: “Извините, пользователю aaronk не разрешено выполнять ‘/bin/su’ как root на tecmint.”.
$ sudo su
Отключить su для пользователей Sudo
Вы также можете отключить доступ su для группы пользователей sudo. Например, чтобы отключить доступ su для всех пользователей в группе admin, измените строку:
%admin ALL=(ALL) ALL
на вот эту строку:
%admin ALL=(ALL) ALL, !DISABLE_SU
Сохраните файл и закройте его.
Чтобы добавить пользователя в группу администратора, выполните команду usermod (username
заменить имя пользователя фактическим пользователем):
$ sudo usermod -aG admin username
Для получения дополнительной информации о su, sudo и sudoers посмотрите их справочные страницы:
$ man su
$ man sudo
$ man sudeors
Спасибо, за статью.
Всегда пожалуйста.
Я не вижу смысла запускать «sudo su», поскольку есть много других способов получить доступ с помощью sudo. Самый простой — «sudo -i», но «sudo /bin/sh» или любая другая оболочка будет работать нормально. Нереально даже отключить все программы-оболочки вручную, поскольку пользователи могут скопировать исполняемый файл куда-нибудь еще.
Проще говоря, если ВСЕ есть в списке программ, то пользователь может делать все, что захочет.
! operator имеет смысл только в том случае, если пользователь уже имеет ограниченный доступ и вы хотите ограничить его еще больше. Например, разрешите aaronk выполнять все в /usr/sbin, кроме /usr/sbin/foobar:
aaronk ALL = /usr/sbin/ , !/usr/sbin/foobar