Урок 5. Пользователи, группы и sudo
Linux с самого начала рассчитан на нескольких пользователей. У каждого — своё имя, свой номер (UID), домашняя папка и пароль. Каждый файл кому-то принадлежит, и права на него задаются для владельца, группы и всех остальных (урок Файлы и папки в терминале).
Пользователи бывают не только у людей. Службы работают под своими системными пользователями: веб-сервер — под www-data. Если его взломают, взломщик получит права www-data, а не всего компьютера.
root и sudo
root — главный администратор, его номер — 0. Ему можно всё: менять любые файлы, ставить программы, удалить систему целиком. В Ubuntu у root нет пароля, и войти под ним с паролем нельзя. Вместо этого обычный пользователь выполняет отдельные команды с правами root через sudo:
sudo apt updatesudo спрашивает пароль вашего пользователя и запоминает его на 15 минут в этом окне терминала. Каждая команда через sudo записывается в журнал системы — видно, кто и что делал.
sudo -i— открыть оболочку root (приглашение кончается на#); выход —exit;sudo -u petr команда— выполнить команду от имени другого пользователя;sudo !!— повторить предыдущую команду, но уже сsudo.
Пользоваться sudo может участник группы sudo. Пользователь, созданный при установке Ubuntu, в неё уже входит.
Текущий пользователь
whoami
id
groupswhoami— имя текущего пользователя;id— номер пользователя (uid), его основная группа (gid) и все группы;groups— только список групп. У первого пользователя в нём естьsudoиadm(группаadmразрешает читать системные журналы).
Где хранятся пользователи
/etc/passwd— список пользователей. Пароли, несмотря на имя файла, здесь не хранятся./etc/shadow— пароли в виде хешей (зашифрованных отпечатков); читать файл может только root./etc/group— группы и их участники.
Строка из /etc/passwd:
ivan:x:1000:1000:Иван Петров,,,:/home/ivan:/bin/bashЧерез двоеточие: имя, x (пароль — в /etc/shadow), номер пользователя, номер основной группы, полное имя, домашняя папка и оболочка. Людям Ubuntu выдаёт номера с 1000, системные пользователи обычно получают номера меньше.
Добавить пользователя
sudo adduser petradduser создаёт пользователя, его личную группу petr и домашнюю папку /home/petr, затем спрашивает пароль (дважды) и сведения о человеке — их можно пропустить клавишей Enter. В конце — подтверждение.
Есть и команда useradd, но она низкоуровневая: без дополнительных ключей не создаёт домашнюю папку и не задаёт пароль. Для людей в Ubuntu удобнее adduser.
Пароль другого пользователя меняет sudo passwd petr, свой — passwd. Подробно — в справке Как сменить пароль пользователя или root.
Группы
Группа — способ дать права сразу нескольким пользователям. Добавить пользователя в группу:
sudo usermod -aG sudo petr
groups petr-G — дополнительные группы, -a (append) — добавить к тем, что уже есть. Изменения вступают в силу при следующем входе: пользователю нужно выйти из системы и войти снова или заново подключиться по SSH.
Без -a команда usermod -G заменяет все дополнительные группы пользователя указанными. Выполнив её так для себя, можно выпасть из группы sudo и остаться без прав администратора.
Другие команды для групп:
sudo adduser petr sudo— то же, чтоusermod -aG, а запомнить проще;sudo deluser petr sudo— убрать пользователя из группы;sudo addgroup developers— создать новую группу.
Группы, которые встречаются чаще всего:
| Группа | Что даёт |
|---|---|
sudo | права администратора через sudo |
adm | чтение системных журналов |
www-data | общий доступ к файлам веб-сервера |
dialout | работу с последовательными портами — например, с платами Arduino |
docker | управление Docker без sudo |
Группа docker по силе равна root: её участник может запустить контейнер с доступом ко всей системе. Добавляйте в неё только тех, кому дали бы и sudo.
Настройки sudo
Правила sudo записаны в файле /etc/sudoers. Строка %sudo ALL=(ALL:ALL) ALL в нём и разрешает группе sudo любые команды. Свои правила кладут отдельными файлами в папку /etc/sudoers.d/. Править эти файлы нужно только через visudo:
sudo visudo
sudo visudo -f /etc/sudoers.d/petrvisudo проверяет файл перед сохранением и не даст записать ошибку.
Ошибка в /etc/sudoers, записанная в обход visudo (например, обычным nano), ломает sudo у всех пользователей сразу — исправить её тогда можно из режима восстановления (как в него попасть — в справке Как сменить пароль), а на компьютере с рабочим столом — ещё командой pkexec visudo.
su — стать другим пользователем
su - petrsu открывает оболочку другого пользователя и спрашивает его пароль. Просто su пытается войти под root — а у root в Ubuntu пароля нет, поэтому вы увидите Authentication failure. Нужна оболочка root — пишите sudo -i.
Удалить пользователя
sudo deluser petr
sudo deluser --remove-home petrПервая команда удаляет пользователя, но оставляет его папку /home/petr. Вторая удаляет и папку.
--remove-home стирает все файлы пользователя без возврата — сначала скопируйте нужное. Прежде чем удалять пользователя или лишать его прав администратора, убедитесь, что в системе остаётся хотя бы один участник группы sudo.
Коротко
- root может всё; в Ubuntu у него нет пароля, а администрирование идёт через
sudo. sudoспрашивает ваш пароль; право на него даёт группаsudo.- Добавить пользователя —
sudo adduser имя, удалить —sudo deluser имя. - В группу —
sudo usermod -aG группа имя, обязательно с-a; действует после нового входа. - Правила
sudoправят только черезvisudo.