Глиф Учебники

Урок 3. Первые шаги: root, su и sudo

Курс «Debian» · урок 3 из 8 · 4 минуты чтения

В Linux есть один всемогущий пользователь — root. Ему разрешено всё: ставить программы, менять настройки, читать и удалять любые файлы. Обычный пользователь может менять только своё. Так система защищена от ошибок и от чужих программ, запущенных от вашего имени.

Как вы будете становиться root, решилось при установке. Если пароль root оставили пустым — через sudo, как в Ubuntu. Если задали — через su -. В этом уроке — оба способа и как перейти от второго к первому.

Какой у вас вариант

Откройте терминал и выполните:

Bash
groups

Команда показывает группы, в которых вы состоите. Найдите среди них слово sudo:

Слово sudo естьу вас уже sudo

Вам доступна команда sudo, и её пароль — ваш собственный. Раздел Поставьте sudo и дайте себе права можно пропустить: всё уже настроено.

Слова sudo нету вас su -

При установке задали пароль root, и администрирование идёт через su -. Ниже — как им пользоваться и как за минуту перейти на sudo.

su — стать root

Bash
su -

su спросит пароль root (не ваш). Приглашение сменится: вместо ivan@debian:~$ появится root@debian:~# — знак # в конце означает, что вы root. Все команды теперь выполняются с полными правами, без sudo. Вернуться к своему пользователю — командой exit или Ctrl+D.

Минус в том, что # легко не заметить и продолжать работать root дольше, чем нужно. Выполнили нужное — выходите.

su - ivan@debian:~$ su - Пароль: ← пароль root root@debian:~# apt update root@debian:~# usermod -aG sudo ivan root@debian:~# exit ivan@debian:~$ все команды — от имени root, пока не выйдете exit или Ctrl+D sudo ivan@debian:~$ sudo whoami [sudo] пароль для ivan: ← ваш пароль root ivan@debian:~$ от root — только эта одна команда
После su - и пароля root все команды выполняются от root до exit, а sudo спрашивает пароль пользователя и выполняет от root только одну команду.

Почему с минусом: su и su -

Команда su без минуса тоже делает вас root, но оставляет настройки окружения вашего пользователя — в том числе список папок, где искать программы (переменная PATH). Программы для администратора — usermod, adduser, visudo, sshd — лежат в /usr/sbin, а этой папки в списке обычного пользователя нет. Отсюда частая ошибка:

Терминал
$ su
Пароль:
# usermod -aG sudo ivan
bash: usermod: команда не найдена

С минусом (su -) запускается полноценный вход root со своим окружением, и всё находится. Запомните: в Debian пишут su -, а не su.

/usr/sbin/usermod $ su PATH — как у ivan /usr/local/bin /usr/bin /bin … /usr/sbin нет в PATH bash: usermod: команда не найдена $ su - PATH — как у root /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin … usermod нашлась и работает
После su в PATH остаются папки пользователя без /usr/sbin, и usermod не находится, а su - берёт PATH root, где /usr/sbin есть.

Поставьте sudo и дайте себе права

Работать через sudo удобнее: не нужно помнить второй пароль, а каждая команда записывается в журнал. Если пароль root задан при установке, sudo настраивается за минуту. Станьте root и выполните три команды, подставив своё имя пользователя вместо ivan:

Bash
su -
apt update
apt install sudo
usermod -aG sudo ivan
exit

apt install sudo ничего не сделает, если sudo уже стоит, — это не ошибка. usermod -aG sudo ivan добавляет пользователя в группу sudo; то же делает команда adduser ivan sudo.

Ключ -a обязателен. Без него usermod -G sudo ivan заменит все дополнительные группы пользователя одной группой sudo, и он потеряет остальные права — например, доступ к звуку, флешкам и сети на рабочем столе.

Права начинают действовать после нового входа: выйдите из системы и войдите снова (на рабочем столе — полностью выйдите из сеанса или перезагрузитесь, по SSH — переподключитесь). Проверка:

Bash
sudo whoami

sudo спросит ваш пароль, символы при наборе не показываются. Ответ root — всё работает.

от root usermod -aG sudo ivan пишет /etc/group sudo:x:27:ivan читается при входе Тот же сеанс группы — с момента входа ivan audio video … $ sudo whoami отказ: не в группе sudo После нового входа группы прочитаны заново ivan sudo audio … $ sudo whoami root
usermod записывает ivan в группу sudo в /etc/group, но открытый сеанс помнит прежние группы, и sudo работает только после нового входа.

Нужен ли теперь пароль root

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

Bash
sudo passwd -l root

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

Обратно пароль задаётся командой sudo passwd root.

Пользователи

Новый пользователь создаётся командой adduser — она в Debian спрашивает пароль и данные о человеке (полное имя и т. п.; необязательные поля можно пропустить клавишей Enter) и создаёт домашнюю папку:

Bash
sudo adduser petr

Есть и useradd, но это низкоуровневая команда: без ключей она не создаёт домашнюю папку и не задаёт пароль. Для работы вручную берите adduser.

Полезные команды:

ЗадачаКоманда
Сменить свой парольpasswd
Сменить пароль другомуsudo passwd petr
Группы пользователяgroups petr
Номер и группы подробноid petr
Дать права администратораsudo usermod -aG sudo petr
Убрать права администратораsudo deluser petr sudo
Удалить пользователя, оставив файлыsudo deluser petr
Удалить вместе с домашней папкойsudo deluser --remove-home petr

deluser --remove-home удаляет домашнюю папку со всеми файлами пользователя. Перед этим скопируйте то, что может понадобиться.

Частые ошибки

Коротко

Проверьте себя

1. Чей пароль спрашивает команда su -?
2. После su команда usermod выдаёт «команда не найдена». В чём дело?
3. Какая команда добавляет пользователя ivan в группу sudo, не трогая его другие группы?
4. Когда начинают действовать права, полученные через группу sudo?