groups useradd useradd usermod groupadd groupmod userdel groupdel passwd

Файл с информацией о учетных записях

Информация об имеющихся учетных записях хранится в файле /etc/passwd.

# /etc/passwd
1  root:х:0:0:root:/root:/bin/bash
2  daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3  bin:х:2:2:bin:/bin:/usr/sbin/nologin 
4  sys:x:3:3:sys:/dev:/usr/sbin/nologin 
5  sync:x:4:65534:sync:/bin:/bin/sync
6  ..
7  ivan:x:1000:1000:ivan,,,:/home/ivan:/bin/bash 
8  proftpd:x:123:65534::/run/proftpd:/bin/false 
9  ftp:x:124:65534::/srv/ftp:/bin/false
  • Учетные записи есть не только у обычных пользователей, но также у служб они называются служебные учетные записи.

формат файла /etc/passwd:

имя_пользователя:пароль:UID:GID:полное_имя:домашний_ каталог:оболочка
  • Имя пользователя - это логин пользователя, который он вводит для регистрации в системе.

  • Пароль в современных системах в этом файле не указывается, а второе поле осталось просто для совместимости со старыми системами. Сейчас пароли хранятся в файле /etc/shadow.

  • UID (User ID) и GID (Group ID) — идентификаторы пользователя и группы соответственно. Идентификатор пользователя root всегда равен 0, как и идентификатор группы root. Список групп вы найдете в файле /etc/groups. Обратите внимание, что UID обычных пользователей по умолчанию всегда > 1000, a UID специальных пользователей (служебных пользователей) - до 1000.

  • Полное имя - имя пользователя в реальной жизни, может не заполняться, а может содержать реальные данные, по которым администратор сможет понять, кто есть кто. Все зависит от использования компьютера. Если это домашний компьютер с двумя-тремя учетными записями, то и так понятно, кто есть кто. А вот если учетных записей, скажем, 500, то запомнить все довольно сложно.

  • Домашний каталог - имя домашнего каталога - каталога, который содержит файлы пользователя. Обычно домашний каталог называется /home/<логин>

  • Оболочка - оболочка, которая будет запущена при входе пользователя в консоль или при запуске терминала. У служебных аккаунтов, как правило, используются программы вроде nologin, false, true - это программы-заглушки, которые завершают работу сразу после запуска. Использование этих программы отключает вход учетной записи в систему.

Файл паролей

Пароли хранятся в файле /etc/shadow

root:"зашифрованный пароль":19901:0:99999:7:::
daemon:*:19901:0:99999:7:::
bin:*:19901:0:99999:7:::
sys:*:19901:0:99999:7:::
...
user:"зашифрованный пароль":19901:0:99999:7:::
sshd:!:19901::::::

В файле /etc/shadow полей больше, чем в /etc/passwd. Как и в случае с / etc/passwd, поля разделяются двоеточиями:

  1. Имя пользователя. Совпадает с именем пользователя в файле /etc/ passwd
  2. Зашифрованный пароль. Позже мы поговорим о том, как распознать алгоритм шифрования, которым был зашифрован пароль.
  3. Количество дней (с 1 января 1970 года), когда пароль был сменен в последний раз.
  4. Число дней до смены пароля. Если в этом поле 0, то пароль может быть сменен в любой момент.
  5. Количество дней, после которых пароль должен быть сменен. Обычно здесь значение 999999, которое показывает, что пользователь может никогда не менять свой пароль.
  6. Число дней, в течение которых пользователь получает предупреждение о необходимости изменить пароль. Обычно такие предупреждения пользователь получает за неделю (7 дней) до часа «X».
  7. Число дней после окончания действия пароля, когда еще пользователь может работать со старым паролем. Если после этого срока пользователь не сменит пароль, учетная запись будет заблокирована.
  8. Число дней, начиная с 1 января 1970, после которых пароль будет заблокирован
  9. Не используется.

Обычно последние три поля не используются. Поле с зашифрованным паролем позволяет понять, какой алгоритм система использовала для его шифрования. Посмотрите на начало зашифрованного пароля:

    • MD5. Ранее часто использовался, сейчас чаще используется SHA-512, поскольку в MD5 обнаружились математические уязвимости.
    • Blowfish. Чаще используется в FreeBSD/OpenBSD, чем в Linux;
    • SHA-256;
    • SHA-512. Используется в современных дистрибутивах.

