Почему uid пользователя задается больше 1000
Перейти к содержимому

Почему uid пользователя задается больше 1000

  • автор:

Почему uid пользователя задается больше 1000

Даже если на компьютере работает только один человек, необходимо понимать аспекты управления пользователями в системе Linux . Важно создать по крайней мере одно имя пользователя (помимо пользователя root ) для повседневной работы.

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

Пользователи с точки зрения Linux

Система регистрирует следующую информацию о каждом пользователе.

Имя пользователя (user name)

Это имя должно быть уникальным в рамках системы. В именах могут быть использованы только английские буквы, числа и символы _ и . (точка).

Идентификационный номер пользователя (User ID)

Этот номер, сокращённо обозначаемый как UID , является уникальным идентификатором пользователя в системе, Вообще говоря, система отслеживает пользователей по их номерам UID, а не по именам.

Идентификационный номер группы (group ID)

Этот номер (сокращённо GID ) обозначает группу, к которой по умолчанию относится пользователь. Группы позволяют регулировать доступ многих пользователей к различным ресурсам. Каждый пользователь принадлежит одной или нескольким группам, и эту принадлежность устанавливает системный администратор.

Это зашифрованный (encripted) пароль пользователя. Для создания и изменения пароля используется команда passwd .

Полное имя (full name)

Помимо системного имени пользователя, в систему заносится и хранится имя (фамилия и т. д.) « реального » пользователя. Например, пользователю schmoj в реальной жизни может соответствовать человек по имени Joe Schmo.

Домашний каталог (home directory)

Это название каталога, в который попадает пользователь после того, как он вошёл в систему (зарегистрировался, login), и где хранятся его собственные файлы. Такой каталог имеется у каждого пользователя, и все такие каталоги собраны в один каталог, обычно называемый /home .

Начальная оболочка (login shell)

Командная оболочка, которая запускается при входе в систему. Например, /bin/bash или /bin/zsh .

Вся эта информация хранится в файле /etc/passwd . Каждая строка в файле имеет формат:

имя пользователя:зашифрованный пароль:UID:GID:полное имя:домашний каталог:оболочка
kiwi:Xv8Q981g71oKK:102:100:Laura Poole:/home/kiwi:/bin/bash

В этом примере на первом месте стоит имя пользователя, т. е. kiwi . В следующем поле помещается пароль в зашифрованном виде: Xv8Q981g71oKK . Пароли в системе хранятся не в « читаемом » формате, а в зашифрованном с собственным именем, использованным в качестве ключа. Иными словами, для того, чтобы расшифровать пароль, его нужно знать. Эта форма шифрования является достаточно надёжной.

В некоторых системах имеются « теневые пароли » (shadow passwords), когда информация о пароле хранится в файле /etc/shadow . Такая схема является несколько более безопасной, поскольку файл /etc/passwd может читаться кем угодно, а права доступа к файлу /etc/shadow гораздо сильнее ограничены. Теневые пароли также обеспечивают иные функции, например, истечение срока действия пароля.

Третье поле — 102 — UID. Это число должно быть уникальным. Четвёртое поле — 100 — GID, т. е. пользователь принадлежит к группе с номером 100. Информация о группах хранится в файле /etc/group .

Пятое поле — реальное имя пользователя, в данном случае — Laura Poole . Последние два поля — домашний каталог пользователя ( /home/kiwi ) и начальная оболочка ( /bin/bash ). Не требуется, чтобы имена пользователя и домашнего каталога совпадали, однако такая организация помогает устанавливать принадлежность каталога.

Создание новых пользователей

При создании новых пользователей надо совершить последовательность из нескольких действий. Во-первых, на пользователя заводится запись в файле /etc/passwd , где пользователю даются уникальные имя и UID. UID обычных пользователей должны быть больше 100, поскольку низкие UID зарезервированы для системных целей. Также указываются GID, реальное имя и другая информация. Дальше создаётся домашний каталог пользователя, и права доступа устанавливаются так, что этим каталогом владеет данный пользователь. В каталог помещаются файлы инициализации командной оболочки. Также во всей системе модифицируются конфигурационные файлы (например, хранилище (spool) для приходящей пользователям электронной почты).

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

В файле /etc/default/useradd содержится информация о стандартной начальной конфигурации для всех новых пользователей. В этом файле задаются значения переменным, которые использует программа useradd . Кроме того, этот файл указывает, где находятся конфигурационные файлы содержащие настройки по умолчанию. Расположение этих файлов задаётся переменной SKEL . Файлы, которые помещаются в этот каталог (такие, как файл .profile , устанавливающий режим по умолчанию во всей системе, а также файлы .zshrc или .bashrc ), будут автоматически скопированы в домашний каталог создаваемого пользователя командой useradd .

Удаление пользователей

Удаление пользователей из системы может быть произведено командой userdel или deluser .

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

kiwi:*Xv8Q981g71oKK:102:100:Laura Poole:/home/kiwi:/bin/bash

При этом вход в систему пользователя kiwi станет невозможным.

Установка атрибутов пользователя

После того, как создано имя нового пользователя, может оказаться нужным изменить атрибуты этого пользователя, например, домашний каталог или пароль. Самый простой способ сделать это — просто поменять информацию в файле /etc/passwd . Для создания пароля нужно использовать команду passwd . Так, команда

passwd larry

изменит пароль пользователя larry . Изменять пароли любых пользователей может только пользователь root , однако свои пароли пользователи могут изменять сами, отдавая команду passwd без параметров.

Группы пользователей

Как указывалось выше, каждый пользователь принадлежит одной либо нескольким группам. Единственное, что является существенным в принадлежности к той или иной группе — это права доступа. Для каждого файла определён не только пользователь-владелец, но и группа-владелец, и набор прав доступа, которые определяют, как пользователи из этой группы могут осуществлять доступ к этому файлу. При создании нового пользователя создаётся также группа, имя которой совпадает с именем пользователя и куда входит только он один.

Имеется несколько групп, определённых системой, например, bin , mail , sys . Эти группы созданы для оформления прав доступа к системным файлам, и пользователи не должны принадлежать к этим группам. Для пользователей создаются специальные группы, например, users . Для пользователей можно создать несколько групп, например, student , staff , faculty .

Информация о группах содержится в файле /etc/group . Формат каждой строки таков:

имя группы:пароль:GID:другие члены группы
root:*:0: users:*:100:mdw,larry guest:*:200: other:*:250:kiwi

Первая группа — root — специальная группа для пользователя root . Вторая группа — users — содержит обычных пользователей. GID этой группы равен 100, и в неё входят пользователи mdw и larry. Напомним, что в файле /etc/passwd каждому пользователю определена его группа по умолчанию. Тем не менее, пользователи могут принадлежать к более чем одной группе, и это осуществляется посредством перечисления их имён в файле /etc/group . Команда groups перечисляет список групп, к которым относится (имеет доступ) данный пользователь.

Третья группа называется guest и предназначена для посетителей. Для прочих пользователей создана группа other ; в эту группу занесён пользователь kiwi .

Иногда в файле /etc/group заполняется поле password (пароль) для того, чтобы установить пароль на групповой доступ. Это требуется редко. Для того, чтобы не позволять пользователям проникать в привилегированные группы (командой newgroup), в это поле надо поставить символ * .

Для создания новых групп пользователей могут быть использованы команды addgroup или groupadd . Обычно легче внести вручную новую строчку в файл /etc/group , поскольку никакого другого конфигурирования не требуется. Для удаления группы можно просто удалить соответствующую строчку в файле /etc/group .

Все, что вам нужно знать о UID в Linux

Все, что вам нужно знать о UID в Linux

Эта статья по основам Linux научит вас всему важному, связанному с UID в Linux.

Что такое UID в Linux?

UID обозначает идентификатор пользователя. UID — это номер, назначенный каждому пользователю Linux. Это представление пользователя в ядре Linux.

