Содержание

Файл с пользователями /etc/passwd

Формат файла

НазваниеОписание
rootимя пользователя
xатавизм, ранее был хеш пароля
0ID пользователя
0ID группа пользователя
rootКомментарий
/rootДомашний каталог пользователя, у пользователей в /home/
/bin/bashКомандная оболочка, /usr/sbin/nologin. /bin/false пустышки. Но запускать bash от таких пользователей можно.

Аутентификация проверка учётных данных, а авторизация проверка прав

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
[..]
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:998:998:systemd Network Management:/:/usr/sbin/nologin
systemd-timesync:x:997:997:systemd Time Synchronization:/:/usr/sbin/nologin
sshd:x:101:65534::/run/sshd:/usr/sbin/nologin
pnagaev:x:1000:1000::/home/pnagaev:/bin/bash
test01:x:1001:1001::/home/test01:/bin/sh
test02:x:1002:1002::/home/test02:/bin/bash
polkitd:x:996:996:polkit:/nonexistent:/usr/sbin/nologin

Управление пользователями

Команда Описание
cat /etc/passwd Просмотр всех зарегистрированных пользователей
cut -d: -f1 /etc/passwd | sort Отобразить только имена пользователей в отсортированном виде
useradd -m -g myuser -G wheel,audio -s /bin/bash myuser

-m — создать домашнюю папку
-g — основная группа myuser
-G — дополнительные группы: wheel, audio
-s — оболочка: /bin/bash |

adduser Интерактивное создание пользователя с помощью useradd и дополнительных настроек (включая chfn, passwd)
chfn Изменение информации о пользователе (ФИО, телефон и др.)
passwd [myuser] Изменение пароля пользователя
sudo usermod -L myuser Заблокировать пользователя — перед паролем в `/etc/shadow` появится `!`, вход станет невозможен
sudo usermod -s /sbin/nologin имя_пользователя Отключить доступ к оболочке, даже при верном пароле
sudo passwd -l myuser Заблокировать учётную запись полностью
sudo passwd -S myuser Проверить статус пароля: если вывод содержит L, пользователь заблокирован
usermod -a -G mygroup myuser Добавить пользователя myuser в дополнительную группу mygroup
usermod -g mygroup myuser Установить mygroup в качестве основной группы
userdel -r myuser Удалить пользователя myuser, флаг -r также удаляет домашний каталог и почту

Временная блокировка пользователя

Команда Описание
sudo chage -E YYYY-MM-DD имя_пользователя Установить дату истечения учётной записи (после этой даты пользователь не сможет войти)
sudo chage -E 0 имя_пользователя Немедленно отключить учётную запись
sudo chage -l имя_пользователя Просмотреть текущие параметры срока действия учётной записи
sudo touch /etc/nologin Временно запретить вход всем пользователям, кроме root (например, при обслуживании системы)

Управление Shell

Различия между Shell

КомандаОписание
cat /etc/passwdСписок пользователей и Shell
sudo vim /etc/default/useraddShell по умолчанию находится в файле
cat /etc/shellsСписок Shell которые возможно установить на компе
chshКоманда по смене Shell для пользователя
usermod -s /bin/sh userКоманда по смене Shell для пользователя

Пароли

Файл с хешами паролей

  /etc/shadow
root:$y$j96$UKwucaml7j.r1AdYEQ2Mx/$VGL.85ga1uf.9/9158OSVcCV5zy20396mG.08GJc/G7:19K82:0:99999:7:::
daemon:*:19534:0:99999:7:::
bin:*:19534:0:99999:7:::
[...]
man:*:19534:0:99999:7:::
mail:*:19534:0:99999:7:::
news:*:19534:0:99999:7:::
uucp:*:19534:0:99999:7:::
proxy:*:19534:0:99999:7:::
www-data:*:19534:0:99999:7:::
backup:*:19534:0:99999:7:::
list:*:19534:0:99999:7:::
nobody:*:19534:0:99999:7:::
systemd-timesync:!*:19534::::::
sshd:!:19534::::::
myuser:$6$j9T$kv6vTkNzbN4qer5VZ403C0$UgbEtyhK31OE87ANjlQj.lGS/FjQw5x0KYuUP3j3d42:19882:0:99999:7:::
test01:!:19675:0:99999:7:::
test02:!:19675:0:99999:7:::
polkitd:!*:19895::::::

