Пользователи и группы в Linux

Описание

В linux может быть множество пользователей и множество групп. При создании пользователя создается группа с таким же названием, как и имя пользователя. Каждый пользователь всегда входит в одну основную группу и может быть участником дополнительных групп.

/etc/passwd

Информация о всех пользователях содержится в файле
/etc/passwd
двоеточие выступает в качестве разделителя строки на столбцы.
  1. Имя пользователя;
  2. Раньше хранились хеши паролей пользователей, сейчас пароли перенесены в файл /etc/shadow, а в столбце стоят просто знаки x;
  3. Id пользователя (uid);
  4. Id основной группы пользователя (gid), для групп есть файл /etc/group;
  5. Комментарий о пользователе;
  6. Путь к домашнему каталогу пользователя;
  7. Оболочка пользователя. Указывается или путь к файлу оболочки, например /bin/bash или nologin.

/etc/group

Информация о всех группах содержится в файле
/etc/group
синтаксис похож на /etc/passwd, в качестве разделителя так же используется двоеточие, но столбцов в этом файле меньше.
  1. Имя группы. При создании пользователя создается группа с таким же названием как имя пользователя - это его личная группа;
  2. Стоят знаки x. Пароли групп находятся в файле /etc/gshadow, который доступен только для root. Как и пользователю, для группы тоже можно поставить пароль командой gpasswd, потом кто-то из другой группы может временно получить права этой группы с помощью newgrp;
  3. Id группы (gid);
  4. Список пользователей группы.

/etc/shadow

Информация о пароле и все что к нему относится содержится в файле
/etc/shadow
синтаксис похож на /etc/passwd, в качестве разделителя так же используется двоеточие, но столбцов в этом файле меньше.
  1. Имя пользователя;
  2. Пароль в хешированном виде, вместо пароля может быть звездочка или восклицательный знак или два восклицательных знака, в зависимости от дистрибутива. Обычно это значит, что аккаунт заблокирован, в основном встречается у сервисных или новых аккаунтов, у которых нет паролей;
  3. Дата, когда последний раз менялся пароль. Эту же информацию можно прочитать командой chage -l user;
  4. Дата, когда пароль будет заблокирован.

/etc/sudoers

Файл
/etc/sudoers
определяет, кто какие команды может запускать, от имени каких пользователей, на каких компьютерах, а также может управлять специальными вещами, такими как, нужен ли пользователю вводить пароль для определенных команд. В основном используется для того, чтобы указать каким пользователям разрешено использовать sudo.
Этот файл редактируется с помощью команды
visudo
Для защиты от синтаксических ошибок visudo копирует файл /etc/sudoers и изменения проводит в копии, при выходе файл проверяется на ошибки и если все нормально, то оригинал заменяется копией.
В /etc/sudoers содержатся строки вида
ALL=(ALL) ALL
%ALL=(ALL) ALL
%wheel=(ALL) NOPASSWD: ALL 
знаком % обозначается группа пользователей. Nopasswd означает, что не нужно запрашивать пароль при использовании sudo.
    конструкция ALL=(ALL) ALL определяет кому и какие команды можно запускать
  • Первое ALL - на каком компьютере. ALL разрешает запускать команды на компьютере с любым hostname. Если вместо ALL указано конкретное имя, то оно будет сравниваться с текущим именем компьютера и правило будет применяться только если они совпадают. Если не совпадают, то строка будет проигнорирована. Если есть несколько компьютеров, можно написать один файл sudoers и скопировать его на все компьютеры и будут считываться только те строки, где хост равен указанному значению или ALL;
  • Второе ALL, в скобках - от имени какого пользователя. ALL позволяет запускать команду от имени любого пользователя или же можно написать конкретного пользователя от имени которого разрешается запускать команды;
  • Третье ALL - разрешенные для запуска команды. ALL разрешает запускать все команды или же можно прописать команды которые нужно разрешить или запретить, перед запрещенными ставится восклицательный знак.

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

Пользователи

  • useradd <user> создание пользователя
  • useradd <user> -b /home/users создание пользователя с указанием каталога (должен быть создан заранее), в котором будет создан домашний каталог пользователя
  • useradd <user> -d /home/user1234 создание пользователя с указанием каталога, который будет использоваться в качестве домашнего каталога пользователя
  • useradd <user> -g <group> создание пользователя с назначением ему основной группы
  • useradd <user> -G <group> создание пользователя с назначением ему дополнительных групп
  • useradd <user> -u <uid> создание пользователя с назначением ему конкретного идентификатора
  • passwd <user> назначение пароля пользователю
  • userdel <user> удаление пользователя
  • userdel -r <user> удаление пользователя вместе с домашним каталогом и группой
  • usermod -g <group> <user> изменение основной группы пользователя
  • usermod -aG <group2> <user> добавление дополнительной группы пользователю
  • usermod -G <group2> <user> замена дополнительной группы пользователю
  • usermod <user> -dm /var/user123 изменение расположения домашнего каталога пользователя с переносом данных из исходного
  • usermod -L <user> блокирование пользователя
  • usermod -U <user> разблокирование пользователя