UID используется для идентификации пользователя в системе и для определения того, к каким системным ресурсам пользователь может получить доступ. Вот почему идентификатор пользователя должен быть уникальным.

Вы можете найти UID в файле /etc/passwd. Это тот же файл, который можно использовать для составления списка всех пользователей в системе Linux.

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

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 sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin andreyex:x:1000:1000:Andrey. /home/helder:/bin/bash davmail:x:127:65534::/var/lib/davmail:/usr/sbin/nologin statd:x:128:65534::/var/lib/nfs:/usr/sbin/nologin

Третье поле здесь представляет идентификатор пользователя или UID.

Обратите внимание, что в большинстве дистрибутивов Linux UID 1-500 обычно зарезервирован для системных пользователей. В Ubuntu и Fedora UID для новых пользователей начинаются с 1000.

Например, если вы используете команду useradd или adduser для создания нового пользователя, он получит следующий доступный номер после 1000 в качестве своего UID.

Как найти UID пользователя в Linux?

Вы всегда можете положиться на файл /etc/passwd, чтобы получить UID пользователя. Это не единственный способ получить информацию UID в Linux.

Команда id в Linux отобразит UID, GID и группы, к которым принадлежит ваш текущий пользователь:

id uid=1000(andreyex) gid=1000(andreyex) groups=1000(andreyex),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare),127(kvm)

Вы также можете указать имена пользователей с помощью команды id, чтобы получить UID любого пользователя Linux:

id standard uid=1001(standard) gid=1001(standard) groups=1001(standard)

Как изменить UID пользователя в Linux?

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

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

usermod -u 1004 user_2

Вы должны иметь привилегию суперпользователя для выполнения вышеуказанной команды.

Вы помните концепцию прав доступа и владения файлами в Linux? Право собственности на файл определяется UID пользователя-владельца.

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

Что вы можете сделать, это вручную обновить владельца файлов, связанных со старым UID пользователя_2.

find / -user old_uid_of_user_2 -exec chown -h user_2 <> \;

Вот и все. Мы надеемся, что теперь у вас есть лучшее представление об UID в Linux. Не стесняйтесь задавать свои вопросы, если таковые имеются.

Как профессиональный пользователь Linux, если вы думаете, что мы пропустили какое-то важное понятие об UID, пожалуйста, дайте мне знать в разделе комментариев.

Права, пользователи и прочее в Linux (часть 2)

Права, пользователи и прочее в Linux (часть 2)

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

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

Что такое пользователи?

По факту это любой кто использует компьютер. Имя пользователя это как правило его псевдоним, логин, который может состоять из букв Eng алфавита, арабских чисел и нижнего подчеркивания. Использовать можно любое имя кроме root, hal и adm, так как эти имена являются зарезервированными системой именами. Кроме логина в системе может храниться и полное имя реального пользователя, что иногда, при администрировании бывает полезным.

Что имеет каждый пользователь в linux системе?

  1. домашняя папка — для каждого пользователя создается своя домашняя директория в директории /home. Там могут храниться все его личные данные;
  2. командная оболочка — каждый пользователь имеет свою командную оболочку (командный интерпретатор), например /bin/bash, bin/sh и другие. (по умолчанию, как правило, используется /bin/bash)
  3. личный идентификатор (User ID) — каждый пользователь нумеруется, чтобы система могла отслеживать его, ибо она это делает только по uid пользователя
  4. пароль — естественно, каждый пользователь имеет свой пароль, которых храниться в зашифрованном виде (encripted)
  5. группа — и каждый пользователь может находиться в одной или более группе, о них мы поговорим немного подробнее..

Что такое группы?

Чтобы администраторам было проще разделять полномочия между пользователями, в Linux системах существуют группы, поэтому для каждого файла в linux системе определяется не только пользователь но и группа. По факту группы нужны для того, чтобы предоставить одинаковые полномочия на файлы или какие-нибудь действия. И опять же, каждая группа имеет свой уникальный идентификатор — GID (GroupID)

Как узнать, какие пользователи есть в системе?

Информация о пользователях храниться в файле /etc/passwd в виде строк, одна строка — это один пользователь, и эта строка имеет следующий формат:

account:password:UID:GID:GECOS:directory:shell

а расшифровывается она следующим образом:

  • account — логин пользователя
  • password — зашифрованный пароль пользователя
  • UID — id пользователя (uid создается более 1000)
  • GID — id основной группы (gid создается более 100)
  • GECOS — дополнительная информация о пользователе (не обязательно)
  • directory — домашний каталог ($HOME) пользователя
  • shell — командный интерпретатор пользователя (обычно /bin/sh)

Чтобы посмотреть какие пользователи существуют в системе, достаточно набрать следующую команду:

cat /etc/passwd

Ну и никто не запрещает посмотреть активных в данный момент пользователей:

lolosh@lolopc:~$ who leo tty1 2015-07-29 20:07 leo :0 2015-07-26 22:38 (:0)

Создание пользователя

При создании пользователя, нужно выполнить ряд следующих действий:

  1. создается запись в /etc/passwd
  2. создается домашний каталог пользователя (/home/username)
  3. устанавливаются необходимые права
  4. назначается необходимая командная оболочка
  5. модифицируются конфигурационные файлы прочих приложений

Чтобы как то упростить жизнь администраторам, существует специальная утилита useradd. Настройки этой утилиты хранятся в файле /etc/default/useradd, в котором можно изменить применяемые новым пользователям параметры по умолчанию.

Чтобы создать нового пользователя lolosh в группе users и lalki достаточно набрать следующую команду:

useradd -m -g users -G video,lalki -s /bin/bash lolosh

расшифровывается эта команда следующим образом:

useradd -m -g [основная группа] -G [список дополнительных групп] -s [командный интерпретатор] [имя пользователя]

Что означают эти ключи:

  • m — создаёт домашний каталог, вида /home/[имя пользователя]
  • -g — имя или номер основной группы пользователя
  • -G — список дополнительных групп, в которые входит пользователь
  • -s — определяет командную оболочку пользователя.

Подробнее узнать о том, что умеет эта утилита можно почитать в man страницах.

man useradd

