Логотип

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

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

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

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

 

Понимание su и sudo?

Следующее объяснение основано на дистрибутивах на базе Ubuntu, но применимо к наиболее популярным дистрибутивам Linux.

  • su (substitute user) — эта команда позволяет переключиться на другую учётную запись, обычно на учётную запись root. Для её использования вам понадобится пароль root, то есть вам придётся поделиться этим паролем с другими пользователями, которым также нужен доступ, что считается рискованным.
  • sudo (superuser do) — эта команда позволяет пользователю выполнять определённые системные команды с правами администратора, не раскрывая пароль root. Вместо этого пользователи вводят свой собственный пароль, что обеспечивает более безопасное делегирование полномочий.

 

Пример:

# Использование su для переключения на пользователя root
su -
Password: [root password here]

# Использование sudo для обновления пакетов
sudo apt update
[sudo] password for user: [your password here]

 

Как видите, sudo обеспечивает более безопасный и гибкий способ выполнения административных задач по сравнению с su.

 

Что такое sudo?

sudo это специальная программа (бинарный файл setuid), которая позволяет авторизованным пользователям запускать команды от имени пользователя root или другого пользователя. Она обеспечивает безопасный способ выполнения административных задач без необходимости сообщать пароль root.

Читать  Как определить, когда файл был создан в Linux

При использовании sudo необходимо ввести свой пароль, а не пароль root, что гарантирует привязку каждой выполняемой вами команды к вашей учётной записи.

В следующем примере веб-сервер Apache перезапускается с правами root. Обратите внимание, что пользователю не нужно вводить пароль root, вместо этого используется его собственный пароль.

sudo systemctl restart apache2

 

Кто может использовать sudo?

Список пользователей, которые могут запускать sudo, хранится в файле /etc/sudoers, который можно редактировать с помощью команды visudo, чтобы избежать синтаксических ошибок, которые могут привести к сбою системы:

sudo visudo

 

Запись по умолчанию выглядит так. Это означает, что пользователь root может запускать любые команды на любом хосте от имени любого пользователя.

root ALL=(ALL:ALL) ALL

 

Предоставление доступа sudo другим пользователям

Предоставление неограниченного sudo доступа нескольким пользователям может быть рискованным. Если каждый пользователь может выполнять любые команды от имени пользователя root, то простая ошибка или взлом аккаунта могут привести к сбою системы или раскрытию конфиденциальных данных.

 

Опасный пример (не делайте этого):

masterex ALL=(ALL:ALL) ALL
alex  ALL=(ALL:ALL) ALL

 

Здесь adam и alex могут выполнять любую команду от имени пользователя root на любом компьютере, что фактически даёт им полные административные права, как у пользователя root.

Вместо этого предоставьте каждому пользователю только те права, которые ему необходимы, как описано ниже.

Читать  Введение в команду Uptime в Linux

 

Понимание синтаксиса sudo

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

Синтаксис настроенной строки sudo выглядит следующим образом:

User_name Machine_name=(Effective_user) command

 

Этот синтаксис можно разделить на четыре части:

  • User_name  → Имя пользователя sudo.
  • Machine_name → имя хоста, где допустима команда sudo, что удобно, если у вас несколько хостов.
  • effective_user → Пользователь, от имени которого будет выполняться команда (например, root или другая учётная запись).
  • command → Команда или команды, которые разрешено выполнять этому пользователю.

 

Такая структура позволяет администраторам точно контролировать действия каждого пользователя, не предоставляя ему полный root-доступ.

 

Примеры конфигураций sudo

Вот несколько распространённых ситуаций и способы настройки sudo для каждой из них:

1. Предоставление полного доступа к базе данных конкретному пользователю

У вас есть пользователь mark, который является администратором базы данных, и вы хотите предоставить ему полный доступ к серверу базы данных beta.database_server.com, но без доступа к другим хостам. Ваша строка sudo должна выглядеть так:

mark beta.database_server.com=(ALL) ALL

 

2. Выполнение команд от имени конкретного пользователя без прав root

У вас есть пользователь alex, который должен выполнять системные команды от имени другого пользователя (не root) на том же сервере баз данных?

alex beta.database_server.com=(alex) ALL

 

Читать  Команда Hwclock в Linux

3. Ограничение доступа пользователя одной командой

У вас есть пользователь sudo cat , который должен выполнять только команду dog.

cat beta.database_server.com=(cat) dog

 

4. Предоставление пользователю возможности выполнять несколько команд

Пользователю нужно выполнить несколько команд, но список короткий (менее 10 команд).

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

 

Для более длинных списков команд лучше использовать псевдонимы.

User_Alias ADMINS=alex,jerry,masterex
User_Alias WEBMASTERS=henry,mark
WEBMASTERS WEBSERVERS=(www) APACHE
Cmnd_Alias PROC=/bin/kill,/bin/killall,/usr/bin/top

 

Вы также можете назначить команды для всей группы, добавив к названию группы префикс %:

%apacheadmin WEBSERVERS=(www) APACHE

 

5. Использование sudo без пароля

Пользователю необходимо выполнять определённые команды без ввода пароля.

masterex ALL=(ALL) NOPASSWD: PROCS

 

Здесь пользователь masterex может выполнять все команды, объединённые в группу PROCS без ввода пароля.

 

Краткие сведения

sudo обеспечивает надёжную и безопасную среду с гибкими настройками по сравнению с su. Кроме того, sudo легко настроить. В некоторых дистрибутивах Linux sudo включён по умолчанию, в то время как в большинстве современных дистрибутивов его нужно включать в целях безопасности.

Чтобы добавить пользователя (andreyex) в sudo, просто выполните следующую команду от имени пользователя root:

adduser andreyex sudo

 

На этом пока всё. Мы вернемся с ещё одной интересной статьёй. А пока следите за обновлениями. Не забудьте оставить свой ценный отзыв в комментариях.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Редактор: AndreyEx

Рейтинг: 0 (0 голосов)
Если статья понравилась, то поделитесь ей в социальных сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала