Управление учетными записями пользователей в Linux

Управление учетными записями пользователей в Linux

    useradd

    Наиболее важные параметры команды useradd:
    -c - Создайте новую учетную запись пользователя с пользовательскими комментариями (например, с полным именем пользователя).
    -d - Создайте новую учетную запись пользователя с пользовательским домашним каталогом.
    -e - Создайте новую учетную запись пользователя, указав конкретную дату, когда она будет отключена.
    -f - Создайте новую учетную запись пользователя, указав количество дней после истечения срока действия пароля, в течение которых пользователь должен сменить пароль (в противном случае учетная запись будет заблокирована).
    -g - Создайте новую учетную запись пользователя с определенным идентификатором GID.
    -G - Создайте новую учетную запись пользователя, добавив ее в несколько дополнительных групп.
    -k - Создайте новую учетную запись пользователя, скопировав файлы-шаблоны из определенного пользовательского каталога (этот параметр действителен только при наличии параметров -m или --create-home).
    -m - Создайте новую учетную запись пользователя с домашним каталогом (если его еще нет).
    -M - Создайте новую учетную запись пользователя без домашнего каталога.
    -s - Создайте новую учетную запись пользователя с определенным логином
    -u - Создайте новую учетную запись пользователя с определенным идентификатором UID.

    #Добавить пользователя useradd michael #Просмотр данных о текущем пользователе id uid=1000(chich) gid=1000(chich) группы=1000(chich),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),115(lpadmin),137(sambashare) #Просмотр данных о текущей группе groups chich adm cdrom sudo dip plugdev lpadmin sambashare #Просмотр данных конкретного пользователя, группы id michael groups michael #Смена пароля пользователя passwd michael
    Группы

    Чтобы узнать, какие группы существуют в вашей системе, введите getent group

    getent group

    Если вы хотите узнать, к каким группам принадлежит пользователь, добавьте его имя пользователя в качестве параметра в groups

    groups carol

    Чтобы сделать обратное (посмотреть, какие пользователи входят в группу), используйте groupmems. Параметр -g указывает на группу, а -l выводит список всех ее участников:

    groupmems -g cdrom -l
    Добавление, изменение и удаление групп

    Как и в случае с управлением пользователями, вы можете добавлять, изменять и удалять группы с помощью команд groupadd, groupmod и groupdel с правами суперпользователя
    При добавлении новой учетной записи пользователя основная и дополнительные группы, к которым она относится, должны существовать до запуска команды useradd
    При изменении GID с помощью опции -g необходимо изменить GID всех файлов и каталогов, которые должны по-прежнему принадлежать группе.
    Вы не можете удалить группу, если она является основной для учетной записи пользователя
    При удалении группы файлы, принадлежащие этой группе, остаются в вашей файловой системе и не удаляются и не передаются другой группе.

    #создать новую группу с именем developer #Опция -g этой команды создает группу с определенным идентификатором GID groupadd -g 1090 developer #переименовать группу с developer на web-developer и изменить ее GID groupmod -n web-developer -g 1050 developer #Удалить группу groupdel web-developer
    Разрешения по умолчанию

    Вы когда-нибудь задумывались, откуда берутся права по умолчанию при создании файлы или каталога?
    Они берутся из пользовательской маски или umask, которая устанавливает разрешения по умолчанию для каждого создаваемого файла. Вы можете проверить текущие значения с помощью команды umask

    umask -S u=rwx,g=rx,o=rx

    Директориям нужны разрешения на выполнение (иначе в них нельзя будет войти), а файлам — нет, поэтому они их не получают.


    umask не только отображает права доступа по умолчанию, но и позволяет изменить их для текущего сеанса работы в оболочке

    #Каждый новый каталог будет наследовать права доступа rwxrwx---, #а каждый файл — rw-rw---- (поскольку у них нет прав на выполнение). umask u=rwx,g=rwx,o=


    Источник: https://learning.lpi.org/en/learning-materials/101-500/104/104.5/104.5_01/

    Специальные разрешения

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

    Sticky Bit

    Sticky Bit также называемый флагом ограничения на удаление, имеет восьмеричное значение 1 и в символическом режиме обозначается t в правах доступа другого пользователя
    Это применимо только к каталогам и не влияет на обычные файлы. В Linux этот флаг не позволяет пользователям удалять или переименовывать файлы в каталоге, если они не являются владельцами этого файла или каталога.
    Для каталогов, для которых установлен бит закрепления, t заменяет x в разрешениях для других пользователей в выводе ls -l

    chmod 1755 Another_Directory $ ls -ld Another_Directory drwxr-xr-t 2 carol carol 4,0K 20 дек. 18:46 Another_Directory
    Set GID

    Установка GID, также известная как SGID или установка бита идентификатора группы, имеет восьмеричное значение 2 и в символьном режиме обозначается как s в разрешениях group
    Как и SUID, бит SGID символически обозначается s или S в бите выполнения группы. Числовое значение имеет вид: 2000
    Это можно применить к исполняемым файлам или каталогам. В случае с файлами процесс будет выполняться с привилегиями группы, которой принадлежит файл. При применении к каталогам каждый файл или каталог, созданный в них, будет наследовать группу родительского каталога.
    Файлы и каталоги с битом SGID отображают s вместо x в разрешениях для группы в выводе ls -l:

    chmod g+s test.sh ls -l test.sh -rwxr-sr-x 1 carol root 33 дек. 11 10:36 test.sh
    Set UID

    SUID, также известный как Set User ID, имеет восьмеричное значение 4 и обозначается s в разрешениях пользователя в символическом режиме. Он применяется только к файлам и не влияет на каталоги.
    Бит SUID позволяет запускать файл с правами владельца
    Если S будет заглавной (rwS), это будет означать, что базовое разрешение execute не установлено.
    Его действие схоже с действием бита SGID, но процесс выполняется с привилегиями пользователя, которому принадлежит файл. Файлы с битом SUID отображают s вместо x в разрешениях пользователя в выводе ls -l:

    ls -ld test.sh -rwsr-xr-x 1 carol carol 33 дек. 11 10:36 test.sh

    Вы можете объединить несколько специальных разрешений в одном параметре. Таким образом, чтобы установить SGID (значение 2) и SUID (значение 4) в восьмеричном режиме для скрипта test.sh с разрешениями 755, нужно ввести:

    chmod 6755 test.sh ls -lh test.sh -rwsr-sr-x 1 carol carol 66 янв. 18:29 test.sh


    Источник: https://learning.lpi.org/en/learning-materials/101-500/104/104.5/104.5_01/

    Если ваш терминал поддерживает color, а в наши дни большинство из них поддерживает, вы можете быстро увидеть, установлены ли эти специальные разрешения, взглянув на выходные данные ls -l. Для фиксированного бита имя каталога может быть выделено черным шрифтом на синем фоне. То же самое относится к файлам с битами SGID (желтый фон) и SUID (красный фон). Цвета могут отличаться в зависимости от того, какой дистрибутив Linux и настройки терминала вы используете.


    Чтобы найти файлы с установленным SUID или SGID, можно использовать команду find и опцию -perm
    Можно использовать как числовые, так и символьные значения
    найти файлы со специальным разрешением исключительно
    -perm numeric-value или -perm symbolic-value

    поиск файлов с особыми и другими разрешениями
    -perm -numeric-value или -perm -symbolic-value

    найти файлы, имеющие одно из специальных разрешений (и другие разрешения)
    -perm /numeric-value или -perm /symbolic-value

    #Создать файл touch file #Установить бит SUID chmod 4000 file #найти файлы с установленным только SUID find . -perm 4000 #Или find . -perm u+s #найти файлы с атрибутом SUID (независимо от других разрешений) sudo find /usr/bin -perm -4000 #Или sudo find /usr/bin -perm -u+s #чтобы найти файлы с одним из двух специальных разрешений, добавьте 4 и 2 и используйте / find /usr/bin -perm /6000

    У команды passwd установлен бит SUID (s вместо флага исполняемого файла для владельца), то есть она выполняется с привилегиями владельца файла (то есть root).


    Изменение учетных записей пользователей

    Наиболее важные параметры команды usermod:
    -d - Измените домашний каталог указанной учетной записи пользователя. При использовании с опцией -m содержимое текущего домашнего каталога перемещается в новый домашний каталог, который создается, если его еще нет.
    -e - Установите срок действия учетной записи указанного пользователя.
    -f - Укажите количество дней после истечения срока действия пароля, в течение которых пользователь должен сменить пароль (в противном случае учетная запись будет заблокирована)
    -g - Измените основную группу для указанной учетной записи пользователя (группа должна существовать).
    -G - Добавьте дополнительные группы в указанную учетную запись пользователя. Каждая группа должна существовать и отделяться от следующей запятой без промежуточных пробелов. При использовании отдельно эта опция удаляет все существующие группы, к которым принадлежит пользователь, в то время как при использовании с -a опцией она просто добавляет новые дополнительные группы к существующим.
    -l - Измените имя для входа в указанную учетную запись пользователя.
    -L - Заблокируйте указанную учетную запись пользователя. При этом перед зашифрованным паролем в файле /etc/shadow ставится восклицательный знак, что блокирует доступ для этого пользователя с помощью пароля.
    -s - Измените оболочку входа для указанной учетной записи пользователя.
    -u - Измените UID указанной учетной записи пользователя
    -U - Разблокируйте указанную учетную запись пользователя. Это уберет восклицательный знак перед зашифрованным паролем в файле /etc/shadow


    Подсказка Помните, что при смене имени для входа в учетную запись пользователя, скорее всего, придется переименовать домашний каталог этого пользователя и другие связанные с ним элементы, например файлы очереди печати.
    Также помните, что при смене идентификатора пользователя учетной записи, скорее всего, придется изменить владельца файлов и каталогов за пределами домашнего каталога пользователя (идентификатор пользователя автоматически меняется для почтового ящика пользователя и всех файлов, принадлежащих пользователю и находящихся в его домашнем каталоге).

    #Изменить оболочку входа usermod -s /bin/tcsh michael #Краткое описание пользователя usermod -c "Учетная запись пользователя Michael" michael #Удаление учетной записи пользователя #эта команда обновляет информацию, хранящуюся в базах данных учетных записей, удаляя все записи, относящиеся к указанному пользователю #удаляет домашний каталог пользователя и все его содержимое, а также почтовый ящик пользователя userdel -r michael
    Основной каталог шаблон

    При создании новой учетной записи пользователя и даже при создании ее домашнего каталога в нем появляются файлы и папки, скопированные из каталога-сетки (по умолчанию /etc/skel)
    Если вы хотите изменить файлы и папки, которые автоматически создаются в домашнем каталоге новых учетных записей пользователей, вам нужно добавить их в каталог-сетку.


    В Linux в файле /etc/login.defs указаны параметры конфигурации, которые управляют созданием пользователей и групп
    Кроме того, команды, приведенные в предыдущих разделах, используют значения по умолчанию из этого файла
    При управлении пользователями и группами всегда проверяйте этот файл, чтобы при необходимости просмотреть и при необходимости изменить стандартное поведение системы.
    Наиболее важные директивы:
    UID_MIN и UID_MAX - Диапазон идентификаторов пользователей, которые могут быть присвоены новым обычным пользователям.
    GID_MIN и GID_MAX - Диапазон идентификаторов групп, которые можно присвоить новым обычным группам.
    CREATE_HOME - Укажите, следует ли по умолчанию создавать домашний каталог для новых пользователей.
    USERGROUPS_ENAB - Укажите, должна ли система по умолчанию создавать новую группу для каждой новой учетной записи пользователя с тем же именем, что и у пользователя, и следует ли при удалении учетной записи пользователя удалять его основную группу, если в ней больше нет участников.
    MAIL_DIR - Каталог почтовых черновиков.
    PASS_MAX_DAYS - Максимальное количество дней, в течение которых можно использовать пароль.
    PASS_MIN_DAYS - Минимальное количество дней между сменами пароля.
    PASS_MIN_LEN - Минимальная допустимая длина пароля.
    PASS_WARN_AGE - Количество предупреждений до истечения срока действия пароля.

    Команда passwd

    В зависимости от используемых passwd параметров вы можете управлять отдельными аспектами устаревания паролей:
    -d - Удалите пароль от учетной записи пользователя (тем самым отключив учетную запись).
    -e - Заставьте пользователя сменить пароль.
    -i - Укажите количество дней бездействия после истечения срока действия пароля, в течение которых пользователь должен сменить пароль (в противном случае учетная запись будет заблокирована).
    -l - Lock the user account (the encrypted password is prefixed with an exclamation mark in the /etc/shadow file).
    -n - Установите минимальный срок действия пароля.
    -S - Выводит информацию о состоянии пароля для конкретной учетной записи пользователя.
    -u - Разблокируйте учетную запись пользователя (уберите восклицательный знак из поля пароля в файле /etc/shadow).
    -x - Установите максимальный срок действия пароля.
    -w - Укажите количество дней до истечения срока действия пароля, в течение которых пользователь будет получать предупреждение о необходимости сменить пароль.


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

    #Информация о пароле пользователя passwd -S carol P 07.12.2019 0 99999 7 -1 #Заблокировать пароль для carol passwd -l carol #Разблокировать учетную запись для пользователя passwd -u carol

    P Это означает, что у пользователя действительный пароль
    12/07/2019 - Дата последней смены пароля.
    0 - Минимальный срок действия в днях
    99999 - Максимальный срок действия в днях
    7 - Срок предупреждения в днях
    -1 - Срок предупреждения в днях. Значение -1 отменяет неактивность учетной записи.


    С помощью опций -l, -u, -e и -d вы можете блокировать и разблокировать учетные записи, заставить пользователя сменить пароль при следующем входе в систему и удалить пароль пользователя.

    Кроме того, вы можете заблокировать и разблокировать пароль пользователя с помощью команды usermod:

    usermod -L carol #Разблокировать пользователя usermod -U carol #задать количество дней до отключения учетной записи с истекшим сроком действия пароля usermod -f 3 carol

    Команда chage

    Помимо passwd и usermod, самая простая команда для работы с паролями и учетными записями — chage («изменить возраст»)
    Эта команда, которая расшифровывается как «изменить возраст», используется для изменения информации о сроке действия пароля пользователя. Команда chage доступна только для пользователей с правами root, за исключением опции -l, с помощью которой обычные пользователи могут просмотреть информацию о сроке действия пароля для своей учетной записи.


    Другие параметры, применимые к команде chage, следующие:
    -d - Установите дату последней смены пароля для учетной записи пользователя.
    -E - Установите срок действия учетной записи пользователя.
    -I - Укажите количество дней бездействия после истечения срока действия пароля, в течение которых пользователь должен сменить пароль (в противном случае учетная запись будет заблокирована).
    -m - Установите минимальный срок действия пароля для учетной записи пользователя.
    -M - Установите максимальный срок действия пароля для учетной записи пользователя.
    -W - Укажите количество дней до истечения срока действия пароля, в течение которых пользователь будет получать предупреждение о необходимости сменить пароль.

    Если вы хотите заблокировать учетную запись пользователя, используйте одну из этих команд: usermod -L, usermod --lock и passwd -l. Чтобы разблокировать учетную запись, используйте команды usermod -U, usermod --unlock и passwd -u.

    В Linux можно использовать команду passwd -n (или chage -m) для установки минимального количества дней между сменами пароля, команду passwd -x (или chage -M) для установки максимального количества дней, в течение которых пароль действителен, команду passwd -w (или chage -W) для установки количества дней, в течение которых пользователь получает предупреждение о необходимости сменить пароль, команду passwd -i (или chage -I) для установки количества дней бездействия, по истечении которых пользователь должен сменить пароль, и команду passwd -S (или chage -l) для отображения краткой информации о пароле учетной записи пользователя.

    Вот как можно изменить различные настройки chage: -m days username или --mindays days username Укажите минимальное количество дней между сменами пароля (например: chage -m 5 carol). Значение 0 позволит пользователю менять пароль в любое время. -M days username или --maxdays days username Укажите максимальное количество дней, в течение которых будет действителен пароль (например: chage -M 30 carol). Чтобы отключить автоматическое изменение пароля, укажите значение 99999. -d days username или --lastday days username Укажите количество дней, прошедших с момента последней смены пароля (например: chage -d 10 carol). Значение 0 заставит пользователя сменить пароль при следующем входе в систему. -W days username или --warndays days username Укажите количество дней, в течение которых пользователю будет приходить напоминание об истечении срока действия пароля. -I days username или --inactive days username Укажите количество дней бездействия после истечения срока действия пароля (например: chage -I 10 carol) — то же самое, что usermod -f или usermod --inactive. По истечении этого количества дней учетная запись будет заблокирована. Однако при значении 0 учетная запись не будет заблокирована. -E date username или --expiredate date username Укажите дату (или количество дней, прошедших с начала отсчета — 1 января 1970 года), когда аккаунт будет заблокирован. Обычно она указывается в формате YYYY-MM-DD (например: chage -E 2050-12-13 carol).
    Соответствие команд passwd и chage
    passwd -n -> chage -m
    passwd -x -> chage -M
    passwd -w -> chage -W
    passwd -i -> chage -I
    passwd -S -> chage -l

    Создайте новую группу с именем designers, переименуйте ее в web-designers и добавьте эту новую группу во вторичные группы учетной записи пользователя kevin . Определите все группы, к которым принадлежит kevin , и их идентификаторы.

    # groupadd designers # groupmod -n web-designers designers # usermod -a -G web-designers kevin # id kevin #Удалите из вторичных групп developers. только группу kevin #В команде usermod нет возможности удалить только одну группу, #поэтому необходимо указать все дополнительные группы, к которым принадлежит пользователь. usermod -G administrators,web-designers kevin # изменить срок действия учетной записи пользователя chage -E 2022-12-31 kevin

    chage позволяет изменить срок действия пароля пользователя. Войдите в систему под учетной записью root и заполните следующую таблицу, указав правильные команды для пользователя mary:
    Пароль будет действителен в течение 365 дней. chage -M 365 mary, chage --maxdays 365 mary Заставьте пользователя сменить пароль при следующем входе в систему. chage -d 0 mary, chage --lastday 0 mary Установите минимальное количество дней между сменой паролей — 1. chage -m 1 mary, chage --mindays 1 mary Отключите истечение срока действия пароля. chage -M 99999 mary, chage --maxdays 99999 mary Разрешите пользователю менять пароль в любое время. chage -m 0 mary, chage --mindays 0 mary Установите срок предупреждения в 7 дней, а дату окончания срока действия аккаунта — на 20 августа 2050 года. chage -W 7 -E 2050-08-20 mary, chage --warndays 7 --expiredate 2050-08-20 mary Вывести информацию о сроке действия текущего пароля пользователя. chage -l mary, chage --list mary



    Добавьте новую учетную запись пользователя с именем emma и идентификатором UID 1050, назначив administrators основной группой, а developers и web-designers — дополнительными группами.

    useradd -u 1050 -g administrators -G developers,web-designers emma #Измените оболочку входа в систему с emma на /bin/sh usermod -s /bin/sh emma #Удалите учетные записи emma и kevin пользователей, #а также группы administrators, developers и web-designers # userdel -r emma # userdel -r kevin # groupdel administrators # groupdel developers # groupdel web-designers
    Файлы с информацией о пользователях

    /etc/passwd - Файл из семи полей, разделенных двоеточиями, содержит основную информацию о пользователях.
    Каждая строка состоит из семи полей, разделенных двоеточиями:
    Имя пользователя - используемое при входе пользователя в систему.
    Пароль - Зашифрованный пароль (или x при использовании теневых паролей).
    Идентификатор пользователя (UID) - Идентификационный номер, присвоенный пользователю в системе.
    Идентификатор группы (GID) - Основной групповой номер пользователя в системе.
    GECOS - Необязательное поле для комментариев, в котором можно указать дополнительную информацию о пользователе (например, полное имя). В поле можно указать несколько записей, разделенных запятыми.
    Домашний каталог - Абсолютный путь к домашнему каталогу пользователя.
    Оболочка - Абсолютный путь к программе, которая автоматически запускается при входе пользователя в систему (обычно это интерактивная оболочка, например /bin/bash).


    /etc/group - Файл из четырех полей, разделенных двоеточиями, содержит основную информацию о группах.
    Каждая строка состоит из четырех полей, разделенных двоеточиями:
    Название группы.
    Групповой Пароль - Зашифрованный пароль группы (или x при использовании теневых паролей).
    Идентификатор группы (GID) - Идентификационный номер, присвоенный группе в системе.
    Список Участников - Список пользователей, входящих в группу, разделенный запятыми, за исключением тех, для кого эта группа является основной.

    /etc/shadow - Файл из девяти полей, разделенных двоеточиями, содержит зашифрованные пароли пользователей.
    Каждая строка состоит из девяти полей, разделенных двоеточиями:
    Имя, используемое при входе пользователя в систему.
    Зашифрованный пароль пользователя (если значение начинается с !, учетная запись заблокирована).
    Дата последней смены пароля в виде количества дней, прошедших с 01.01.1970 (значение 0 означает, что пользователь должен сменить пароль при следующем входе в систему).
    Минимальное количество дней после смены пароля, по истечении которых пользователю будет разрешено снова сменить пароль.
    Максимальный Возраст пароля - Максимальное количество дней, по истечении которых потребуется сменить пароль.
    Период предупреждения о вводе пароля - Количество дней до истечения срока действия пароля, в течение которых пользователь получает предупреждение о необходимости сменить пароль.
    Период Бездействия пароля - Количество дней после истечения срока действия пароля, в течение которых пользователь должен его сменить. По истечении этого срока, если пользователь не сменит пароль, его учетная запись будет заблокирована.
    Дата истечения Срока действия учетной записи - Дата, выраженная в количестве дней, прошедших с 01.01.1970, по истечении которых учетная запись пользователя будет заблокирована (пустое поле означает, что срок действия учетной записи не ограничен).
    Зарезервированное поле - Поле, зарезервированное для дальнейшего использования.

    /etc/gshadow - Файл из четырех полей, разделенных двоеточиями, содержащий зашифрованные групповые пароли.
    Каждая строка состоит из четырех полей, разделенных двоеточиями:
    Название группы
    Зашифрованный пароль для группы (используется, когда пользователь, не являющийся членом группы, хочет присоединиться к ней с помощью команды newgrp — если пароль начинается с !, доступ к группе с помощью newgrp запрещен).
    Администраторы групп - Список администраторов группы, разделенный запятыми (они могут менять пароль группы, а также добавлять или удалять участников с помощью команды gpasswd).
    Члены группы - Список участников группы, разделенный запятыми.

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

    Очень часто может потребоваться просмотреть информацию о пользователях и группах, хранящуюся в этих четырех файлах, и найти конкретные записи. Для выполнения этой задачи можно использовать команду grep или объединить cat и grep
    Другой способ получить доступ к этим базам данных — использовать команду getent
    Другой способ получить доступ к этим базам данных — использовать команду getent . Как правило, эта команда отображает записи из баз данных, поддерживаемых библиотеками Name Service Switch (NSS), и требует указания имени базы данных и ключа поиска. Если аргумент key не указан, отображаются все записи из указанной базы данных (если только база данных не поддерживает перечисление). Если указан один или несколько аргументов key, база данных фильтруется соответствующим образом.
    getent может обращаться только к базам данных, настроенным в файле /etc/nsswitch.conf

    grep emma /etc/passwd cat /etc/group | grep db-admin getent passwd emma getent group db-admin cat /etc/passwd | grep '\(root\|mail\|catherine\|kevin\)' cat /etc/group | grep '\(root\|mail\|db-admin\|app-developer\)' cat /etc/shadow | grep '\(root\|mail\|catherine\|kevin\)' cat /etc/gshadow | grep '\(root\|mail\|db-admin\|app-developer\)'

    Системные учетные записи пользователей, такие как mail, ftp, news и daemon, используются для выполнения административных задач, поэтому для этих учетных записей следует запретить обычный вход в систему. Поэтому в качестве оболочки обычно используется /sbin/nologin или /bin/false.


    Системные учетные записи обычно имеют идентификаторы UID менее 100 или в диапазоне от 500 до 1000, в то время как у обычных пользователей идентификаторы UID начинаются с 1000, хотя в некоторых устаревших системах нумерация может начинаться с 500. Пользователь root имеет идентификатор UID 0. Помните, что значения UID_MIN и UID_MAX в /etc/login.defs определяют диапазон идентификаторов UID, используемых для создания обычных пользователей. Согласно LPI Linux Essentials и LPIC-1, системные учетные записи имеют идентификаторы пользователей менее 1000, а обычные пользователи — идентификаторы пользователей более 1000.

    Как узнать, заблокирована ли учетная запись пользователя, которая ранее имела доступ к системе? Предположим, что в вашей системе используются теневые пароли.
    При использовании теневых паролей второе поле в /etc/passwd содержит символ x для каждой учетной записи пользователя, поскольку зашифрованные пароли пользователей хранятся в /etc/shadow. В частности, зашифрованный пароль учетной записи пользователя хранится во втором поле этого файла, и если он начинается с восклицательного знака, значит, учетная запись заблокирована.

    getent shadow christian christian:!:18015:0:99999:7:::

    Для учетной записи christian пользователя не установлен пароль, и она заблокирована (во втором поле /etc/shadow стоит восклицательный знак). Для этой учетной записи не установлены минимальный и максимальный срок действия пароля (в четвертом и пятом полях /etc/shadow указаны значения 0 и 99999 дней), а срок действия предупреждения о смене пароля составляет 7 дней (шестое поле /etc/shadow). Наконец, для этой учетной записи не установлен период неактивности (седьмое поле /etc/shadow), и срок ее действия не ограничен (восьмое поле /etc/shadow).

    # cat /etc/group | grep editor editor:x:1100:emma,dave,frank # usermod -a -G editor christian # cat /etc/group | grep editor editor:x:1100:emma,dave,frank,christian # cat /etc/gshadow | grep editor editor:!::emma,dave,frank,christian

    Третье и четвертое поля в /etc/ghadow содержат информацию об администраторах и обычных участниках указанной группы. Таким образом, поскольку третье поле в editor пустое, в этой группе нет администраторов (emma, dave, frank и christian — все обычные участники).


    При использовании теневых паролей во втором поле этих файлов отображается x, поскольку зашифрованные пароли пользователей и групп хранятся в файлах /etc/shadow и /etc/gshadow, которые доступны для чтения только пользователю root

    Битовая маска

    Помимо SUID и SGID, существует третье специальное разрешение: битовая маска. В настоящее время она в основном используется в таких каталогах, как /tmp, чтобы обычные пользователи не могли удалять или перемещать файлы, кроме своих собственных

    Установите sticky bit на ~/temporal: chmod +t temporal, chmod 1755 temporal Найдите каталоги с установленным битом закрепления (и любыми другими разрешениями) в вашем домашнем каталоге: find ~ -perm -1000, find ~ -perm /1000 Снимите защиту от копирования с ~/temporal: chmod -t temporal, chmod 0755 temporal
    Примечания

    Как определить, что пароль пользователя заблокирован с помощью passwd -l username или usermod -L username, заглянув в /etc/shadow?
    Во втором поле, сразу после имени пользователя, появится восклицательный знак (например: mary:!$6$gOg9xJgv…​).


    Какая команда usermod аналогична chage -E date username или chage --expiredate date username?
    usermod -e date username, usermod --expiredate date username

    Блокировка пользователя в Linux
    С помощью passwd
    #Блокировка sudo passwd -l mega #Проверка статуса пароля sudo passwd -S mega #Или sudo grep mega /etc/shadow #Разблокировка sudo passwd -u mega

    LK: пароль заблокирован
    NP: нет пароля
    PS: пароль установлен

    Блокировка с помощью usermod
    #Блокировка sudo usermod -L mega #Проверка статуса пароля sudo passwd -S mega #Или sudo grep mega /etc/shadow #Разблокировка sudo usermod -U mega
    Блокировка доступа с помощью оболочки nologin
    #Блокировка с помощью изменения оболочки на nologin sudo usermod -s /sbin/nologin mega #Проверить sudo grep mega /etc/passwd #Разблокировка sudo usermod -s /bin/bash mega
    Права доступа, пользователи и группы

    При входе в систему пользователь вводит свое имя и пароль. Если логин и пароль соответствуют записи в файле /etc/passwd, тогда логин пораждает пользовательскую оболочку входа и делает uid оболочки равным uid пользователя. Процессы потомки наследуют uid своих предков
    Кроме реального uid, каждый процесс также обладает действительным uid, сохраненным uid и uid файловой системы
    Реальный uid процесса совпадает с uid пользователя запустившего процесс
    Действительный uid может изменяться по определенным правилам, чтобы процесс мог выполняться с правами других пользователей
    В сохраненном uid записывается исходный действительный uid
    uid файловой системы как правило равен действительному uid и используется при варификации доступа к файловой системе
    Каждый пользователь в системе может принадлежать к одной или нескольким группам, в частности к первичной группе ( группа входа в систему ), указанной в /etc/passwd и дополнительным группам, которые перечисляются в /etc/group
    Таким образом каждый процесс ассоциируется с соответствующим групповым id ( gid ) и также имеет действительный, сохраненный gid и gid файловой системы


    Информация о владельце файла и правах хранится в индексном дескрипторе файла
    Права записи позволяет добавлять в каталог новые ссылки
    Право исполнения позволяет открыть каталог и ввести его название в имя пути

    400 r-------- Владелец может читать 200 -w------- Владелец может записывать 100 --x------ Владелец может исполнять 040 ---r----- Члены группы могут читать 020 ----w---- Члены группы могут записывать 010 -----x--- Члены группы могут исполнять 004 ------r-- Любой может читать 002 -------w- Любой может записывать 001 --------x Любой может исполнять
    Ограничения на количество входов пользователей в систему, количество процессов и использование памяти

    Ресурсы в системе Linux не безграничны, поэтому вам как системному администратору следует обеспечить баланс между ограничениями для пользователей и надлежащим функционированием операционной системы. ulimit может помочь вам в этом.
    ulimit работает с мягкими и жесткими ограничениями, заданными с помощью параметров -S и -H соответственно. При запуске без параметров или аргументов ulimit отобразит мягкие блоки файлов текущего пользователя:


    При использовании опции -a ulimit будут отображаться все текущие мягкие лимиты (как и при использовании -Sa); для отображения всех текущих жестких лимитов используйте -Ha:

    ulimit unlimited #Все текущие мягкие лимиты ulimit -a real-time non-blocking time (microseconds, -R) unlimited core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 61755 max locked memory (kbytes, -l) 2003412 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 61755 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited #Все текущие жесткие лимиты ulimit -Ha

    Доступные ресурсы оболочки определяются такими параметрами, как:
    -b максимальный размер буфера сокета -f Максимальный размер файлов, создаваемых оболочкой и ее дочерними процессами -l максимальный размер, который может быть сохранен в памяти -m максимальный размер резидентного набора (RSS) — текущая часть памяти, занимаемая процессом в оперативной памяти (ОЗУ) -v максимальный объем виртуальной памяти -u максимальное количество процессов, доступных одному пользователю


    Если не указать ни -S ни -H, будут показаны мягкие ограничения:

    Аналогичным образом, чтобы установить новые ограничения для определенного ресурса, нужно указать -S или -H, а затем соответствующий параметр ресурса и новое значение

    Это значение может быть числом или специальными словами soft (текущий мягкий лимит), hard (текущий жесткий лимит) или unlimited (без ограничений). Если не указаны ни -S ни -H, будут установлены оба лимита

    #Текущее значение максимального размера файла ulimit -Sf ulimit -Hf #изменим значение с unlimited на 500 блоков, не указывая ни -S ни -H ulimit -f 500 ulimit -Sf 500 # уменьшим только мягкий лимит до 200 блоков: ulimit -Sf 200

    Жесткие ограничения может увеличить только пользователь с правами root. С другой стороны, обычные пользователи могут уменьшать жесткие ограничения и увеличивать мягкие до значения жестких ограничений.
    Чтобы новые значения ограничений сохранялись после перезагрузки, их необходимо записать в файл /etc/security/limits.conf . Этот же файл используется администратором для применения ограничений к конкретным пользователям


    Страницы ulimit man как таковой не существует. Это встроенная функция bash, поэтому, чтобы узнать о ней подробнее, нужно обратиться к странице man bash.

    Работа с пользователями, прошедшими авторизацию

    В этом вам помогут три утилиты: last, who и w.
    last получает информацию из /var/log/wtmp
    Во втором столбце (терминале) pts означает псевдотерминал, в отличие от настоящего телетайпа или tty


    Чтобы проверить количество неудачных попыток входа в систему, используйте lastb вместо last

    Утилиты who и w ориентированы на пользователей, вошедших в систему в данный момент, и во многом похожи. Первая показывает, кто вошел в систему, а вторая — что они делают.
    При выполнении без параметров who отобразит четыре столбца, соответствующие имени пользователя, терминала, дате и времени, а также имени хоста
    who предлагает несколько вариантов, среди которых можно выделить следующие: -b,--boot Отображение времени последней загрузки системы. -r,--runlevel Отображение текущего уровня выполнения. -H,--heading Печать заголовков столбцов.
    По сравнению с who, w выводит немного больше информации
    В верхней строке отображается информация о текущем времени (17:56:12), времени работы системы (up 40 min), количестве пользователей, вошедших в систему в данный момент (2 users) и среднем значении нагрузки (load average: 0.04, 0.12, 0.09). Эти значения относятся к количеству заданий в очереди на выполнение, усредненному за последние 1, 5 и 15 минут соответственно.

    Далее вы видите восемь столбцов. Давайте разберем их по порядку: USER Логин пользователя. TTY Название терминала, на котором работает пользователь. FROM Удаленный хост, с которого пользователь вошел в систему. LOGIN@ Время входа в систему. IDLE Время простоя. JCPU Время, затраченное всеми процессами, подключенными к tty (включая выполняемые в данный момент фоновые задания). PCPU Время, затраченное текущим процессом (отображается под WHAT). WHAT Командная строка текущего процесса. Как и в случае с who, вы можете передавать w имен пользователей:

    w mimi
    Источники
    Последнее изменение: 31.05.2026 12:44


    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