useradd(8) Команды управления системой useradd(8) НАЗВАНИЕ useradd - регистрирует нового пользователя или изменяет информацию по умолчанию о новых пользователях СИНТАКСИС useradd [параметры] УЧЁТНАЯ_ЗАПИСЬ useradd -D useradd -D [параметры] ОПИСАНИЕ useradd is a low level utility for adding users. On Debian, administrators should usually use adduser(8) instead. При запуске без параметра -D команда useradd создаёт новую учётную запись пользователя, используя значения из командной строки и системные значения по умолчанию. В зависимости от параметров командной строки, команда useradd обновляет системные файлы, а также может создать домашний каталог нового пользователя и скопировать начальные файлы настроек. По умолчанию, для нового пользователя также создаётся группа (смотрите параметры -g, -N, -U и USERGROUPS_ENAB). ПАРАМЕТРЫ Параметры команды useradd: -b, --base-dir БАЗОВЫЙ_КАТАЛОГ Базовый системный каталог по умолчанию, если другой каталог не указан с помощью параметра -d. Значение БАЗОВЫЙ_КАТАЛОГ объединяется с именем учётной записи для определения домашнего каталога. Если не указан параметр -m, то БАЗОВЫЙ_КАТАЛОГ должен существовать. Если этот параметр не задан, то команда useradd будет использовать базовый каталог, указанный в переменной HOME в файле /etc/default/useradd иначе /home (по умолчанию). -c, --comment КОММЕНТАРИЙ Любая текстовая строка. Обычно, здесь коротко описывается учётная запись, и в настоящее время используется как поле для имени и фамилии пользователя. -d, --home ДОМАШНИЙ_КАТАЛОГ Для создаваемого пользователя будет использован каталог ДОМАШНИЙ_КАТАЛОГ в качестве начального каталога. По умолчанию, это значение получается объединением ИМЕНИ пользователя с БАЗОВЫМ_КАТАЛОГОМ и используется как имя домашнего каталога. Каталог ДОМАШНИЙ_КАТАЛОГ необязательно должен существовать, но не будет создан, если его нет. -D, --defaults Смотрите далее в подразделе «Изменение значений по умолчанию». -e, --expiredate ДАТА_УСТАРЕВАНИЯ Дата, когда учётная запись пользователя будет заблокирована. Дата задаётся в формате ГГГГ-ММ-ДД. Если этот параметр не задан, то команда useradd будет использовать дату устаревания по умолчанию, указанную в переменной EXPIRE в файле /etc/default/useradd, иначе пустую строку (без устаревания, по умолчанию). -f, --inactive ДНЕЙ Если указано значение 0, то учётная запись блокируется сразу после устаревания пароля, а при значении -1 данная возможность не используется. Если этот параметр не задан, то команда useradd будет использовать срок неактивности по умолчанию, указанный в переменной INACTIVE в файле /etc/default/useradd или -1 (по умолчанию). -g, --gid ГРУППА Имя или числовой идентификатор первичной группы пользователя. Группа с таким именем должна существовать. Идентификатор группы должен указывать на уже существующую группу. Если не указан, то поведение useradd зависит от переменной USERGROUPS_ENAB в файле /etc/login.defs. Если значение этой переменной равно yes (или в командной строке указан параметр -U/--user-group), то для пользователя будет создана группа с тем же именем как его имя для входа. Если значение переменной равно no (или в командной строке указан параметр -N/--no-user-group), то useradd установит первичную группу нового пользователя равной значению переменной GROUP из файла /etc/default/useradd, или 100 (по умолчанию). -G, --groups ГРУППА1[,ГРУППА2. [,ГРУППАN]]] Список дополнительных групп, в которых числится пользователь. Перечисление групп осуществляется через запятую, без промежуточных пробелов. На указанные группы действуют те же ограничения, что и для группы указанной в параметре -g. По умолчанию пользователь входит только в начальную группу. -h, --help Показать краткую справку и закончить работу. -k, --skel КАТАЛОГ_ШАБЛОНОВ Каталог с шаблонами, который содержит файлы и каталоги для копирования в домашний каталог пользователя при создании домашнего каталога командой useradd. Этот параметр можно использовать только с параметром -m (или --create-home). Если этот параметр не задан, то каталог шаблонов определяется переменной SKEL из файла /etc/default/useradd, или равен /etc/skel (по умолчанию). Если возможно, выполняется копирование ACL и расширенных атрибутов. -K, --key КЛЮЧ=ЗНАЧЕНИЕ Заменяет значения по умолчанию из файла /etc/login.defs (UID_MIN, UID_MAX, UMASK, PASS_MAX_DAYS и других). Пример: -K PASS_MAX_DAYS=-1 можно использовать при создании системной учётной записи, чтобы выключить устаревание пароля, даже если системная учётная запись вообще не имеет пароля. Можно указывать параметр -K несколько раз, например: -K UID_MIN=100 -K UID_MAX=499 -l, --no-log-init Не добавлять пользователя в базы данных lastlog и faillog. По умолчанию, записи пользователя в базах данных lastlog и faillog сбрасываются во избежание повторного использования записи, оставшейся от ранее удалённого пользователя. For the compatibility with previous Debian's useradd, the -O option is also supported. -m, --create-home Создать домашний каталог пользователя, если он не существует. Файлы и каталоги, содержащиеся в каталоге шаблонов (который можно указать с помощью параметра the -k option), будут скопированы в домашний каталог. По умолчанию, если этот параметр не указан и не задана переменная CREATE_HOME, домашний каталог не создаётся. -M Не создавать домашний каталог пользователя, даже если значение системной переменной в файле /etc/login.defs (CREATE_HOME) равно yes. -N, --no-user-group Не создавать группу с тем же именем как у пользователя, но добавить пользователя в группу, заданную параметром -g или переменной GROUP из файла /etc/default/useradd. Поведение по умолчанию (если не указан параметр -g, -N и -U) определяется переменной USERGROUPS_ENAB из файла /etc/login.defs. -o, --non-unique Разрешить создание учётной записи с уже имеющимся (не уникальным) UID. Этот параметр можно использовать только с параметром -u. -p, --password ПАРОЛЬ Шифрованное значение пароля, которое возвращает функция crypt(3). По умолчанию пароль отключён. Замечание: Этот параметр использовать не рекомендуется, так как пароль (или не шифрованный пароль) будет видим другими пользователям в списке процессов. Вы должны проверить, что пароль соответствует политике системных паролей. -r, --system Создать системную учётную запись. Системные пользователи создаются без информации об устаревании в /etc/shadow, и их числовые идентификаторы выбираются из диапазона SYS_UID_MIN-SYS_UID_MAX, определённого в /etc/login.defs, а не из UID_MIN-UID_MAX (это же касается и части с GID при создании групп). Заметим, что useradd не создаёт домашний каталог для данного пользователя независимо от значения по умолчанию в /etc/login.defs (CREATE_HOME). Если вы хотите создать домашний каталог для системной учётной записи укажите параметр -m. -R, --root КАТ_CHROOT Выполнить изменения в каталоге КАТ_CHROOT и использовать файлы настройки из каталога КАТ_CHROOT. -s, --shell ОБОЛОЧКА Имя регистрационной оболочки пользователя. По умолчанию это поле пусто, что вызывает выбор регистрационной оболочки по умолчанию согласно значению переменной SHELL из файла /etc/default/useradd, или по умолчанию используется пустая строка. -u, --uid UID Числовое значение идентификатора пользователя (ID). Оно должно быть уникальным, если не используется параметр -o. Значение должно быть неотрицательным. По умолчанию используется наименьшее значение ID большее или равное UID_MIN и большее чем у остальных пользователей. Смотрите также описание -r и UID_MAX. -U, --user-group Создать группу с тем же именем что и у пользователя, и добавить пользователя в эту группу. Поведение по умолчанию (если не указан параметр -g, -N и -U) определяется переменной USERGROUPS_ENAB из файла /etc/login.defs. -Z, --selinux-user SEUSER Пользователь SELinux для регистрационной оболочки пользователя. По умолчанию это поле пусто, что заставляет систему выбрать пользователя SELinux по умолчанию. Изменение значений по умолчанию При запуске программы только с параметром -D команда useradd показывает текущие значения по умолчанию. Если программа запускается с параметром -D вместе с другими параметрами, то useradd обновляет значения по умолчанию этих указанных параметров. Изменяемые параметры: -b, --base-dir БАЗОВЫЙ_КАТАЛОГ Начальная часть пути нового домашнего каталога пользователя. Имя пользователя будет добавлено в конец ДОМАШНЕГО_КАТАЛОГА для создания имени нового каталога, если при создании новой учётной записи не указан параметр -d. Этот параметр изменяет переменную HOME в файле /etc/default/useradd. -e, --expiredate ДАТА_УСТАРЕВАНИЯ Дата, когда учётная запись пользователя заблокирована. Этот параметр изменяет переменную EXPIRE в файле /etc/default/useradd. -f, --inactive ДНЕЙ Число дней, которые должны пройти после устаревания пароля, перед тем как учётная запись будет заблокирована. Этот параметр изменяет переменную INACTIVE в файле /etc/default/useradd. -g, --gid ГРУППА Имя группы или ID новой первичной группы пользователя (если используется -N/--no-user-group или когда значение переменной USERGROUPS_ENAB равно no (файл /etc/login.defs). Группа с указанным именем должна существовать, а для числового идентификатора группы должна быть соответствующая запись. Этот параметр изменяет переменную GROUP в файле /etc/default/useradd. -s, --shell ОБОЛОЧКА Имя новой регистрационной командной оболочки пользователя. Этот параметр изменяет переменную SHELL в файле /etc/default/useradd. ЗАМЕЧАНИЯ Системный администратор сам решает, какие файлы нужно положить в каталог /etc/skel/ (или в любой другой каталог шаблонов, указанный в /etc/default/useradd или в командной строке). ПРЕДОСТЕРЕЖЕНИЯ Нельзя добавить пользователя в группу NIS или LDAP. Это необходимо делать на соответствующем сервере. Также, если имя пользователя уже существует во внешней базе данных такой как NIS или LDAP, то useradd не станет создавать учётную запись пользователя. It is usually recommended to only use usernames that begin with a lower case letter or an underscore, followed by lower case letters, digits, underscores, or dashes. They can end with a dollar sign. In regular expression terms: [a-z_][a-z0-9_-]*[$]? On Debian, the only constraints are that usernames must neither start with a dash ('-') nor plus ('+') nor tilde ('~') nor contain a colon (':'), a comma (','), or a whitespace (space: ' ', end of line: '\n', tabulation: '\t', etc.). Note that using a slash ('/') may break the default algorithm for the definition of the user's home directory. Имена пользователей могут быть длиной не более 32 знаков. НАСТРОЙКА На работу этого инструмента влияют следующие переменные настройки из /etc/login.defs: CREATE_HOME (логический) Определяет, должен ли создаваться по умолчанию домашний каталог для новых пользователей. Эта переменная не влияет на системных пользователей и может быть переопределена из командной строки. GID_MAX (число), GID_MIN (число) Диапазон идентификаторов групп, используемый в программах useradd, groupadd или newusers для создания обычных групп. Значение по умолчанию для GID_MIN (соотв. GID_MAX) равно 1000 (соотв. 60000). MAIL_DIR (строка) Почтовый каталог. Данный параметр нужен для управления почтовым ящиком при изменении или удалении учётной записи пользователя. Если параметр не задан, то используется значение указанное при сборке. MAIL_FILE (строка) Определяет расположение почтовых файлов пользователя относительно домашнего каталога. Переменные MAIL_DIR и MAIL_FILE используются командами useradd, usermod и userdel для создания, перемещения или удаления почты пользователя. MAX_MEMBERS_PER_GROUP (число) Максимальное количество членов в записи о группе. При достижения максимума заводится новая запись группы (строка) в /etc/group (с тем же именем, паролем и тем же GID). Значение по умолчанию равно 0, означающее, что ограничения на количество членов в группе нет. Данная возможность (разделение группы) позволяет ограничить длину строк в файле групп. Это полезно для ограничения длины строк групп NIS в 1024 символа. Если вам нужно такое ограничение, укажите значение 25. Замечание: разделение групп поддерживается не всеми инструментами (даже в наборе инструментов Shadow). Вы не должны использовать эту переменную, если вам действительно это ненужно. PASS_MAX_DAYS (число) Максимальное число дней использования пароля. Если пароль старее этого числа, то будет запущена процедура смены пароля. Если значение не задано, то предполагается значение -1 (то есть возможность ограничения не используется). PASS_MIN_DAYS (число) Максимальное число дней между изменениями пароля. Любая смена пароля ранее заданного срока выполнена не будет. Если значение не задано, то предполагается значение -1 (то есть возможность ограничения не используется). PASS_WARN_AGE (число) Число дней за которое начнёт выдаваться предупреждение об устаревании пароля. Нулевое значение означает, что предупреждение выдаётся в день устаревания, при отрицательном значении предупреждение выдаваться не будет. Если значение не задано, выдача предупреждения отключается. SYS_GID_MAX (число), SYS_GID_MIN (число) Диапазон идентификаторов групп, используемый в программах useradd, groupadd или newusers для создания системных групп. Значение по умолчанию для SYS_GID_MIN (соотв.SYS_GID_MAX) равно 101 (соотв. GID_MIN-1). SYS_UID_MAX (число), SYS_UID_MIN (число) Диапазон идентификаторов пользователей, используемый в программах useradd или newusers для создания системных пользователей. Значение по умолчанию для SYS_UID_MIN (соотв. SYS_UID_MAX) равно 101 (соотв. UID_MIN-1). UID_MAX (число), UID_MIN (число) Диапазон идентификаторов пользователей, используемый в программах useradd или newusers для создания обычных пользователей. UMASK (число) Задаёт начальное значение маски доступа для создаваемых файлов. Если не указано, то маска устанавливается в 022. Команды useradd и newusers используют эту маску для установки прав доступа к домашнему каталогу, который они создают. Она также используется командой pam_umask как значение umask по умолчанию. USERGROUPS_ENAB (логический) Если значение равно yes, то userdel удаляет пользовательскую группу, если в ней нет больше членов, а useradd по умолчанию создаёт группу с именем пользователя. ФАЙЛЫ /etc/passwd содержит информацию о пользователях /etc/shadow содержит защищаемую информацию о пользователях /etc/group содержит информацию о группах /etc/gshadow содержит защищаемую информацию о группах /etc/default/useradd значения по умолчанию для создаваемой учётной записи /etc/skel/ каталог, содержащий файлы по умолчанию /etc/login.defs содержит конфигурацию подсистемы теневых паролей ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ Команда useradd завершая работу, возвращает следующие значения: 0 успешное выполнение 1 не удалось изменить файл паролей 2 ошибка в параметрах команды 3 недопустимое значение параметра 4 такой UID уже существует (и не задан параметр -o) 6 указанная группа не существует 9 имя пользователя уже существует 10 не удалось изменить файл групп 12 не удалось создать домашний каталог 14 can't update SELinux user mapping СМОТРИТЕ ТАКЖЕ chfn(1), chsh(1), passwd(1), crypt(3), groupadd(8), groupdel(8), groupmod(8), login.defs(5), newusers(8), userdel(8), usermod(8).

Добавление и изменение дополнительной информации

Для того, чтобы наделить пользователя дополнительной информацией, можно воспользоваться командой chfn. Рассмотрим что мы можем добавить:

chfn [-f ФИО][-о служба сопровождения ИС][-p служебный контакт][-h домашний контакт][-u][-v][логин_пользователя]

Подробнее, о возможностях этой команды читайте man.

chfn(1) Пользовательские команды chfn(1) НАЗВАНИЕ chfn - изменяет информацию о пользователе СИНТАКСИС chfn [параметры] [УЧЁТНАЯ_ЗАПИСЬ] ОПИСАНИЕ Программа chfn изменяет ФИО, рабочий телефон, рабочий номер комнаты, рабочий и домашний номер телефона для учётной записи пользователя. Обычно, эти данные выводятся командой finger(1) и ей подобными программами. Обычный пользователь может изменить только определённые данные собственной учётной записи, разрешённые в файле /etc/login.defs (настройкой по умолчанию пользователю не разрешается менять своё имя и фамилию). Суперпользователь может изменять любые данные любой учётной записи. Кроме того, только суперпользователь может использовать параметр -o для изменения нестандартизованной части данных GECOS. Части поля GECOS не должны содержать двоеточий. За исключением части другая, в них не должно содержаться запятых и знаков равно. Также рекомендуется избегать символов не в кодировке US-ASCII, но это касается только номеров телефонов. Часть другая используется для хранения информации об учётной записи, которая используется другими приложениями. ПАРАМЕТРЫ Параметры команды chfn: -f, --full-nameФИО Изменяет ФИО пользователя. -h, --home-phoneДОМАШНИЙ_ТЕЛЕФОН Изменяет номер домашнего телефона пользователя. -o, --otherДРУГАЯ Изменяет другую информацию GECOS о пользователе. Эта часть используется для хранения информации об учётной записи, используемой другими приложениями, и может изменяться только суперпользователем. -r, --roomНОМЕР_КОМНАТЫ Изменяет номер комнаты пользователя. -R, --root КАТ_CHROOT Выполнить изменения в каталоге КАТ_CHROOT и использовать файлы настройки из каталога КАТ_CHROOT. -u, --help Показать краткую справку и закончить работу. -w, --work-phoneРАБОЧИЙ_ТЕЛЕФОН Изменяет номер рабочего телефона пользователя. Если ни один параметр не указан, то chfn переходит в интерактивный режим, предлагая запустившему пользователю изменить данные своей учётной записи. Вводимое значение заменяет текущее значение записи; если введена пустая строка, то текущее значение остаётся неизменным. Текущее значение показано в скобках [ ]. При вызове без параметров программа chfn изменяет учётную запись запустившего пользователя. НАСТРОЙКА На работу этого инструмента влияют следующие переменные настройки из /etc/login.defs: CHFN_RESTRICT (строка) Этим параметром определяются части поля gecos в файле /etc/passwd, которые могут изменять обычные пользователи с помощью программы chfn. Строка может содержать любую комбинацию букв f, r, w, h для изменения полного имени пользователя, номера комнаты, рабочего и домашнего телефона, соответственно. Для совместимости значение yes эквивалентно rwh и no эквивалентно frwh. Если ничего не задано, то только суперпользователь может выполнять любые изменения. Наиболее ограничительная настройка достигается снятием SUID бита с файла chfn. ФАЙЛЫ /etc/login.defs содержит конфигурацию подсистемы теневых паролей /etc/passwd содержит информацию о пользователях СМОТРИТЕ ТАКЖЕ chsh(1), login.defs(5), passwd(5).

