Почему 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
Эта статья по основам 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.
[gn_box title=»Корневой пользователь» box_color=»#8cccff» title_color=»#000000″]В Linux UID — 0 и GID — 0 зарезервированы для пользователя root.[/gn_box]
Как найти 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
Обновлено: 25.07.2023 Опубликовано: 05.12.2016
В данной инструкции рассказывается о работе с пользователями Linux через терминал (с применением командной строки).
Получение информации о пользователях
1. Список пользователей можно посмотреть в файле /etc/passwd командой:
Данная команда вернет всех пользователей, в том числе служебных. Для отображения только учетных записей пользователей можно ввести команду:
2. Проверить существование пользователя и увидеть его идентификатор можно с помощью команды id:
Мы должны увидеть что-то на подобие:
uid=1001(username) gid=1001(username) groups=1001(username),27(sudo)
* учетная запись username существует, она находится в основной группе username и дополнительной sudo. Ее идентификатор 1001.
3. Также мы можем получить строку о пользователе из файла /etc/passwd:
getent passwd username
Мы увидим что-то такое:
* наш пользовател username имеют идентификатор пользователя и группы 1001, его домашняя директория /home/username, командная оболочка /bin/sh.
Создание
* опции не являются обязательными при создании пользователя.
* в данном примере создается учетная запись dmosk.
Для учетной записи стоит сразу создать пароль:
* после ввода, система попросит ввести пароль дважды.
Ключи (опции)
Ключ | Описание и примеры |
---|---|
-b | Задает базовый каталог для домашнего каталога useradd dmosk -b /var/home |
-c | Создает комментарий для описания учетной записи useradd dmosk -c «Пользователя для управления системой» |
-d | Полный путь к домашнему каталогу пользователя useradd dmosk -d /home/newuser |
-D | Позволяет показать или изменить настройки по умолчанию, которые будут применяться при последующем создании пользователей useradd dmosk -Ds /bin/bash |
-e | Дата, после которой учетная запись устареет. useradd dmosk -e 2017-12-31 |
-f | Число дней, после которого учетная запись с устаревшим паролем будет заблокирована useradd dmosk -f 0 |
-g | Задает основную группу useradd dmosk -g altternativegroup |
-G | Задает дополнительные группы useradd dmosk -G wheel |
-k | Путь к источнику скелета (файлы с шаблонами для нового пользователя) useradd dmosk -k /var/skel |
-m | При создании пользователя создать домашний каталог useradd dmosk -m |
-M | Не создавать домашний каталог useradd dmosk -M |
-N | Не создавать основную группу с таким же именем, как у пользователя useradd dmosk -N |
-o | Разрешает создание учетной записи с повторяющимся UID useradd dmosk -u 15 -o |
-p | Задает пароль useradd dmosk -p pass |
-r | Системная учетная запись (без домашнего каталога и с идентификаторами в диапазоне SYS_UID_MIN — SYS_UID_MAX из файла /etc/login.defs) useradd dmosk -r |
-R | Каталог, в который выполняется chroot useradd dmosk -R /var/chroot/home |
-s | Путь до оболочки командной строки useradd dmosk -s /bin/csh |
-u | Задает UID useradd dmosk -u 666 |
-U | Имя группы будет таким же, как у пользователя useradd dmosk -U |
Актуальный список ключей можно получить командой useradd -h.
Редактирование
usermod dmosk -G wheel
* эта команда добавит пользователя dmosk в группу wheel
Удаление
Блокировка
1. Можно заблокировать пользователя, не удаляя его из системы:
usermod -L dmosk
Чтобы разблокировать пользователя, вводим:
2. В некоторых системах Linux может использоваться pam-модуль tally. Он осуществляет подсчет количества неудачных попыток входа в систему. Также он может блокировать доступ при превышении данного количества.
Чтобы посмотреть счетчик для пользователя, вводим команду:
Для сброса счетчика (и блокировки, если она есть) вводим:
pam_tally2 —user=admin —reset
Работа с группами
1. Добавление группы:
3. Удаление группы:
4. Добавление пользователя в группу:
Выполняется через команду usermod:
5. Удаление из группы:
Выполняется с помощью gpasswd:
Список пользователей
Посмотреть список пользователей можно в файле /etc/passwd:
Мы увидим что-то на подобие:
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
.
Как правило, большая часть данных пользователей является системными — их UID меньше 1000 и больше 60000.
Более функциональная команда для отображения содержимого файла passwd — getent:
Можно найти пользователя по идентификатору:
getent passwd 1000
Получить список не системных пользователей:
Получить только список логинов не системных учетных записей:
Работа с паролями
Рассмотрим отдельно некоторые примеры работы с паролями пользователей.
1. Смена пароля для текущего пользователя:
2. Смена пароля для конкретного пользователя:
* в данном случае замена будет выполняться для пользователя dmosk.
Пароли пользователей хранятся в файле /etc/shadow в виде хэша. Чтобы самим сгенерировать данный хэш (может понадобиться для ручного создания записи или с помощью cloud-init), выполняем команду:
mkpasswd -m sha-512
Примеры работы с учетными записями
Рассмотрим несколько утилит, с помощью которых можно управлять учетными записями в Linux.
useradd
1. Создать пользователя, добавить его в группу и создать домашнюю директорию:
useradd dmosk -G printer -m
2. Создать учетную запись с возможностью получения привилений суперпользователя (командой sudo su):
useradd dmosk -G wheel -m
useradd dmosk -G sudo -m
3. Создать пользователя с определенными UID и GID (соответственно идентификаторы пользователя и группы):
useradd dmosk -u 900 -g 950
* группа с используемым идентификатором (в данном примере 950) уже должна быть создана заранее с использованием команды groupadd.
4. Создать пользователя и указать путь к домашней директории:
useradd dmosk -d /home/newdmosk
5. Создать учетную запись без возможности входа в систему:
useradd dmosk -s /sbin/nologin
usermod
1. Потребовать сменить пароль при следующем входе в систему:
chage -d 0 dmosk
2. Поменять пользователю основную группу:
usermod dmosk -g kdonewgroup
3. Задать пользователю дополнительную группу с правами root:
usermod dmosk -G sudo
4. Добавить пользователя в группу:
usermod -a -G group dmosk
* в данном примере мы добавим пользователя dmosk в группу group.
5. Сменить домашнюю директорию:
usermod -d /var/www/dmosk dmosk
* данной командой мы меняем для пользователя dmosk домашнюю директорию на /var/www/dmosk.
chage
1. Автоматическая блокировка учетной записи:
chage -E 2023-05-01 dmosk
* данной командой мы указали, что учетная запись dmosk перестанет действовать после 1 мая 2023 года.
Чтобы посмотреть информацию о дате окончания срока действия учетной записи вводим:
Сделать учетную запись бессрочной:
chage -E -1 dmosk
Возможные ошибки
sudo must be owned by uid 0 and have the setuid bit set
При попытке получить привилении командой:
. система возвращает ошибку:
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
Причина: эта ошибка возникает, когда утилита sudo не имеет правильных прав доступа на вашей системе. В частности, она происходит, когда владелец файла /usr/bin/sudo не является пользователем root или когда установлен неправильный бит setuid на файле.
Решение: убедитесь, что вы вошли в систему с учетной записью, имеющей права администратора. Это можно сделать, войдя напрямую под пользователем root.
Выполняем команду, чтобы проверить права файла sudo:
ls -l /usr/bin/sudo
Если владелец не является пользователем root, выполните следующую команду, чтобы изменить владельца файла:
chown root:root /usr/bin/sudo
Убедитесь, что установлен правильный бит setuid на файле sudo, выполнив следующую команду:
chmod u+s /usr/bin/sudo
Управление пользователями
Каждый пользователь имеет свой уникальный идентификатор пользователя, UID . Он отличается в зависимости от типа пользователя:
- администратор — 0
- обычный пользователь — от 100
- системный пользователь — от 1 до 100
Чтобы упростить процесс настройки прав для новых пользователей, их объединяют в группы. Каждая группа имеет свой набор прав и ограничений. Любой пользователь, создаваемый или добавляемый в такую группу, автоматически их наследует. Если при добавлении пользователя для него не указать группу, то у него будет своя, индивидуальная группа — с именем пользователя. Один пользователь может одновременно входить в несколько групп.
Информацию о каждом пользователе сервера можно посмотреть в файле /etc/passwd . Пользователи в нём перечислены в следующем формате:
test-user:x:1000:1000::/home/test-user:/bin/bash
говорит о том, что пароль зашифрован (хранится в /etc/shadow )
идентификатор пользователя ( UID ) и идентификатор группы ( GID ), к которой он принадлежит
тут может быть ваша реклама комментарий к пользователю и его контакты. Например, имя сотрудника или название службы. Т.н. GECOS -поле
домашняя папка пользователя
указывает, что пользователь имеет доступ к командной оболочке сервера
Если вам известно имя пользователя и вы хотите узнать о нём побольше, необязательно читать /etc/passwd . Всё то же самое в человекочитаемом виде можно посмотреть с помощью команды pinky -l :
pinky -l test-user
Эта же команда без аргументов покажет вам всех авторизованных в текущий момент пользователей сервера, включая информацию о времени и источнике входа:
В качестве альтернативы можно использовать команду w — она тоже показывает всех авторизованных в текущий момент пользователей, включая создаваемую ими нагрузку на сервер:
Узнать UID пользователя можно с помощью команды id :
id test-user
Для именования пользователей в Linux есть набор стандартных правил:
- Имя пользователя может содержать только английские буквы [a-z] в верхнем и нижнем регистре, цифры, символ «_» , тире «-» и точку;
- Имя пользователя может оканчиваться символом «$» ;
- Имя пользователя не может начинаться с тире, содержать только цифры или состоять из «.» или «..» ;
- Не рекомендуется использовать точку в начале имени пользователя;
- Имя пользователя может включать до 32 символов.
Теперь перейдём непосредственно к управлению пользователями.
- Создание пользователей
- Изменение данных пользователей
- Удаление пользователей
- Группы пользователей
- Привилегии суперпользователя. Sudo
Создание пользователей
Процесс добавления пользователя состоит из двух шагов: создания пользователя и настройки пароля.
На первом шаге используется команда useradd c набором опций для настройки нового пользователя и его именем (логином):
useradd [как создать] [как назвать]
Эта команда имеет ряд настроек по умолчанию, которые задаются с помощью файлов /etc/default/useradd и /etc/login.defs Увидеть основные можно с помощью команды:
useradd -D
GID группы, в которую пользователь будет добавлен после создания
базовый каталог, в котором будет размещена директория пользователя
указывает время до блокировки пользователя, когда его пароль станет недействителен. Значение «-1» отключает опцию
дата, до которой действителен аккаунт. По умолчанию не установлена — то есть без ограничений
используется для настройки доступа к командной оболочке
содержит путь к директории, в которой хранятся файлы по умолчанию. После создания пользователя они будут автоматически скопированы в его домашнюю папку
определяет, нужно ли создать папку для писем этого пользователя в /var/spool/mail/
Все эти настройки применяются, если использовать самый простой вариант команды создания пользователя без параметров:
useradd test-user
Но обычно нам требуется добавить пользователя со специфическими настройками — для этого используется расширенный вариант этой команды. Перечислим основные опции:
создаёт указанную домашнюю директорию, если она ещё не существует
устанавливает /home/test-user в качестве домашней директории
-c «Евграф Шматкунос»
добавляет комментарий. Например, с именем пользователя
указывает группу, в которую попадёт пользователь после создания. Можно использовать с GID или именем группы. Указанная группа должна существовать. Используется в сочетании с ключом -N (отменяет автоматическое создание группы с именем пользователя)
указывает список дополнительных групп пользователя. Они перечисляются через запятую без пробелов
позволяет настроить доступ к shell
создаёт системного пользователя. Используется, когда вам нужно настроить службу на работу из-под конкретного пользователя. По умолчанию данные таких пользователей не вносятся в /etc/shadow , для них не создаётся домашняя папка
позволяет указать свой UID , который будет присвоен новому пользователю. В качестве UID указывается положительное целое число. UID должен быть уникален
указывает дату, до которой аккаунт будет активен. Дата задаётся в формате YYYY-MM-DD
указывает количество дней до блокировки пользователя, когда его пароль станет недействителен
В итоге получится вот такая сборная солянка из настроек:
useradd -m -u 666 -d /home/users/test-user -c "Тестовый пользователь" -e 2060-01-01 -s /bin/bash test-user
В примере мы создаём тестового пользователя test-user с идентификатором 666 , домашней папкой в /home/users/test-user , комментарием «Тестовый пользователь» и доступом к командной оболочке. Учётная запись будет действительна до конца света по Ньютону.
Более подробную информацию о доступных опциях для useradd можно увидеть с помощью команды man useradd .
Очень важно после создания пользователя настроить для него надёжный пароль. Для этого нужно ввести следующую команду:
passwd test-user
Система предложит ввести и подтвердить пароль. На этом процесс создания пользователя можно считать завершённым.
Изменение данных пользователей
Смена настроек для активного пользователя может привести к сбою системы. Поэтому перед изменением данных важно убедиться, что в текущий момент редактируемый пользователь не авторизован, под ним отсутствуют запущенные процессы, редактируемые файлы. Посмотреть список запущенных процессов пользователя user можно следующим образом:
pgrep -l -u user
Проверить, авторизован ли пользователь, можно с помощью уже известной команды:
pinky user
Отредактировать данные существующего пользователя можно с помощью команды usermod . По структуре она похожа на предыдущую команду:
usermod [что поменять] [для какого пользователя]
Набор параметров расширен дополнительными опциями:
создаёт новую директорию, указанную в качестве домашней (если её не существует), и переносит туда данные из старой
меняет домашнюю директорию пользователя на /home/users/new-test-user
меняет комментарий к пользователю
добавляет пользователя в дополнительные группы
меняет командную оболочку пользователя
изменяет UID пользователя
меняет дату, до которой аккаунт будет активен
меняет количество дней до блокировки пользователя, когда его пароль станет недействителен
меняет имя пользователя на new-test-user
блокирует аккаунт пользователя. Для этого в файле /etc/shadow перед хэшем пароля пользователя ставится символ «!»
снимает блокировку с аккаунта (удаляет символ «!» из пароля в /etc/shadow )
То есть если мы захотим отредактировать данные пользователя test-user , созданного в примере выше, это будет выглядеть так:
usermod -l new-test-user -m -d /home/new-test-user -c "Чак Норрис" -u 100500 -e 3000-01-01 -f -1 test-user
В примере мы меняем логин — имя пользователя на new-test-user , изменяем домашнюю папку на /home/new-test-user с копированием файлов, меняем комментарий, UID пользователя, срок жизни аккаунта и отменяем блокировку в случае устаревания пароля.
При изменении данных пользователя система предпримет попытку автоматически указать новые данные для всех файлов и папок пользователя. Тем не менее, после редактирования нужно всё перепроверить и исправить права доступа, где они не изменились автоматически.
Удаление пользователей
Как и в случае с редактированием, перед удалением пользователя нужно убедиться, что под ним отсутствуют активные процессы, не редактируются файлы. Иначе существует риск сбоя системы. В программу встроен механизм защиты, поэтому она не позволит удалить пользователя, если он авторизован или под ним работают какие-то службы.
Для удаления пользователей используется команда userdel . Её структура аналогична предыдущим:
userdel [что удаляем] [кого удаляем]
Основных параметра два:
удаляет папки пользователя: домашнюю директорию, почтовую очередь
отключает механизм защиты. При использовании этой опции пользователь будет удалён даже при наличии запущенных процессов и пр. Используется на свой страх и риск, так как может привести к сбою системы
После удаления пользователей важно вручную проверить, что на сервере не осталось файлов или директорий, принадлежащих удалённому пользователю.
Группы пользователей
Информация о группах хранится в файле /etc/group . Работа с группами пользователей куда проще.
Группы применяются для делегирования прав доступа на определённые файлы, папки, скрипты сразу нескольким пользователям. Живой пример: работа с FTP-сервером. Вы выбираете какую-то директорию для работы с файлами, создаёте группу пользователей и присваиваете ей выбранную папку. Теперь вам не нужно отдельно настраивать права каждому новому пользователю — достаточно добавить его в эту группу, и он автоматически получит доступ к FTP-каталогу.
Создание
Для создания групп используется команда groupadd :
groupadd new-group
Из параметров можно выделить следующие:
если группа с указанным именем или GID уже существует, опция прерывает выполнение команды без соответствующей ошибки
позволяет назначить свой GID для создаваемой группы
создаёт системную группу
Устанавливает для группы пароль p@ssw0rd . Пароль запрашивается системой при попытке входа в группу с помощью команды newgrp .
Не рекомендуется к использованию из-за проблем с безопасностью. Настроенный таким образом пароль можно увидеть в истории команд.
Редактирование
Для редактирования групп используется команда groupmod . Список изменений задаётся с помощью параметров:
меняет GID группы на 100500
меняет имя группы на another-name
Например, если нам нужно изменить имя группы test-group на имя named-group , команда будет выглядеть так:
groupmod -n named-group test-group
Удаление
Нельзя удалить группу, если она указана в качестве основной для какого-то существующего пользователя. Сначала нужно предварительно удалить этого пользователя из группы.
Само удаление группы выполняется одной командой:
groupdel test-group
Как и в случае удаления пользователей, нужно вручную проверить, что на сервере не осталось данных, принадлежащих удалённой группе.
Управление пользователями в группе
Базовым инструментом для управления группами является утилита gpasswd . Она имеет несколько параметров, но с одной особенностью — в отличие от предыдущих примеров, здесь большинство параметров (кроме -A и -M ) не сочетаются. То есть в команде может быть только один параметр за раз.
Структура команды проста:
gpasswd [что сделать] [в какой группе]
Рассмотрим опции команды подробнее:
Добавляет пользователя new-user в группу
Удаляет пользователя bad-user из группы
Доступна для использования привилегированным пользователям (с правами root). Назначает список пользователей-администраторов группы
Доступна для использования привилегированным пользователям. Назначает список участников группы
Отключает пароль группы. После этого только члены группы смогут использовать команду newgrp для подключения к группе
Отключает внешний доступ к группе. После этого только члены группы смогут использовать команду newgrp для подключения к группе
То есть если нам потребуется добавить пользователя в новую группу, достаточно будет использовать следующую команду:
gpasswd -a new-user test-group
Также для добавления пользователей в новую группу используется описанная выше команда usermod . Следующий пример добавляет пользователя test-user в группу new-group :
usermod -a -G new-group test-user
Или, если нужно указать группу new-group в качестве основной группы пользователя test-user :
usermod -g new-group test-user
Помимо этого, любой пользователь может сам авторизоваться и добавиться в новую группу с помощью команды:
newgrp new-group
Эта команда позволяет переключить группу пользователя в рамках текущей сессии, а также автоматически добавляет запрошенную группу в список групп пользователя.
Привилегии суперпользователя. Sudo
Итак, мы знаем, что на сервере есть три типа пользователей: администраторы (корневой пользователь root ), локальные пользователи (люди, которым мы предоставляем учётные записи для работы с сервером) и системные пользователи (сущности, от имени которых запускаются те или иные процессы). То есть реально для управления системой используются только первые два типа пользователей. Их основное различие — в объёме прав доступа.
По умолчанию после установки операционной системы на сервере присутствует только один пользователь — администратор root . Он имеет полные права доступа ко всем процессам и данным сервера.
Если создать локального пользователя, по умолчанию он будет иметь доступ только к тем файлам и каталогам, которые принадлежат ему либо группе пользователей, в которую он входит. Помимо прочего, при работе в командной оболочке ему будет закрыт доступ к ряду системных инструментов, необходимых для расширенной настройки или диагностики сервера. При попытке выполнить их под непривилегированным пользователем вы будете видеть ошибки, намекающие, что для работы с этими инструментами требуются права повыше:
Тем не менее, основная часть работы с конечными данными на сервере происходит именно под локальным пользователем — например, загрузка и изменение файлов сайтов. Если вы загрузите на сервер файл под root -ом, файл будет принадлежать ему, а не пользователю, в папку которого загружен. Соответственно, потом это может привести к ошибкам, если вручную не изменить владельца загруженного файла.
Когда вы полностью настроите ваш сервер, работа под root -ом вообще может стать опасной. Случайная ошибка в команде на удаление папки может запросто скосить все ваши труды по разворачиванию системы. Да и в целом сам факт наличия пользователя root на сервере при неправильном подходе к безопасности может стать фатальным — если злоумышленник получит к нему доступ, он получит неограниченный контроль над всем содержимым сервера.
С учётом всего этого при администрировании оптимальной считается следующая практика: пользователь root как он есть отключается, а его привилегии делегируются узкому кругу локальных пользователей. Это даёт сразу несколько преимуществ:
- повышается уровень внешней безопасности (отсутствие root отсекает часть автоматических попыток взлома);
- ограничивается объём административных прав — повышение привилегий используется для конкретных рабочих операций и действует ограниченное время.
Для делегирования прав суперпользователя локальные пользователи добавляются в специальную группу. Способ настройки отличается в зависимости от используемой операционной системы:
-
Ubuntu и Debian: Для предоставления прав пользователи добавляются в группу sudo :
usermod -a -G sudo test-user
usermod -a -G wheel test-user
Можно делегировать права пользователям по отдельности — через файл /etc/sudoers Для работы с ним нужно вызвать специальный редактор:
visudo
В этом файле можно тонко настроить объём делегируемых прав — вплоть до списка команд, которые пользователям разрешено вызывать от имени администратора.
Проверить, может ли пользователь использовать sudo , можно с помощью команды:
sudo -l -U test-user
В примере пользователь test-user может выполнять через sudo любые команды ( ALL:ALL — символизирует, что команды могут исполняться от имени любых пользователей и групп, третий аргумент символизирует список доступных команд — в примере ALL , не ограничен)
Чтобы выполнить ту или иную команду с правами суперпользователя, перед ней вызывается команда sudo :
sudo groupadd newgroup
Для подтверждения система запросит ввести пароль текущего пользователя (символы при вводе пароля не отображаются — введите пароль «вслепую» или скопируйте и вставьте кликом правой кнопки мыши). После ввода команда будет отправлена на исполнение. Также в течение пяти следующих минут (по умолчанию) вы сможете запускать команды от имени суперпользователя без использования sudo и повторного ввода пароля.
Количество времени, которое действуют права суперпользователя после вызова sudo , можно изменить через настройки в /etc/sudoers . Запрос пароля можно отключить там же.
Если вам нужно выполнить сразу несколько операций с повышенными привилегиями, можно временно войти в режим суперпользователя:
sudo -s
С управлением пользователями разобрались, идём дальше. Как было сказано выше, чтобы локальный пользователь мог начать работу на сервере, администратор ( root или пользователь c привилегиями sudo ) должен настроить права доступа к файлам и папкам, которые понадобятся этому пользователю. Рассмотрим этот вопрос подробнее.