Поиск по сайту:

Разница между su и sudo и как настроить sudo в Linux


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

Если обычному пользователю необходимо выполнить какие-либо общесистемные изменения, ему необходимо использовать команду «su» или «sudo».

ПРИМЕЧАНИЕ. Эта статья больше применима к дистрибутивам на базе Ubuntu, но также применима и к большинству популярных Linux. распределения.

«су» против «судо»

'su' заставляет вас поделиться своим паролем root с другими пользователями, тогда как 'sudo' позволяет выполнить системные команды без пароля root. 'sudo' позволяет вам использовать собственный пароль для выполнения системных команд, т. е. делегирует ответственность за систему без пароля root.

Что такое «судо»?

'sudo' — это корневой двоичный файл setuid, который выполняет команды root от имени авторизованных пользователей, и для выполнения пользователям необходимо ввести свой собственный пароль. системную команду, за которой следует «sudo».

Кто может выполнить «sudo»?

Мы можем запустить «/usr/sbin/visudo», чтобы добавить/удалить список пользователей, которые могут выполнять «sudo».

sudo /usr/sbin/visudo

Снимок экрана файла «/usr/sbin/visudo» выглядит примерно так:

По умолчанию список 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

Правильно настроенный 'sudo' очень гибок, и количество команд, которые необходимо выполнить, можно точно настроить.

Синтаксис настроенной строки «sudo»:

User_name Machine_name=(Effective_user) command

Приведенный выше синтаксис можно разделить на четыре части:

  1. Имя_пользователя: это имя пользователя sudo.
  2. Имя_компьютера: это имя хоста, на котором действительна команда «sudo». Полезно, когда у вас много хост-машин.
  3. (Effective_user): «Действующий пользователь», которому разрешено выполнять команды. Этот столбец позволяет разрешить пользователям выполнять системные команды.
  4. Команда: команда или набор команд, которые может выполнить пользователь.

Рекомендуется к прочтению: 10 полезных конфигураций Sudoers для настройки sudo в Linux

Некоторые ситуации и соответствующая им строка «sudo»:

Вопрос 1. У вас есть отметка пользователя, который является администратором базы данных. Вы должны предоставить ему весь доступ только к серверу базы данных (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', который должен запускать команду ' только собака».

Чтобы реализовать описанную выше ситуацию, мы можем написать «sudo» как:

mark beta.database_server.com=(cat) dog

Вопрос 4. Что делать, если пользователю необходимо предоставить несколько команд?

Если количество команд, которые должен выполнить пользователь, меньше 10, мы можем разместить все команды рядом с пробелами между ними, как показано ниже:

mark beta.database_server.com=(cat) /usr/bin/command1 /usr/sbin/command2 /usr/sbin/command3 ...

Если этот список команд варьируется в диапазоне, где буквально невозможно ввести каждую команду вручную, нам нужно использовать псевдонимы. Псевдонимы! Да, утилита Linux, в которой длинную команду или список команд можно назвать небольшим и простым ключевым словом.

Несколько примеров alias, которые можно использовать вместо записи в файле конфигурации «sudo».

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. Не забудьте оставить нам свой ценный отзыв в разделе комментариев.