Задаем или изменяем пароль

Для того, чтобы задать пользователю пароль, достаточно воспользоваться следующей командой:

passwd имя_пользователя

далее программа дважды попросит ввести новый пароль.

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

chage -d 0 имя_пользователя

Так же еще можно установить срок годности учетной записи и многое другое, подробно можно почитать man.

chage(1) Пользовательские команды chage(1) НАЗВАНИЕ chage - изменяет информацию об устаревании пароля пользователя СИНТАКСИС chage [параметры] УЧЁТНАЯ_ЗАПИСЬ ОПИСАНИЕ Программа chage изменяет количество дней между датой смены пароля и датой последней смены пароля. Эта информация используется системой для определения момента, когда пользователь должен сменить свой пароль. ПАРАМЕТРЫ Параметры команды chage: -d, --lastday ПОСЛ_ДЕНЬ Установить число дней прошедших с 1 января 1970 года, когда была последняя смена пароля. Дата может быть также указана в виде ГГГГ-ММ-ДД (или в форме согласно региональным настройкам). -E, --expiredate ДАТА_УСТАРЕВАНИЯ Установить дату устаревания учётной записи пользователя, которая задаётся числом дней прошедших с 1 января 1970 года. Дата может быть также задана в виде ГГГГ-ММ-ДД (или в форме согласно региональным настройкам). Пользователь, чья учётная запись была заблокирована, должен обратиться к системному администратору, если хочет в дальнейшем работать с системой. Значение -1 в параметре ДАТА_УСТАРЕВАНИЯ отменяет устаревание учётной записи. -h, --help Показать краткую справку и закончить работу. -I, --inactive ДНЕЙ Установить количество дней неактивности после устаревания пароля перед тем как учётная запись будет заблокирована. В параметре ДНЕЙ задаётся количество дней неактивности. Пользователь, чья учётная запись была заблокирована, должен обратиться к системному администратору, если хочет в дальнейшем работать с системой. Значение -1 в параметре ДНЕЙ отменяет неактивность учётной записи. -l, --list Показать информацию об устаревании учётной записи. -m, --mindays МИН_ДНЕЙ Задать минимальное количество дней между сменами пароля. Нулевое значение этого поля указывает на то, что пользователь может менять свой пароль когда захочет. -M, --maxdays МАКС_ДНЕЙ Установить максимальное количество дней работоспособности пароля. Если сумма значений МАКС_ДНЕЙ и ПОСЛ_ДЕНЬ раньше текущего дня, то пользователю придётся изменить свой пароль перед использованием учётной записи. Для того, чтобы это не было неожиданностью можно воспользоваться параметром -W, который активирует выдачу предупреждения о смене пароля пользователя заранее. Значение -1 в параметре МАКС_ДНЕЙ отменяет проверку пароля. -R, --root КАТ_CHROOT Выполнить изменения в каталоге КАТ_CHROOT и использовать файлы настройки из каталога КАТ_CHROOT. -W, --warndays ПРЕДУП_ДНЕЙ Установить количество дней выдачи предупреждения, перед тем как потребуется смена пароля. Параметр ПРЕДУП_ДНЕЙ считается в днях, в течении которых пользователь будет получать предупреждение об устаревании пароля, перед тем как это случится. Если ни один параметр не указан, то chage переходит в интерактивный режим, предлагая запустившему пользователю изменить значения всех полей своей учётной записи. Вводимое значение заменяет текущее значение поля; если введена пустая строка, то текущее значение остаётся неизменным. Текущее значение показано в скобках [ ]. ЗАМЕЧАНИЕ Программа chage требует наличия файла теневых паролей. Программа chage работает только от суперпользователя, за исключением вызова с параметром -l, который может использоваться непривилегированным пользователем для определения даты устаревания своего пароля. НАСТРОЙКА На работу этого инструмента влияют следующие переменные настройки из /etc/login.defs: ФАЙЛЫ /etc/passwd содержит информацию о пользователях /etc/shadow содержит защищаемую информацию о пользователях ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ Программа chage завершая работу, возвращает следующие значения: 0 успешное выполнение 1 доступ запрещён 2 ошибка в параметрах команды 15 не удалось найти файл теневых паролей СМОТРИТЕ ТАКЖЕ passwd(5), shadow(5).

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

Удалить пользователя можно следующей командой:

userdel -r имя_пользователя

Обратите внимание, с указанным ключом -r удаляется и его домашняя директория.

Управление группами

Тут так же нет ничего сложного. Чтобы просмотреть список существующих групп, достаточно отобразить файл /etc/group:

cat /etc/group

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

groups имя_пользователя

и более подробным выводом:

id имя_пользователя

Чтобы создать новую группу, введите следующее:

groupadd имя_группы

Для добавления пользователя в эту группу, достаточно ввести:

gpasswd -a имя_пользователя имя_группы

Чтобы убрать из группы пользователя, достаточно ввести

gpasswd -d имя_пользователя имя_группы

Для удаления группы из системы, можно ввести следующее:

groupdel имя_группы

На этом, пожалуй, все. Если есть чем дополнить, то пишите комментарии.

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

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

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

В Linux есть два способа взглянуть на безопасность системы. Есть привилегированные пользователи, и есть непривилегированные пользователи. Привилегированный пользователь по умолчанию — root. Эта учетная запись пользователя имеет полный доступ ко всему на сервере Linux и может работать в системном пространстве без ограничений. Учетная запись пользователя root предназначена для выполнения задач системного администрирования и должна использоваться только для этого. Для всех других задач следует использовать непривилегированную учетную запись пользователя.

Чтобы получить информацию об учетной записи пользователя, вы можете использовать команду id. При использовании этой команды из командной строки вы можете увидеть подробности о текущем пользователе.

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

Ниже показан пример вывода команды.

[root@localhost ~]# id user uid=1001(user) gid=1001(user) groups=1001(user)

Работая как root

Во всех системах Linux по умолчанию присутствует пользователь root, также известный как суперпользователь. Эта учетная запись используется для управления Linux. Root, например, может создавать другие учетные записи пользователей в системе. Для некоторых задач требуются права суперпользователя. Некоторые примеры — установка программного обеспечения, управление пользователями и создание разделов на дисковых устройствах. Вообще говоря, для всех задач, связанных с прямым доступом к устройствам, требуются права суперпользователя.

