Пользователи и sudo в Linux
Учётные записи, группы и повышение привилегий без постоянного root.
Кто я: whoami, id, groups
whoami # alice
id # uid=1001(alice) gid=1001(alice) groups=...,1002(dev)
groups # alice dev uid — числовой идентификатор пользователя, gid — его первичная группа; root — это uid 0, для него проверки прав не выполняются. id alice покажет то же про другого.
sudo: одна команда от root
sudo systemctl restart nginx # спросит ТВОЙ пароль
sudo -i # целая root-сессия (реже) sudo выполняет команду от root по твоему паролю и пишет каждое использование в журнал — поэтому он безопаснее постоянной работы под root, где любая опечатка в rm необратима.
Создать пользователя: useradd -m
sudo useradd -m -s /bin/bash alice # с домом и bash
sudo passwd alice # задать пароль
grep "^alice" /etc/passwd # проверить запись Без -m домашний каталог не создастся, без -s шеллом будет /bin/sh. Учётки лежат строками в /etc/passwd, хэши паролей — в закрытом /etc/shadow.
Группы: usermod -aG (только с -a!)
sudo groupadd dev
sudo usermod -aG dev alice # ДОБАВИТЬ в группу
# usermod -G dev alice — ЗАМЕНИТ весь список групп!
id alice # проверить членство Флаг -a означает append: без него -G заменяет список дополнительных групп целиком, и пользователь молча вылетает из sudo и docker. Новые группы процесс получает только после перелогина.
su: сессия под другим пользователем
su - alice # войти как alice (пароль alice)
whoami # alice
exit # вернуться в свою сессию Дефис у su - важен: он даёт полноценное окружение пользователя, а не только имя. Для админ-задач предпочитай sudo — он точечный и оставляет след в журнале.