sudo su

Для выполнения некоторых операций, например, для изменения конфигурационных файлов, управления пакетами, нужны права root. Чтобы их получить, необязательно входить, как root. Тем более, что в некоторых дистрибутивах вход, как root запрещен.

su

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

После ввода команды su (и правильного ввода пароля) открывается полноценная root-сессия на неограниченное время. Поэтому не забудьте или ввести команду exit или закрыть окно терминала, когда права root станут вам не нужны.

sudo <команда>

sudo sudo_bash После ввода этой команды система запросит пароль пользователя, который вводит эту команду. Но это не означает, что права root будут предоставлены любому пользователю в системе. Разрешение использовать эту команду имеют только пользователи, указанные в файле /etc/sudoers visudo

Использовать команду sudo предпочтительнее по следующим причинам:

  • Команду sudo нужно вводить при вводе каждой команды, которая требует права root. Вы уже точно не забудете, что работаете с root правами.
  • При вводе первой команды sudo запрашивается пароль. При вводе второй, если прошло немного времени, пароль не запрашивается, но если пройдет чуть больше времени (зависит от настроек системы), то sudo опять будет запрашивать пароль. Сессию с su легко оставить открытой - ввел команду su, поработал, как root, забыл ввести exit и отошел на обеденный перерыв. С sudo такое не пройдет.
  • Каждая команда, введенная с помощью sudo, записывается в журнал / var/log/auth.log, поэтому в случае чего вы хотя бы будете знать, что случилось, прочитав этот журнал А также у вас будет храниться история введенных команд с полномочиями root, а если вы будете работать под именем root, никакой журнал вестись не будет.
  • Администратор может разрешать и запрещать другим пользователям использовать полномочия root, не предоставляя пароль root, то есть практически нет риска скомпрометировать учетную запись root.
  • Если кто-то захочет взломать вашу систему, то у него ничего не выйдет поскольку учетная запись root отключена, а названия других учетных записей еще раздобыть нужно.

Да, sudo неудобно использовать при вводе множества команд. Но есть одно ухищрение. Можно ввести команду sudo bash, запустится командная оболочка с правами root и все запущенные в ней программы, будут обладать правами root. По сути, такая сессия будет аналогична той, которая вызывается командой su, поэтому нужно быть предельно осторожными.

Однако команда sudo bash будет полезна, когда у вас есть необходимость вводить сложные команды после sudo. Так, sudo не очень дружит с перенаправлением ввода вывода. Поэтому проще ввести sudo bash и просто работать, не задумываясь об использовании sudo.

Как настроить доступы SSH

добавление в группу sudo

usermod -aG sudo user
 
# просто в группу добавили

/etc/sudoers

файл который говорит кому и как можно sudo использовать ( не меняется ) Если хочешь что-то своё сделать например чтобы вася мог через sudo /vi/1 и всё:

vi --> /etc/sudoers.d/linux  #  ( можно и не линукс любое название)
===========================
 
%linuxadmins ALL=(ALL:ALL) NOPASSWD: ALL
 
%operators ALL=(ALL:ALL) NOPASSWD: /usr/bin/systemctl status nginx, /usr/bin/systemctl restart nginx
===========================

Строка 1: %linuxadmins ALL=(ALL:ALL) NOPASSWD: ALL

Это правило дает полный, безлимитный доступ ко всем командам.

  • %linuxadmins — Знак процента % означает, что правило применяется к группе пользователей в Linux.
  • ALL= — На каких хостах (компьютерах) действует правило. ALL означает на любых.
  • (ALL:ALL) — От имени какого пользователя и какой группы можно запускать команды. Означает, что члены linuxadmins могут притворяться абсолютно любым пользователем (включая root) и любой системной группой.
  • NOPASSWD: — Самая приятная часть для администратора. Система не будет спрашивать пароль пользователя при вводе команды sudo.
  • ALL (последний ALL) — Какие команды разрешено выполнять. ALL означает вообще любые команды, без ограничений (могут хоть всю систему удалить).

Строка 2: `%operators ALL=(ALL:ALL) NOPASSWD: /usr/bin/systemctl…

  • /usr/bin/systemctl status nginx, /usr/bin/systemctl restart nginx — А вот это список единственных разрешенных команд. Оператор может написать:
    • sudo systemctl status nginx (проверить работает ли веб-сервер)
    • sudo systemctl restart nginx (перезагрузить его, если завис)

Простыми словами: «Пользователи из группы operators не имеют прав root, но им разрешено без пароля выполнять ровно две вещи: проверять статус nginx и перезапускать его. Если они попробуют сделать sudo cat /etc/shadow или sudo su, система пошлет их лесом».