Поскольку учетная запись root очень полезна для управления средой Linux, некоторые люди имеют привычку входить в систему как root напрямую. Это не рекомендуется, особенно если вы входите в графическую среду. Когда вы входите в систему как пользователь root в графической среде, все выполняемые задачи также выполняются как пользователь root, что создает ненужную угрозу безопасности. Поэтому вы должны вместо этого использовать один из следующих альтернативных методов. В таблице представлен обзор этих методов.

Использование su

Команда su позволяет пользователям открывать окно терминала и с этого терминала запускать вспомогательную оболочку, в которой у пользователя есть другой идентификатор. Например, для выполнения административных задач вы можете войти в систему с учетной записью обычного пользователя и набрать su, чтобы открыть root-оболочку. Это приносит то преимущество, что только в root-оболочке используются root-привилегии.

Если набрана только команда su, подразумевается имя пользователя root. Но su можно использовать для запуска задач от имени другого пользователя. Например, введите su user, чтобы открыть подоболочку от имени пользователя user. При использовании su в качестве обычного пользователя вам будет предложено ввести пароль, и после ввода вы получите учетные данные целевого пользователя:

[user@localhost ~]$ su Password: [root@localhost user]#

При использовании su запускается вложенная оболочка. Это среда, в которой вы можете работать как целевая учетная запись пользователя, но параметры среды для этой учетной записи не установлены. Если вам нужен полный доступ ко всей среде целевой учетной записи пользователя, вы можете использовать su — для запуска оболочки входа. Если вы запустите оболочку входа в систему, все сценарии, составляющие пользовательскую среду, будут обработаны, что заставит вас работать в среде, точно такой же, как при входе в систему от имени этого пользователя.

Использование sudo

Вместо использования учетной записи root, непривилегированные пользователи могут быть настроены на использование разрешений администратора для определенных задач с помощью sudo. Когда sudo настроен, обычные пользователи имеют привилегии sudo, и для использования этих привилегий они запускают команду с помощью sudo. Таким образом, вместо использования таких команд, как useradd в качестве пользователя root, вы используете обычную учетную запись пользователя и набираете sudo useradd. Это определенно более безопасно, потому что вы сможете действовать так, как если бы у вас были права администратора при выполнении этой конкретной команды.

  1. Сделайте административную учетную запись членом группы wheel с помощью usermod -aG wheel user.
  2. Введите visudo и убедитесь, что строка %wheel ALL=(ALL) ALL включена.

PolicyKit

Большинство программ администрирования с графическим интерфейсом пользователя используют PolicyKit для аутентификации в качестве пользователя root. Если обычный пользователь не входит в группу доступа wheel, ему будет предложено пройти аутентификацию. Если он входит в группу wheel, откроется приложение PolicyKit.

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

  1. Войдите в систему под обычным пользователем;
  2. Введите whoami, чтобы увидеть, какую учетную запись вы используете в данный момент. Также введите id и обратите внимание, что вы получаете больше информации о ваших текущих учетных данных при использовании id;
  3. Наберите su. При запросе пароля введите пароль root. Введите id еще раз. Вы видите, что вы в настоящее время root;
  4. Введите visudo и убедитесь, что строка %wheel ALL=(ALL) ALL включена;
  5. Введите useradd -G wheel user, чтобы создать пользователя user, который является членом группы wheel;
  6. Введите id user, чтобы убедиться, что он добавлен в группу wheel;
  7. Установите пароль для User, введя passwd user. Введите пароль дважды;
  8. Выйдите из системы и войдите в систему как user;
  9. Наберите sudo useradd user1. Введите пароль при запросе. Вот вы и создали еще одного пользователя.

Управление аккаунтами пользователей

Теперь, когда вы знаете, как выполнять задачи как пользователь с правами администратора или без прав администратора, настало время научиться управлять учетными записями пользователей в Linux. В этом разделе вы узнаете, что в этом участвует.

Обычные и системные аккаунты

В типичной среде Linux существуют два типа учетных записей пользователей. Существуют учетные записи пользователей, которым необходимо работать на сервере и которым требуется ограниченный доступ к ресурсам на этом сервере. Эти учетные записи обычно имеют пароль, который используется для аутентификации пользователя в системе. Существуют также системные учетные записи, которые используются службами, которые предлагает сервер. Обе учетные записи пользователей имеют общие свойства, которые хранятся в файлах /etc/passwd и /etc/shadow. Ниже показано содержимое файла /etc/passwd.

ntp:x:38:38::/etc/ntp:/sbin/nologin chrony:x:994:993::/var/lib/chrony:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin gdm:x:42:42::/var/lib/gdm:/sbin/nologin gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin user:x:1000:1000:user:/home/user:/bin/bash

Как видите, для определения учетной записи пользователя в /etc/passwd используются разные поля. Поля отделены друг от друга двоеточием. Ниже приводится краткое изложение этих полей, а затем краткое описание их назначения.

Имя пользователя (Username): это уникальное имя для пользователя. Имена пользователей важны для соответствия пользователя его паролю, который хранится отдельно в /etc/shadow. В Linux в имени пользователя не должно быть пробелов.

Пароль: в старые времена второе поле /etc/passwd использовалось для хранения хеш-пароля пользователя. Поскольку файл /etc/passwd доступен для чтения всем для пользователей это создает угрозу безопасности, и по этой причине в современных системах Linux пароли хэшей хранятся в /etc/shadow.

UID: каждый пользователь имеет уникальный идентификатор пользователя (UID). Это числовой идентификатор. Именно UID действительно определяет, что может делать пользователь. Когда для пользователя установлены разрешения, UID сохраняется в метаданных файла (а не в имени пользователя). UID 0 зарезервирован для root, неограниченной учетной записи пользователя. Более низкие UID (обычно до 999) используются для системных учетных записей, а более высокие UID (по умолчанию от 1000) зарезервированы для людей, которым необходимо подключить каталог к серверу. Диапазон UID, которые используются для создания учетных записей обычных пользователей, задается в /etc/login.defs.

GID: в Linux каждый пользователь является членом хотя бы одной группы. Эта группа называется основной, и эта группа играет центральную роль в управлении разрешениями.

Поле комментариев (Comment field): поле комментариев, как можно догадаться, используется для добавления комментариев к учетным записям пользователей. Это поле является необязательным, но его можно использовать для описания того, для чего создается учетная запись пользователя. Некоторые утилиты, такие как устаревшая утилита finger, могут использоваться для получения информации из этого поля. Это поле также называется полем GECOS, которое обозначает General Electric Comprehensive Operating System и имело конкретную цель для определения рабочих мест в начале 1970-х годов, когда General Electric была еще важным производителем серверов.

Каталог (Directory): это начальный каталог, в который пользователь помещается после входа в систему, также называемый домашним каталогом. Если учетная запись пользователя используется человеком, именно здесь он будет хранить свои личные файлы и программы. Для системной учетной записи пользователя это среда, в которой служба может хранить нужные файлы во время работы.

Оболочка (Shell): это программа, которая запускается после успешного подключения пользователя к серверу. Для большинства пользователей это будет /bin/bash, оболочка Linux по умолчанию. Для системных учетных записей это обычно будет оболочка типа /sbin/nologin.
Команда /sbin/nologin — это специальная команда, которая молча запрещает доступ пользователям (чтобы гарантировать, что если случайно злоумышленник войдет на сервер, он не сможет получить доступ к оболочке). Вы можете создать файл с именем /etc/nologin.txt, который содержит сообщение, которое будет отображаться, когда пользователь, имеющий /sbin/nologin в качестве оболочки, попытается войти в систему.