Установка Debian/Ubuntu

systems apt-get install -y whois

Установка CentOS

sudo yum install expect
sudo yum install grub-crypt

Генерация пароля

mkpasswd  -l 16 -d 3 -C 3 -c 3 -s 3 -v
ПараметрОписание
lдлина
dколичество цифр
Cколичество больших букв
cколичество маленьких букв
sколичество специальных символов

Дата изменения пароля

$ sudo chage -l myuser
$ sudo passwd myuser -S
КомандаОписание
-S, --status Отображает статус учётной записи. Статус состоит из 7 полей.
Первое поле Имя пользователя
Второе полеОтображает статус пароля, заблокирован(L), не установлен(NP), установлен нормальный пароль(P)
Третье полеДата последнего изменения пароля
Следующие четыре поляМинимальный возраст, максимальный возраст, время истечения срока, период неактивности. Все поля отображаются в днях.

.Bashrc

Конфигурационные файлы .profile и .bashrc для новых пользователей копируются из файла /etc/skel

ПутьОписание
/bin/bashПуть запуска bash
/etc/profileОбщий инициализационный файл, запускаемый для всех пользователей при входе в систему
/etc/bash.bash_logoutОбщий файл, запускаемый при выходе из системы
~/.bash_profileПерсональный инициализационный файл, запускаемый при входе пользователя в шелл
~/.bashrcИндивидуальный пользовательский файл, запускаемый при входе пользователя
~/.bash_logoutИндивидуальный фал, запускаемый при выходе
~/.inputrcИндивидуальный файл настроек для readline

Группы

Команда Описание
cat /etc/group Просмотр всех групп в системе
getent group Просмотр всех групп с использованием базы данных NSS
groups myuser Проверка членства пользователя myuser в группах
getent group mygroup Просмотр участников группы mygroup
groups Просмотр групп, в которые входит текущий пользователь
id Вывод UID, GID и членства в группах текущего пользователя
groupadd mygroup Создание новой группы mygroup
groupmod -n new-name current-name Переименование группы
usermod -a -G mygroup myuser Добавить пользователя myuser в группу mygroup
gpasswd -a myuser mygroup Альтернативный способ добавления пользователя в группу
gpasswd -d myuser mygroup Удалить пользователя из группы
groupdel mygroup Удалить группу mygroup

Пользователь nobody и группа nogroup

Псевдопользователь nobody — это специальный системный пользователь, у которого нет прав собственности ни на один файл и который не входит в привилегированные группы. Он также, как правило, не имеет домашнего каталога и не может войти в систему. Его основное назначение — выполнение процессов с минимальными правами.

Эквивалентная группа nogroup часто используется в связке с nobody, особенно в контексте сетевых служб, таких как NFSv4, при использовании `idmapd`. Если входящий запрос не может быть сопоставлен с существующим пользователем или группой, ему присваиваются nobody:nogroup.

Ранее было распространено запускать демоны от имени nobody, чтобы ограничить потенциальный ущерб в случае взлома. Однако такая практика опасна, если от имени nobody запускается более одного процесса: злоумышленник, получивший доступ к одному из них, сможет управлять и другими.

🔒 Современная практика согласно Linux Standard Base — создавать отдельную учётную запись пользователя для каждого системного демона.

su

su (от substitute user) — используется для перехода в контекст другого пользователя (по умолчанию — root).

Команда Описание
su Переключение на другого пользователя (по умолчанию root), без подгрузки среды
su - Переключение с подгрузкой переменных окружения и оболочки пользователя (аналог входа через login)
su - имя_пользователя Войти от имени указанного пользователя с его окружением
su имя_пользователя Войти от имени указанного пользователя, но сохранить текущее окружение

Отличие su и sudo

su

sudo

Примеры:

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

sudo

sudo - переключиться на пользователя и "do" выполнить. Нужен пароль, но не пользователя, а свой. sudo выполняет одну команду sudo логирует действия

sudo -u test 01 id выполнить команду id от имени другого пользователя
less /etc/sudoers посмотреть файл конфигурации.

%sudo - это имя группы ALL, !/bin/sh - запретить команды