Пользователи в Linux
Список всех пользователей Linux
Список пользователей лежит в файле
passwd
в
/etc/
Чтобы его открыть выполните
cat /etc/passwd
Создать пользователя
Чтобы создать пользователя user1 нужно ввести команду
adduser user1
Если Вы получили сообщение bash: adduser: command not found прочитайте решение здесь
Удалить пользователя
Если пользователь вам надоест его можно удалить командой
deluser user1
Сменить пароль пользователя
Если вы забудете пароль пользователя, то из-под root его можно будет поменять командой
passwd user1
Список групп
Все существующие пользовательские группы в системе
groups
andrei adm cdrom sudo dip plugdev lpadmin lxd sambashare
Узнать список всех групп
cat /etc/group
root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:syslog,andrei tty:x:5: disk:x:6: lp:x:7: mail:x:8: … gdm:x:133: lxd:x:134:andrei andrei:x:1000: sambashare:x:135:andrei docker:x:136:
Чтобы получить не весь список, а только обычные пользовательские группы
cat /etc/group | grep 1[0-9][0-9][0-9]
andrei:x:1000:
Про grep можно прочитать здесь
Список групп пользователя
Узнать в каких группах состоит пользователь user1
groups user1
Создать группу
Чтобы создать группу в Linux используется команда groupadd
sudo groupadd demo
Создать группу с определённым group ID (GID)
sudo groupadd -g 1009 demo1
Изменить GID
sudo groupmod -g 1011 demo1
Переименовать группу
sudo groupmod -n test demo1
Добавить пользователя в группу
Добавить пользователя user1 в группу group1
usermod -G group1 user1
Добавить пользователя sinij и в группу group1 и в группу bks_fans
usermod -G group1,bks_fans sinij
Изменить основную группу пользователя user1 на group2 (по умолчанию обычно группа называется так же как пользователь)
usermod -g group2 user1
Поменять группу к которой принадлежит директория /home/movies на users
chgrp -R users /home/movies
useradd
Синтаксис обычный
useradd [options] username
Команда useradd вносит изменения в следующие файлы из директории /etc passwd shadow group gshadow
Сохраним содержимое этим файлов перед добавлением нового пользователя
cat /etc/passwd > passwd0.txt cat /etc/shadow > shadow0.txt cat /etc/group > group0.txt cat /etc/gshadow > gshadow0.txt
Добавим пользователя user0
useradd user0
Сохранима содержимое обновлённых файлов
cat /etc/passwd > passwd1.txt cat /etc/shadow > shadow1.txt cat /etc/group > group1.txt cat /etc/gshadow > gshadow1.txt
Изучим внесённые изменения с помощью команды diff
diff passwd0.txt passwd1.txt
26a27 > user0:x:1001:1001::/home/user0:/bin/sh
diff shadow0.txt shadow1.txt
26a27 > user0:!:19559:0:99999:7:::
! говорит о том, что у пользователя не задан пароль.
diff group0.txt group1.txt
47a48 > user0:x:1001:
diff gshadow0.txt gshadow1.txt
47a48 > user0:!::
Установим пароль для пользователя user0
passwd user0
New password: Retype new password: passwd: password updated successfully
cat /etc/shadow > shadow2.txt diff shadow1.txt shadow2.txt
27c27 < user0:!:19559:0:99999:7::: --- > user0:$y$j9T$9wfFq/VdOykqfnPnHOeYC/$G6b7JmDA7TGpvHbEYaEayIvgRHhDQTCaAdHD.wdu2m1:19559:0:99999:7:::
! сменился на хэш пароля. Других изменений в этих файлах нет.
Разберём подробнее запись в /etc/passwd
user0:x:1001:1001::/home/user0:/bin/sh
- Username: имя пользователя, которое используется для входа в систему. Разрешённая длина - от 1 до 32 символов.
- Password: пароль пользователя (или символ x), который хранится в /etc/shadow в зашифрованном виде.
-
User ID (UID): у каждого пользователя должен быть
уникальный идентификационный номер.
UID 0 зарезервирован за root
UID между 1 и 99 зарезервированы для других предустановленных аккаунтов.
UID между 100 и 999 зарезервированы для системных аккаунтов и групп. - Group ID (GID): уникальный идентификационный номер группы. Хранятся в файле /etc/group
- Опциональное поле User Info: дополнительная информация о пользователе. В данном примере оно пустое.
- Home Directory: абсолютный путь до домашней директории пользователя
- Shell: абсолютный путь до оболочки пользователя
-d: нестандартная домашняя директория
С помощью опции -d можно явно указать домашнюю директорию
useradd -d /var/qa tester
cat /etc/passwd | grep tester
tester:x:1002:1002::/var/qa:/bin/sh
-u: нестандартный UID
С помощью опции -u можно явно задать UID
useradd -u 1111 cormac
cat /etc/passwd | grep cormac
cormac:x:1111:1111::/home/cormac:/bin/sh
Хочу обратить внимание, на то, что установка UID вручную также двигает счётчик для автоматического создания пользователей.
Следующий пользователь будет создан с UID 1112.
-g: нестандартный GID
С помощью опции -u можно явно задать GID
Нужно выбирать уже существующую группу, иначе будет ошибка.
useradd -g 1002 mccarthy
cat /etc/passwd | grep mccarthy
mccarthy:x:1112:1002::/home/mccarthy:/bin/sh
Если бы пользователь был создан без опции -b, то и UID и GID были бы 1112
Проверить, что mccarthy принадлежит группе 1002 (tester) можно выполнив команду id
id -gn mccarthy
tester
-s: нестандартный shell
С помощью опции -u можно явно задать shell
useradd -s /bin/bash kevin
cat /etc/passwd | grep kevin
kevin:x:1114:1114::/home/kevin:/bin/bash
Если бы пользователь был создан без опции -b, то и UID и GID были бы 1112
-d, --home HOME_DIR The new user will be created using HOME_DIR as the value for the user's login directory. The default is to append the LOGIN name to BASE_DIR and use that as the login directory name. The directory HOME_DIR does not have to exist but will not be created if it is missing. -m, --create-home Create the user's home directory if it does not exist. The files and directories contained in the skeleton directory (which can be defined with the -k option) will be copied to the home directory. useradd will create the home directory unless CREATE_HOME in /etc/login.defs is set to no. -r, --system Create a system account. System users will be created with no aging information in /etc/shadow, and their numeric identifiers are choosen in the SYS_UID_MIN-SYS_UID_MAX range, defined in /etc/login.defs, instead of UID_MIN-UID_MAX (and their GID counterparts for the creation of groups). Note that useradd will not create a home directory for such an user, regardless of the default setting in /etc/login.defs (CREATE_HOME). You have to specify the -m options if you want a home directory for a system account to be created.