Часть пользовательских свойств хранится в /etc/passwd, который только что обсуждался.
Другая часть конфигурации пользовательских свойств находится в /etc/shadow. Настройки в этом файле используются для определения срока действия пароля. Типичным для /etc/shadow является то, что никто, кроме суперпользователя root и процессов, запущенных с правами root, такими как механизмы аутентификации на сервере, не имеет разрешений для доступа к нему, что имеет смысл, так как содержит всю информацию, необходимую для подключения в систему.

Пример содержимого /etc/shadow.

[root@localhost ~]# tail -n 10 /etc/shadow ntp. 16420. chrony. 16420. abrt. 16420. pulse. 16420. gdm. 16420. gnome-initial-setup. 16420. postfix. 16420. sshd. 16420. tcpdump. 16420. user:$6$3VZbGx1djo6FfyZo$/Trg7Q.3foIsIFYxBm6UnHuxxBrxQxHDnDuZxgS.We/ MAuHn8HboBZzpaMD8gfm.fmlB/ML9LnuaT7CbwVXx31:16420:0:99999:7. 

Следующие поля определены в /etc/shadow:

Имя для входа: обратите внимание, что /etc/shadow не содержит никаких UID, а только имена пользователей. Это открывает возможность для нескольких пользователей использовать один и тот же UID, но разные пароли (что, кстати, не очень рекомендуется);

Зашифрованный пароль: в этом поле содержится все, что необходимо для безопасного хранения пароля;

Дни с 1 января 1970 года, когда пароль последний раз изменялся: многие вещи в Linux относятся к этой дате, которая в Linux считается началом дней. Это также упоминается как эпоха;

За несколько дней до того, как пароль может быть изменен: это позволяет системным администраторам использовать более строгую политику паролей, когда невозможно сразу вернуться к исходному паролю, если пароль был изменен. Обычно это поле имеет значение 0;

Дни, после которых пароль должен быть изменен: в этом поле указан максимальный срок действия паролей. Обратите внимание, что по умолчанию он установлен на 99 999 (около 273 лет);

За несколько дней до истечения срока действия пароля пользователь получает предупреждение: это поле используется для предупреждения пользователя о предстоящей смене пароля. Обратите внимание, что по умолчанию установлено значение 7 (даже если срок действия пароля установлен на 99 999 дней!);

Через несколько дней после истечения срока действия пароля эта учетная запись отключена: используйте это поле для принудительного изменения пароля. После истечения срока действия пароля пользователи больше не могут входить в систему;

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

Зарезервированное поле, которое когда-то было добавлено «для будущего использования»: это было давно; это поле, вероятно, никогда не будет использовано;

Большинством свойств пароля можно управлять с помощью команды passwd или chage, которые обсуждаются далее.

Создание пользователей

Существует множество решений для создания пользователей на сервере Linux. Для начала вы можете отредактировать содержимое файлов /etc/passwd и /etc/shadow напрямую (с риском сделать ошибку, из-за которой вход в систему невозможен для кого-либо; лучше просто этого не делать).

Также есть useradd. useradd — это утилита, которую вы должны использовать для создания пользователей.

Чтобы удалить пользователей, вы можете использовать команду userdel. Используйте userdel -r для удаления пользователя, включая всю пользовательскую среду.

Изменение файлов конфигурации

Для добавления учетных записей пользователей достаточно, чтобы одна строка была добавлена в /etc/passwd, а другая — в /etc/shadow, в которой определены учетная запись пользователя и все ее свойства. Это не рекомендуется. Сделав ошибку, вы можете испортить целостность файла и сделать регистрацию абсолютно невозможной для всех. Кроме того, могут возникнуть проблемы с блокировкой, если один администратор пытается изменить содержимое файла напрямую, а другой администратор хочет написать изменение с помощью какого-либо инструмента.

Если вы настаиваете на изменении файлов конфигурации напрямую, вам следует использовать vipw. Эта команда открывает интерфейс редактора для ваших файлов конфигурации и, что более важно, устанавливает соответствующие блокировки файлов конфигурации для предотвращения повреждения. Однако он не проверяет синтаксис, поэтому убедитесь, что вы знаете, что делаете, потому что, даже сделав опечатку, вы все равно можете серьезно испортить свой сервер. Если вы хотите использовать этот инструмент для изменения файла /etc/shadow, используйте vipw -s. Для редактирования содержимого файла /etc/group, в котором определены группы, существует аналогичная команда с именем vigr.

Приятно знать, что vipw и vigr существуют, но лучше не использовать эти утилиты или что-либо еще, что напрямую открывает файлы конфигурации пользователя и группы. Вместо этого используйте такие инструменты, как useradd и groupmod.

Использование useradd

Утилита useradd, вероятно, является наиболее распространенным инструментом в Linux для управления пользователями.
Это позволяет вам добавлять учетную запись пользователя из командной строки, используя множество ее параметров. Используйте, например, команду useradd -m -u 1201 -G sales,ops user, чтобы создать пользователя user, который является участником группы sales и ops с UID 1201, а также добавить домашний каталог в учетную запись пользователя.

Каталог home

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

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

Если при создании учетных записей пользователей вы также указываете своему серверу добавить домашний каталог (например, с помощью useradd -m), содержимое каталога «skeleton» копируется в домашний каталог пользователя. Каталог skeleton (каркас) — /etc/skel, и он содержит файлы, которые копируются в домашний каталог пользователя в момент создания этого каталога. Эти файлы также получат соответствующие разрешения, чтобы новый пользователь мог использовать их и получать к ним доступ.
По умолчанию каталог skeleton содержит в основном файлы конфигурации, которые определяют, как настраивается пользовательская среда. Если в вашей среде конкретные файлы должны присутствовать в домашних каталогах всех пользователей, вы должны позаботиться об этом, добавив файлы в каталог skeleton.

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

Для изменения свойств пользователя применяются те же правила, что и для создания учетных записей пользователей.
Вы можете работать непосредственно в файлах конфигурации с помощью vipw или использовать инструменты командной строки.
Конечная утилита командной строки для изменения пользовательских свойств — usermod. Его можно использовать для установки всех свойств пользователей, хранящихся в /etc/passwd и /etc/shadow, а также некоторых дополнительных задач, таких как управление членством в группе. Есть только одна задача, которую она не выполняет: установка паролей. Хотя в usermod есть опция -p, которая сообщает чтобы вы «использовали зашифрованный пароль для нового пароля», он ожидает, что вы выполните шифрование пароля перед добавлением учетной записи пользователя. Это не делает его особенно полезным. Если от имени пользователя root вы хотите изменить пароль пользователя, вам лучше использовать команду passwd.

Файлы конфигурации для управления пользователями по умолчанию

При работе с инструментами как useradd предполагаются некоторые значения по умолчанию. Эти значения по умолчанию установлены в двух файлах конфигурации: /etc/login.defs и /etc/default/useradd. Ниже показано содержимое /etc/default/useradd.

[root@localhost skel]# cat /etc/default/useradd # useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes

Как показано выше файл /etc/default/useradd содержит некоторые значения по умолчанию, которые применяются при использовании useradd.

В файле /etc/login.defs установлены различные переменные, связанные с логином. Этот файл используется различными командами и относится к настройке соответствующей среды для новых пользователей.

Список некоторых наиболее важных свойств, которые можно установить в /etc/login.defs:

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

ENV_PATH: определяет переменную $PATH, список каталогов, в которых следует искать исполняемые файлы после входа в систему.

PASS_MAX_DAYS, PASS_MIN_DAYS и PASS_WARN_AGE: определение свойств срока действия пароля по умолчанию при создании новых пользователей.

UID_MIN: первый UID, который будет использоваться при создании новых пользователей.

CREATE_HOME: указывает, следует ли создавать домашний каталог для новых пользователей.