Группы

  • groupadd <group> создание группы
  • groupadd –g <gid> <user> явное определение Group ID при создании группы
  • gpasswd <group> изменяет/устанавливает пароль группы, что позволяет пользователям временно войти в группу при помощи команды newgrp <group>, если им известен пароль
  • gpasswd -a <user> <group> добавление пользователя в группу
  • gpasswd –d <user> <group> удаление пользователя из группы
  • gpasswd <group> -A <user1> -M <user2>,<user3> назначение группе администратора и пользователей. Администратор группы может добавлять и удалять пользователей группы без прав суперпользователя
  • gpasswd <group> установка/изменение пароля группы, что позволяет пользователям временно войти в группу при помощи команды newgrp <group>, если им известен пароль
  • groupdel <group> удаление группы. Группу нельзя удалить, если она основная хотя бы для одного существующего пользователя
  • groupmod -n <old_group> <new_group> создание группы
  • groupmod –g <new_gid> <group> изменение ID группы

Параметры пользователя

  • chage -l <user> проверка параметров пользователя
  • chage -M 30 <user> пароль должен меняться каждые 30 дней
  • chage -d 0 <user> потребовать принудительное обновление пароля при входе
  • chage -E 2020-02-10 <user> установка срока действия учетной записи на определенную дату
  • chage <user> настройка времени действия пароля

Получение информации о пользователях

  • id вывод информации о текущем пользователе
  • id <user> вывод информации об указанном пользователе
  • w отображение пользователей, находящихся в системе
  • who вывод пользователей онлайн, времени и даты входа
  • whoami вывод имени текущего пользователя
  • last вывод списка входа и выхода пользователей по времени
  • lastb вывод списка неудачных попыток входа
  • sudo -u <user> <command> выполнение одной команды от имени указанного пользователя
  • sudo su - <user> вход под указанным пользователем без ввода его пароля

Параметры по-умолчанию для создания пользователя

У useradd есть свои настройки, настройки по умолчанию можно посмотреть командой
useradd -D
Настройки находятся в файлах
/etc/default/useradd
/etc/login.defs
В первом файле только параметры useradd, а во втором параметры для многих утилит, работающих с пользователями и группами.
    Внутри /etc/default/useradd следующие параметры:
  • GROUP - если не создавать личную группу пользователя, то группа по умолчанию будет - users с gid 100
  • HOME - внутри какого каталога будет создан домашний каталог пользователя, по умолчанию /home
  • INACTIVE - через сколько дней после устаревания пароля заблокируется аккаунт: -1 никогда, 0 сразу, вместо нуля можно указать числом количество дней
  • EXPIRE - дата блокировки аккаунта ГГГГ-ММ-ДД
  • SHELL - интерпретатор по умолчанию, обычно /bin/bash
  • SKEL - путь к шаблонному каталогу, который используется при создании пользователя. В этом каталоге хранятся файлы, которые будут скопированы в домашний каталог пользователя при создании, по умолчанию /etc/scel
  • CREATE_MAIL_SPOOL - файл, в который будет попадать входящая почта для пользователя
    Внутри /etc/login.defs следующие параметры:
  • MAIL_DIR - каталог, в котором создается файл для входящей почты
  • PASS_MAX_DAYS - максимальное количество дней действия пароля
  • PASS_MIN_DAYS - минимальное количество дней действия пароля
  • PASS_MIN_LEN - минимальная длина пароля
  • PASS_WARN_AGE - за сколько дней до устаревания пароля пользователю будет выдано предупреждение о смене пароля
  • UID_MIN и UID_MAX - минимальный и максимальный uid, который может быть выдан пользователю, если его не указывать вручную
  • SYS_UID_MIN и SYS_UID_MAX - минимальный и максимальный uid, который может быть выдан сервисному пользователю
  • CREATE_HOME - создавать ли домашний каталог при создании пользователя
  • USERGROUPS_ENAB - параметр, отвечающий за создание группы пользователя. Без этого параметра группа будет, та что указана в GROUP файла /etc/default/useradd
  • ENCRYPT_METHOD - алгоритм хеширования пароля в файле /etc/shadow