Система Linux намного более безопасна, чем ее аналоги. Один из способов обеспечения безопасности в Linux – это политика управления пользователями и разрешениями на пользователя, и обычным пользователям запрещено выполнять любые системные операции.
Если обычному пользователю нужно выполнить какие-либо изменения системы, ему необходимо использовать команды ‘su‘ или ‘sudo‘.

ПРИМЕЧАНИЕ – Эта статья более применима к дистрибутивам на базе Ubuntu, но также применима к большинству популярных Linux дистрибутивов.
‘su’ против ‘sudo’
‘su‘ заставляет вас сообщать ваш root пароль другим пользователям, тогда как ‘sudo‘ позволяет выполнять системные команды без root пароля. ‘sudo‘ позволяет вам использовать свой собственный пароль для выполнения системных команд, т.е. делегировать системные обязанности без root пароля.
Что такое ‘sudo’?
‘sudo‘ является исполняемым корневым бинарным файлом setuid, который выполняет команды root от имени авторизованных пользователей, и пользователи должны ввести свой собственный пароль для выполнения системной команды, с последующим ‘sudo‘.
Кто может выполнить ‘sudo’?
Мы можем запустить ‘/usr/sbin/visudo‘ для добавления/удаления списка пользователей, которые могут выполнять ‘sudo‘.
$ sudo /usr/sbin/visudo
A screen shot of ‘/usr/sbin/visudo‘ file, looks something like this:
sudo список выглядит по умолчанию таким образом:
root ALL=(ALL) ALL
Примечание: Для редактирования файла /usr/sbin/visudo вы должны быть root.
Предоставление доступа через sudo
Во многих случаях Системный администратор, особенно новичок в этой области, использует строку “root ALL=(ALL) ALL” как шаблон и предоставляет неограниченный доступ другим пользователям, что может быть потенциально очень вредно.
Редактирование файла ‘/usr/sbin/visudo’ подобным образом, как показано ниже, может быть действительно опасным, если вы полностью доверяете всем перечисленным пользователям.
root ALL=(ALL) ALL adam ALL=(ALL) ALL tom ALL=(ALL) ALL mark ALL=(ALL) ALL
Параметры sudo
A properly configured ‘sudo‘ is very flexible and number of commands that needs to be run may be precisely configured.
Синтаксис настроенной строки ‘sudo‘:
User_name Machine_name=(Effective_user) command
Вышеприведенный синтаксис можно разделить на четыре части:
- User_name: Это имя пользователя ‘sudo‘.
- Machine_name: Это имя хоста, в котором команда ‘sudo‘ действительна. Полезно, когда у вас есть много хост-машин.
- (Effective_user): ‘Действующий пользователь’, которым разрешено выполнять команды. Этот столбец позволяет пользователям выполнять системные команды.
- Команда: команда или набор команд, которые пользователь может запустить.
Рекомендуемое чтение: 10 полезных конфигураций Sudoers для настройки ‘sudo’ в Linux
Некоторые ситуации и соответствующая строка ‘sudo‘:
Q1. У вас есть пользователь mark, который является администратором базы данных. Вам необходимо предоставить ему полный доступ только к серверу базы данных (beta.database_server.com), а не к любому другому хосту.
Для указанной ситуации ‘строка ‘sudo‘ может быть записана следующим образом:
mark beta.database_server.com=(ALL) ALL
Q2. У вас есть пользователь ‘tom‘, который должен выполнять системные команды от имени другого пользователя, кроме root, на том же сервере базы данных, описанном выше.
Для указанной ситуации ‘строка ‘sudo‘ может быть записана следующим образом:
mark beta.database_server.com=(tom) ALL
Q3. У вас есть пользователь sudo ‘cat‘, который должен выполнять только команду ‘dog‘.
Для реализации указанной ситуации ‘sudo’ можно записать так:
mark beta.database_server.com=(cat) dog
Q4. Что если пользователю нужно предоставить несколько команд?
Если количество команд, которые пользователь должен выполнить, не превышает 10, мы можем поместить все команды рядом с пробелами между ними, как показано ниже:
mark beta.database_server.com=(cat) /usr/bin/command1 /usr/sbin/command2 /usr/sbin/command3 ...
Если этот список команд варьируется в диапазоне, где буквально невозможно ввести каждую команду вручную, нам нужно использовать псевдонимы. Псевдонимы! Да, утилита Linux, где длинную команду или список команд можно указать с помощью маленького удобного ключевого слова.
A few alias Examples, which can be used in place of entry in ‘sudo‘ configuration file.
User_Alias ADMINS=tom,jerry,adam user_Alias WEBMASTER=henry,mark
WEBMASTERS WEBSERVERS=(www) APACHE Cmnd_Alias PROC=/bin/kill,/bin/killall, /usr/bin/top
Возможно указать Группы Системы вместо пользователей, которые принадлежат к этой группе, просто добавив «%» как показано ниже:
%apacheadmin WEBSERVERS=(www) APACHE
Вопрос 5. Как выполнить команду ‘sudo‘ без ввода пароля?
Можно выполнить команду ‘sudo‘ без ввода пароля, используя флаг ‘NOPASSWD‘.
adam ALL=(ALL) NOPASSWD: PROCS
Здесь пользователь ‘adam‘ может выполнить все команды, заданные в качестве псевдонимов под «PROCS», без ввода пароля.
Рекомендуемое чтение: Позвольте Sudo оскорблять вас, когда вы вводите неверный пароль
“sudo” обеспечивает вас надёжной и безопасной средой с большой гибкостью по сравнению с ‘su‘. Более того, настройка “sudo” проста. На некоторых дистрибутивах Linux “sudo” включен по умолчанию, тогда как большинство современных дистрибутивов требует его активации как меры безопасности.
Чтобы добавить пользователя (bob) в sudo, просто выполните указанную ниже команду от имени root.
adduser bob sudo
Это пока все. Я вернусь с другой интересной статьей. А пока оставайтесь на связи с Tecmint. Не забудьте оставить нам свой ценный отзыв в разделе комментариев.
Source:
https://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/