Группы

В некоторых случаях пользователей объединяют в группы для более эффективного управления ними. Представим, что у нас есть три пользователя: ivan, mark, eva, которые должны совместно работать над проектом. Чтобы пользователи получили доступ к домашним каталогам друг друга их достаточно объединить в одну группу. По умолчанию пользователь не имеет доступ к домашнему каталогу другого пользователя, поскольку пользователи находятся в разных группах. Также можно предоставить доступ к какому-то объекту всей группе сразу, тогда каждый ее член сможет обратиться к объекту и не нужно будет указывать права отдельно для каждого пользователя.

Группы находятся в файле /etc/group

# /etc/group
 
root:х:0: 
daemon:х:1: 
bin:х:2: 
sys:х:3:
adm:х:4:syslog,ivan 
tty:x:5: 
disk:x:6: 
lp:x:7: 
mail:x:8: 
news:x:9: 
uucp:x:10: 
man:x:12: 
proxy:x:13: 
kmem:x:15: 
dialout:x:20: 
fax:x:21: 
voice:x:22: 
cdrom:x:24:ivan
...
colord:x:129:
saned:x:130:
ivan:x:1000:
sambashare:x:131:ivan

Формат этого файла следующий:

имя группы:пароль:GID:список пользователей
  • Имя_группы - имя группы, вы увидите его в выводе команды Is -1.
  • Пароль - обычно пароль для группы не используется, поэтому это поле будет пустым.
  • GID - данный номер указывается в /etc/passwd для задания принадлежности пользователя к группе.
  • Список пользователей - содержит список членов группы. Имена пользователей разделяются запятыми

Команды для работы с пользователями

Общие команды

groups

cat /etc/passwd # Просмотр пользователей в системе cat /etc/group # Просмотр групп в системе

groups <user_name> # Посмотреть группы пользователя

useradd <parametrs> <name> - Создать пользователя

useradd

useradd test                        # Создать пользователя с именем test
useradd -b /test test               # Создать и задать нестандартное место домашнего каталога
useradd -g test test                # Создать и задать основную группу пользователя
useradd -G share,admin,http test    # Создать и задать дополнительные группы

passwd <parametrs> <user> - Задать/Изменить пароль пользователю

passwd

passwd test                            # Запуск процедуры указания пароля
passwd -d test                         # Удалить пароль пользователя. Читай заблокировать
passwd -e test                         # Сделать пароль устаревшим. 
                                       # Пользователя попросят сменить его при входе

usermod <parametrs> <user> - Изменить параметры пользователя

usermod

usermod -R admin test               # Удалить группу пользователя
usermod -G user,vpn                 # Изменить дополнительные группы (От слова полностью) 
                                    # Т.е если до этого пользователь имел какиет-то группы то они будут все удалены
usermod -g web                      # Изменить основную группу

groupadd <name>

groupadd

groupadd <name>                         # Создать группу
groupadd -g 111 <name>                  # Создать группу id 111
groupadd -g 111 -o <name>               # Создать группу с неуникальным id

groupmod <parametrs> <group> - Изменить параметры группы

groupmod

groupmod -n ftp-users test                  # Переименовать группу test в группу ftp-users
groupmod -g 226 -n ftp-users test           # Так же указать новый id группы
groupmod -o -g 645 -n ftp-users test        # Так же присвоить не уникальный id

userdel <user> - Удалить пользователя

userdel

userdel test                                    # Удалить пользователя
userdel -r test                                 # Удалить домашний каталог пользователя
userdel -n 11 test                              # Через 11 месяцев можно занимать  id пользователя
userdel -n -1 test                              # Никогда не занимать id пользователя

groupdel <group> - Удалить группу

groupdel

groupdel test                                   # Удалить группу
Установка пароля пользователя

passwd

  1. Мы создали пользователя test1, но не указали ему пароль
  2. Проверим так ли это: cat /etc/shadow
user:$y$j9T$RMx5QE0tun5Zj5iH7YJgJ.$G.O2tI62VS9DsZmmJeREH92L1dz8WjI1te7rgLPjbm8:19671:0:99999:7:::
 
test1:!:19777:0:99999:7:::
  1. Длинная запись у user как раз и представляет собой шифр хеша пароля и у test1 его действительно нет
    1. Установим его командой: passwd test1
    2. Проверить что он установился можно командой: cat /etc/shadow