USERGROUPS_ENAB: установите yes, чтобы создать личную группу для всех новых пользователей. Это означает, что у нового пользователя есть группа с тем же именем, что и пользователь, в качестве группы по умолчанию. Если установлено значение no, все пользователи становятся членами группы users.

Управление свойствами пароля

Вы узнали о свойствах пароля, которые можно установить в /etc/shadow. Вы можете использовать две команды для изменения этих свойств для пользователей: chage и passwd. Команды довольно просты. Например, команда passwd -n 30 -w 3 -x 90 user устанавливает для пароля пользователя user минимальный период использования 30 дней и срок его действия через 90 дней, когда за 3 дня до истечения срока действия генерируется предупреждение.

Многие из задач, которые можно выполнить с помощью passwd, можно выполнить и с помощью chage. Например, используйте chage -E 2019-12-31 user1, чтобы срок действия учетной записи пользователя user1 истек 31 декабря 2019 г.

Чтобы увидеть текущие настройки управления паролями, используйте chage –l.

linux:~ # chage -l user Last password change : Sep 24, 2019 Password expires : Dec 31, 2019 Password inactive : never Account expires : never Minimum number of days between password change : 30 Maximum number of days between password change : 90 Number of days of warning before password expir : 3

Создание пользовательской среды

Когда пользователь входит в систему, создается среда. Среда состоит из нескольких переменных, которые определяют, как используется пользовательская среда. Например, одной из таких переменных является переменная $PATH, которая определяет список каталогов, которые следует искать, когда пользователь вводит команду.

  • /etc/profile: используется для настроек по умолчанию для всех пользователей при запуске оболочки входа;
  • /etc/bashrc: используется для определения значений по умолчанию для всех пользователей при запуске подоболочки;
  • ~/.profile: специальные настройки для одного пользователя, применяемые при запуске оболочки входа;
  • ~/.bashrc: специальные настройки для одного пользователя, применяемые при запуске подоболочки.

В этом примере вы применяете общие решения для создания учетных записей пользователей.

1. Введите vim /etc/login.defs, чтобы открыть файл конфигурации /etc/login.defs, и измените несколько параметров, прежде чем приступить к настройке параметров файла. Найдите параметр CREATE_HOME и убедитесь, что он установлен на «yes». Также установите параметр USERGROUPS_ENAB на «no», что означает, что новый пользователь добавляется в группу с тем же именем, что и пользователь, и больше ничего;

2. Введите cd /etc/skel, чтобы перейти в каталог /etc/skell. Введите mkdir Pictures и mkdir Documents, чтобы добавить два каталога по умолчанию во все домашние каталоги пользователей. Также измените содержимое файла .bashrc, и вставьте строку export EDITOR=/usr/bin/vim, эта строка устанавливает редактор по умолчанию для инструментов, которые должны изменять текстовые файлы;

3. Введите useradd linda, чтобы создать учетную запись для пользователя linda. Затем введите id linda, чтобы убедиться, что linda является членом группы с именем linda и больше ничего. Также убедитесь, что каталоги Pictures и Documents были созданы в домашнем каталоге linda;

4. Используйте passwd linda, чтобы установить пароль для пользователя, которого вы только что создали;

5. Введите passwd -n 30 -w 3 -x 90 linda, чтобы изменить свойства пароля. Срок действия пароля истекает через 90 дней (-x 90). За три дня до истечения срока действия пользователь получит предупреждение (-w 3), и пароль должен быть использован не менее 30 дней, прежде чем (-n 30) его можно будет изменить;

6. Создайте еще несколько пользователей: lisa, lori и bob, используя for i in lisa lori bob; do useradd $i; done;

7. Введите grep lori /etc/passwd /etc/shadow/ etc/group. Это покажет, что пользователь lori создан во всех трех критических файлах, и подтверждает, что они были установлены правильно.

Создание и управление аккаунтами групп

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

Группы в Linux

Пользователи Linux могут быть членами двух разных типов групп. Во-первых, есть основная группа. Каждый пользователь должен быть членом основной группы, и существует только одна основная группа. При создании файлов основная группа становится владельцем группы этих файлов. Пользователи также могут получить доступ ко всем файлам, к которым имеет доступ их основная группа. Членство в основной группе пользователей определено в /etc/passwd; сама группа хранится в файле конфигурации /etc/group.

Помимо обязательной первичной группы пользователи также могут быть членами одной или нескольких вторичных групп. Вторичные группы важны для получения доступа к файлам. Если группа, в которую входит пользователь, имеет доступ к определенным файлам, пользователь также получит доступ к этим файлам. Работа со вторичными группами важна, особенно в средах, где Linux используется в качестве файлового сервера, чтобы люди, работающие в разных отделах, могли обмениваться файлами друг с другом.

Создание групп с помощью vigr или groupadd

Как и в случае с созданием пользователей, существуют также различные варианты создания групп.
Файлы конфигурации группы можно изменить напрямую, используя vigr или утилиту командной строки groupadd.

Создание групп с помощью vigr

С помощью команды vigr вы открываете интерфейс редактора непосредственно в файле конфигурации /etc/group. В этом файле группы определены в четырех полях на группу как показано ниже.

kvm:x:36:qemu qemu:x:107: libstoragemgmt:x:994: rpc:x:32: rpcuser:x:29: "/etc/group.edit" 65L, 870C
  • Имя группы: как следует из названия поля, оно содержит название группы.
  • Групповой пароль: функция, которая больше не используется. Групповой пароль может использоваться пользователями, которые хотят временно присоединиться к группе, поэтому доступ к файлам, к которым у группы есть доступ, разрешен.
  • ID группы: уникальный числовой идентификационный номер группы.
  • Участники: здесь вы найдете имена пользователей, которые являются членами этой группы в качестве дополнительной группы. Обратите внимание, что он не показывает пользователей, которые являются членами этой группы, в качестве основной группы.

Создание групп с помощью groupadd

Другой способ создания новых групп — использование команды groupadd. Эта команда проста в использовании. Просто используйте groupadd, за которым следует имя группы, которую вы хотите добавить. Существуют некоторые дополнительные параметры, единственным из которых является -g, который позволяет вам указать ID группы при создании группы.

Управление свойствами группы

Для управления свойствами группы доступен groupmod. Вы можете использовать эту команду для изменения имени или идентификатора группы, но она не позволяет добавлять членов группы. Для этого вы используете usermod. Как обсуждалось ранее, usermod -aG добавит пользователей в новые группы, которые будут использоваться в качестве их вторичной группы. Поскольку группа не имеет много свойств, довольно часто, что свойства группы управляются непосредственно в файле /etc/group с помощью команды vigr.

Поскольку членство в группах пользователей определяется в двух разных местах, может быть трудно определить, в какие именно группы входит пользователь. Удобная команда для проверки этого — groupmems. Используйте, например, команду groupmems -g sales -l, чтобы увидеть, какие пользователи являются участниками группы sales. Это показывает пользователей, которые являются членами этой группы в качестве назначения вторичной группы, а также пользователей, которые являются членами этой группы в качестве назначения основной группы.

Пример работы с группами

В этом примере вы создаете две группы и добавите в эти группы некоторых пользователей.

1. Введите groupadd sales, а затем groupadd account, чтобы добавить группы с именами sales и account.

2. Используйте usermod, чтобы добавить пользователей linda и lisa в группу продаж, а lori и bob в групповую учетную запись:

usermod -aG sales linda usermod -aG sales lisa usermod -aG account lori usermod -aG account bob

3. Введите id linda, чтобы убедиться, что пользователь linda правильно добавлен в группу sales. В результатах этой команды вы видите, что Линда назначена группе с gid=100(users). Это ее основная группа. С параметром groups упоминаются все группы, членом которых она является в качестве вторичной группы:

linux:~ # id linda uid=1000(linda) gid=100(users) groups=1000(sales),100(users)

Резюме

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *