Убрать пользователя из группы linux. Группы пользователей Linux. Создание и назначение домашнего каталога пользователю

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

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

Как я уже сказал группы в Linux появились еще в самом начале разработки этой операционной системы. Они были разработаны для того, чтобы расширить возможности управления правами. Разберем небольшой пример, возьмем организацию в которой есть только один компьютер, у нас есть администраторы и пользователи. У каждого человека свой аккаунт на нашем компьютере. Администраторы могут настраивать систему, пользователям же лучше не давать воли, чтобы что-то не сломали. Поэтому администраторы объединяются в группу admin, и ей дается доступ ко всему оборудованию, реально же ко всем файлам в каталоге dev, а пользователи, объеденные в группу users, и этой группе дается возможность читать и записывать файлы в общий каталог, с помощью которого они могут обмениваться результатами своей работы. Мы могли бы назначать права для каждого пользователя отдельно разрешая ему доступ к тому или иному файлу, но это слишком неудобно. Поэтому и были придуманы группы. Говорите, да ничего, можно назначить? Ну а теперь представьте что наши пользователи - это процессы. Вот тут вся краса групп выходит на передний план, группы используются не столько для обеспечения доступа для пользователей, сколько для управления правами программ, особенно их доступом к оборудованию. Для сервисов создаются отдельные группы и пользователь, от имени которого запущен он, сервис может состоять в нескольких группах, что обеспечивает ему доступ к определенным ресурсам.

А теперь давайте рассмотрим как посмотреть группы linux.

Группы в Linux

Все группы, созданные в системе, находятся в файле /etc/group. Посмотрев содержимое этого файла, вы можете узнать список групп linux, которые уже есть в вашей системе. И вы будете удивлены.

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

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

  • daemon - от имени этой группы и пользователя daemon запускаютcя сервисы, которым необходима возможность записи файлов на диск.
  • sys - группа открывает доступ к исходникам ядра и файлам include сохраненным в системе
  • sync - позволяет выполнять команду /bin/sync
  • games - разрешает играм записывать свои файлы настроек и историю в определенную папку
  • man - позволяет добавлять страницы в директорию /var/cache/man
  • lp - позволяет использовать устройства параллельных портов
  • mail - позволяет записывать данные в почтовые ящики /var/mail/
  • proxy - используется прокси серверами, нет доступа записи файлов на диск
  • www-data - с этой группой запускается веб-сервер, она дает доступ на запись /var/www, где находятся файлы веб-документов
  • list - позволяет просматривать сообщения в /var/mail
  • nogroup - используется для процессов, которые не могут создавать файлов на жестком диске, а только читать, обычно применяется вместе с пользователем nobody.
  • adm - позволяет читать логи из директории /var/log
  • tty - все устройства /dev/vca разрешают доступ на чтение и запись пользователям из этой группы
  • disk - открывает доступ к жестким дискам /dev/sd* /dev/hd*, можно сказать, что это аналог рут доступа.
  • dialout - полный доступ к серийному порту
  • cdrom - доступ к CD-ROM
  • wheel - позволяет запускать утилиту sudo для повышения привилегий
  • audio - управление аудиодрайвером
  • src - полный доступ к исходникам в каталоге /usr/src/
  • shadow - разрешает чтение файла /etc/shadow
  • utmp - разрешает запись в файлы /var/log/utmp /var/log/wtmp
  • video - позволяет работать с видеодрайвером
  • plugdev - позволяет монтировать внешние устройства USB, CD и т д
  • staff - разрешает запись в папку /usr/local

Теперь, когда вы знаете зачем использовать группы в linux и какие они есть по умолчанию, рассмотрим управление группами LInux.

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

Управлять группами можно и с помощью графического интерфейса. В KDE есть программа Kuser специально предназначенная для этого, в Gnome это выполняется с помощью настроек системы. Кроме того, в популярных дистрибутивах есть отдельные инструменты, такие как YaST в OpenSUSE или Настройки Ubuntu. Но с графическим интерфейсом я думаю вы разберетесь. А мы рассмотрим управление группами linux через терминал. Сначала разберемся с файлами, а уже потом с пользователями.

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

Здесь вы можете видеть, что владелец всех папок sergiy и группа тоже sergiy. Правильно, так как эти пользователи были созданы мной. Но давайте пойдем дальше:

Здесь мы видим что дисковым устройствам sd* назначена группа disk, а это все значит, что пользователь, состоящий в этой группе, может получить к ним доступ. Или еще пример:

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

chgrp имя_группы имя_файла

Например создадим файл test:

И изменим для него группу:

Если вы хотите создать группу linux, это можно сделать командой newgrp:

sudo groupadd test

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

Управление группами Linux для пользователя выполняется с помощью команды usermod. Рассмотрим ее синтаксис и опции:

$ usermod опции имя_пользователя

  • -G - дополнительные группы, в которые нужно добавить пользователя
  • -g изменить основную группу для пользователя
  • -R удалить пользователя из группы.

Добавить пользователя в группу можно командой usermod:

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

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

sudo newgrp имя_группы

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

sudo usermod -G -a disk sergiy

Теперь вы можете монтировать диски без команды sudo:

mount /dev/sda1 /mnt

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

Также можно использовать команду id. В первом случае мы просто видим список групп linux, во втором дополнительно указанны id группы и пользователя. Чтобы включить пользователя в группу Linux, для основной группы используется опция -g.

Создадим пользователя vivek и добавим его в группу developers. Залогиньтесь как пользователь root:

Например добавим пользователя vivek :

useradd -g users -G admins,ftp,www,developers -s /bin/bash -p xxxx -d /home/ghost -m vivek

  • -d домашний каталог
  • -s задать стартовую оболочку (/bin/sh) - после можно изменить в файле /etc/passwd
  • -p пароль
  • -g основная группа, к которой приписывается пользователь (Группа должна существовать)
  • -G другие группы к которой приписывается пользователь
  • -m создать для пользователя домашний каталог
  • xxxx символьный пароль пользователя

Убедимся что группа developers существует:

# grep developers /etc/group

Если группы нет, используйте команду groupadd для создания новой группы developers:

Теперь с помощью команды usermod добавим пользователя vivek в группу developers:

# adduser vivek developers && newgrp developers

Убедимся что пользователь добавлен в группу developers:

# id vivek
Output:
uid=1122(vivek) gid=1125(vivek) groups=1125(vivek),1124(developers)

Установим/изменим пароль пользователю vivek:

Поиграемся с группами

Укажим пользователю vivek участие только в группе developers

usermod -G developers vivek

Укажим пользователю vivek участие только в группах admins, ftp, www, developers, введя:

# usermod -G admins,ftp,www,developers vivek

Удалим пользователя vivek из некоторых групп (переназначим ему группы):

# usermod -G ftp,www vivek

теперь vivek не входит в группы admins и developers.

Примечание: команда usermod не будет изменять имя пользователя, если этот пользователь в данный момент работает в системе.

userdel — удалить пользователя

Например удалим пользователя vivek:

  • -r удалить пользователя вместе с домашним каталогом

Подробный СИНТАКСИС

useradd [-u идентификатор [-o] [-i]] [-g группа ] [-G группа [[,группа ] . . .]] [-d каталог ] [-s shell ] [-c комментарий ] [-m [-k skel_dir ]] [-f inactive ] [-e expire ] [-p passgen ] [-a событие [, . . .]] рег_имя

Подробное ОПИСАНИЕ

Вызов useradd обычно добавляет новую запись о пользователе в файлы данных системы идентификации и проверки идентичности (Identification and Authentication - I&A). Исключением являются пользователи сетевой информационной службы (Network Information Service или, сокращенно, NIS). Она также позволяет задать принадлежность к дополнительным группам для пользователя (опция -G ) и создать для него начальный каталог (опция -m ). Новое регистрационное имя блокируется до тех пор, пока не будет выполнена команда passwd .

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

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

Поддерживаются следующие опции:

-u идентификатор Идентификационный номер пользователя (UID). Этот номер должен быть неотрицательным целым числом, не превосходящим MAXUID , определенный в sys/param.h . По умолчанию используется следующий доступный (уникальный) не устаревший UID, больший 99. Эта опция игнорируется, если новое регистрационное имя будет администрироваться сетевой информационной службой (NIS). Подробнее об этом см. ниже в разделе "Регистрационные имена сетевой информационной службы".
-o Эта опция позволяет сдублировать UID (сделать его не уникальным). Поскольку защита системы в целом, а также целостность контрольного журнала (audit trail) и учетной информации (accounting information) в частности, зависит от однозначного соответствия каждого UID определенному лицу, использовать эту опцию не рекомендуется (чтобы обеспечить учет действий пользователей).
-i Позволяет использовать устаревший идентификатор UID.
-g группа Целочисленный идентификатор или символьное имя существующей группы. Эта опция задает основную группу (primary group) для нового пользователя. По умолчанию используется стандартная группа, указанная в файле /etc/default/useradd
-G группа[[,группа] . . .] Один или несколько элементов в списке через запятую, каждый из которых представляет собой целочисленный идентификатор или символьное имя существующей группы. Этот список определяет принадлежность к дополнительным группам (supplementary group membership) для пользователя. Повторения игнорируются. Количество элементов в списке не должно превосходить NGROUPS_MAX- 1 , поскольку общее количество дополнительных групп для пользователя плюс основная группа не должно превосходить NGROUPS_MAX . Эта опция игнорируется, если новое регистрационное имя будет администрироваться сетевой информационной службой (NIS). См. раздел "Регистрационные имена сетевой информационной службы" ниже.
-d каталог Начальный каталог (home directory) нового пользователя. Длина этого поля не должна превосходить 256 символов. По умолчанию используется HOMEDIR/рег_имя , где HOMEDIR - базовый каталог для начальных каталогов новых пользователей, а рег_имя - регистрационное имя нового пользователя.
-s shell Полный путь к программе, используемой в качестве начального командного интерпретатора для пользователя сразу после регистрации. Длина этого поля не должна превосходить 256 символов. По умолчанию это поле - пустое, что заставляет систему использовать стандартный командный интерпретатор /usr/bin/sh . В качестве значения shell должен быть указан существующий выполняемый файл.
-c комментарий Любая текстовая строка. Обычно, это краткое описание регистрационного имени и используется сейчас для указания фамилии и имени реального пользователя. Эта информация хранится в записи пользователя в файле /etc/passwd . Длина этого поля не должна превосходить 128 символов.
-m Создает начальный каталог нового пользователя, если он еще не существует. Если каталог уже существует, добавляемый пользователь должен иметь права на доступ к указанному каталогу.
-k skel_dir Копирует содержимое каталога skel_dir в начальный каталог нового пользователя, вместо содержимого стандартного "скелетного" каталога, /etc/skel . Каталог skel_dir должен существовать. Стандартный "скелетный" каталог содержит стандартные файлы, определяющие среду работы пользователя. Заданный администратором каталог skel_dir может содержать аналогичные файлы и каталоги, созданные для определенной цели.
-f inactive Максимально допустимое количество дней между использованиями регистрационного имени, когда это имя еще не объявляется недействительным. Обычно в качестве значений используются положительные целые числа.
-e expire Дата, начиная с которой регистрационное имя больше нельзя будет использовать; после этой даты никакой пользователь не сможет получить доступ под этим регистрационным именем. (Эта опция удобна при создании временных регистрационных имен.) Вводить значение аргумента expire (представляющего собой дату) можно в любом формате (кроме Julian date). Например, можно ввести 10/6/99 или October 6, 1999 .
-p passgen Указывает, что поле FLAG в файле /etc/shadow должно быть установлено в указанное значение. К этому полю обращается команда passwd , чтобы определить, действует ли для данного пользователя генератор паролей. Если опция -p явно не задана, проверяется запись FORCED_PASS в файле /etc/default/useradd , чтобы определить значение для соответствующего поля в /etc/shadow . Если записи FORCED_PASS нет в /etc/default/useradd , в соответствующем поле записи в /etc/shadow значения не будет. Если значение FORCED_PASS равно 1, запись в /etc/shadow получает значение 1. Если значение passgen не пустое и не является печатным символом ASCII, выдается диагностическое сообщение.
-a событие Список типов или классов событий через запятую, образующих маску аудита (audit mask) для пользователя. Сразу после установки системы стандартной маски аудита для пользователя нет, но ее можно задать в файле /etc/default/useradd с помощью команды defadm . Эту опцию можно использовать, только если установлены утилиты аудита (Auditing Utilities). (Чтобы узнать, какие пакеты установлены в системе, выполните команду pkginfo .)
рег_имя Строка печатных символов, задающая регистрационное имя для нового пользователя. В ней не должно быть двоеточий (: ) и символов перевода строки (\n ). Она также не должна начинаться с прописной буквы.

Учтите, что многие из стандартных значений для рассмотренных выше параметров можно изменить с помощью команды defadm , предназначенной для работы с файлом /etc/default/useradd . Эти стандартные значения применяются только для локальных пользователей. Для пользователей NIS стандартные значения задаются в базе данных сетевой информационной службы. Чтобы изменить стандартные значения NIS, необходимо задать опции в командной строке.

Регистрационные имена сетевой информационной службы

Если регистрационное имя начинается с символа + , (например, +chris ), определением пользователя будет управлять сетевая информационная служба (NIS). Значения по умолчанию будут определяться на основе базы данных NIS, а не файла /etc/defaults/useradd . Значения аргументов для опций -u , -g и -G будут молча проигнорированы, если эти опции заданы. Вместо этого, значения идентификатора пользователя и идентификатора группы будут взяты из базы данных NIS. Подробнее см. страницу справочного руководства passwd . Учтите, что при добавлении пользователя NIS регистрационное имя должно уже существовать в базе данных NIS. Например, чтобы добавить регистрационное имя chris как имя пользователя NIS, chris уже должен существовать в базе данных NIS. Затем необходимо вызвать useradd с регистрационным именем +chris , чтобы указать, что необходимо добавить пользователя chris как пользователя NIS, а не как локального пользователя.

ФАЙЛЫ

/etc/default/useradd
/etc/group
/etc/passwd
/etc/security/ia/ageduid
/etc/security/ia/audit (если установлены утилиты аудита - Auditing Utilties)
/etc/security/ia/index
/etc/security/ia/master
/etc/shadow
/etc/skel

ДИАГНОСТИКА

Команда useradd завершается с кодом возврата 0 в случае успеха. При возникновении ошибок могут быть выданы следующие сообщения:


Неверный синтаксис командной строки.
The command line syntax was invalid.
В опции задан недопустимый аргумент.
An invalid argument was provided with an option.
Указанный в опции -u идентификатор уже используется, а опция -o не указана.
The uid specified with the -u option is already in use and the -o option was not specified.
Указанная в опции -g группа не существует.
The group specified with the -g option does not exist.
Указанное регистрационное имя не уникально.
The specified login is not unique.
Не удалось изменить /etc/group. Регистрационное имя добавлено в файл /etc/passwd, но не в файл /etc/group.
Cannot update /etc/group. The login was added to the /etc/passwd file but not to the /etc/group file.
Не удалось создать начальный каталог (в опции -m) или не удалось выполнить копирование skel_dir в начальный каталог.
Unable to create the home directory (with the -m option) or unable to complete the copy of skel_dir to the home directory.
Идентификатор недостаточно устарел. Выберите другой.
uid not aged sufficiently. Choose another.
Была указана недопустимая опция -a; системная служба не установлена.
An invalid option -a was specified; system service not installed.
Указан недопустимый тип или класс события аудита.
An invalid audit event type or class event was specified.

Системы, обеспечивающие многопользовательский доступ, будь то операционная система ОС, программное обеспечение (ПО), система управления контентом (CMS), очень важно иметь инструментарий для надёжного управления пользователями (их аккаунтами или учётными записями, пользовательскими конфигурациями, домашними каталогами и т. д.), а также для организации и управления самим пользовательским доступом. В таких случаях грамотное и продуманное управление пользователями (точнее, их учётными записями) является ключевым аспектом, от которого зависят безопасность, стабильность и, как следствие - надёжность всей системы. В современных дистрибутивах Linux имеются автоматизированные системы управления пользователями с наглядным графическим пользовательским интерфейсом (GUI), что позволяет быстро и удобно выполнять рутинные (как оказывается на самом деле) мероприятия по управлению пользователями и конфигурации их учётных записей. Однако, очень важно знать и понимать как и какие на самом деле процессы и изменения происходят в самой системе во время управления пользователями.

Добавление пользователей в Linux

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

$ sudo useradd john

В результате будет создана следующая запись в файле /etc/passwd:

John:х:535:20: :/home/john:/bin/sh

Однако, команда useradd располагает куда большими возможностями, например:

$ sudo useradd -с "John Silver" -d /home/pirates/john -g pirates -G john -m -s /bin/bash john

Эта команда добавит в систему пользователя с полным именем «John Silver», регистрационным именем «john». Включив его в основную группу «pirates», а также добавит его в ещё одну дополнительную группу «john» и назначит ему домашний каталог по адресу /home/pirates/john. В результате, соответствующая запись в файле /etc/passwd будет примерно такой:

John:х:535:30:John Silver:/home/pirates/john:/bin/bash

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

Полный список параметров useradd

Использование: useradd [параметры] ПОЛЬЗОВАТЕЛЬ
useradd -D
useradd -D [параметры]

Параметры:
-b , —base-dir БАЗ_КАТ базовый каталог для домашнего каталога новой
учётной записи
-c , —comment КОММЕНТАРИЙ поле GECOS новой учётной записи
-d , —home-dir ДОМ_КАТ домашний каталог новой учётной записи
-D , —defaults показать или изменить настройки
по умолчанию для useradd
-e , —expiredate ДАТА_УСТ дата устаревания новой учётной записи
-f , —inactive НЕАКТИВНОСТЬ период неактивности пароля новой учётной записи
-g , —gid ГРУППА имя или ID первичной группы новой
учётной записи
-G , —groups ГРУППЫ список дополнительных групп новой
учётной записи
-k , —skel КАБ_ШАБ использовать альтернативный каталог с шаблонами
-K , —key КЛЮЧ=ЗНАЧЕНИЕ заменить значение по умолчанию
из /etc/login.defs
-l , —no-log-init не добавлять пользователя в базы данных lastlog и
faillog
-m , —create-home создать домашний каталог пользователя
-M , —no-create-home не создавать домашний каталог пользователя
-N , —no-user-group не создавать группу с тем же именем что и у
пользователя
-o , —non-unique разрешить создание пользователей с
повторяющимися (не уникальными) UID
-p , —password ПАРОЛЬ зашифрованный пароль новой учётной записи
-r , —system создать системную учётную запись
-R
-s , —shell ОБОЛОЧКА регистрационная оболочка новой
учётной записи
-u , —uid UID пользовательский ID новой учётной записи
-U , —user-group создать группу с тем же именем что и у
пользователя
-Z , —selinux-user SEUSER использовать указанного SEUSER для
пользовательского сопоставления SELinux

Создание и назначение домашнего каталога пользователю

Обычно домашний каталог создается автоматически при добавлении пользователя в систему. Но бывают случаи когда по каким либо причинам домашний каталог не создается. А затем появляется необходимость создать его. Для создания домашнего каталога пользователя используется стандартная команда mkdir. После этого нужно скопировать необходимые конфигурационные скрипты в домашний каталог (для организации рабочей среды пользователя), далее, с помощью команд chown и chmod задать владельца и режимы доступа к каталогу и его содержимому. Это лучше сделать после того как все конфигурационные файлы были скопированы в целевой каталог. Например:

$ mkdir /home/john/ $ cd /etc/skel/ $ cp -Rp . /home/john/ $ chown -R john:john /home/john/ $ chmod -R 644 /home/john/ $ find /home/john/ -type d -exec chmod 755 {} \;

Как видно, файлы конфигурации были скопированы из каталога /etc/skel/ – именно здесь хранятся примеры конфигураций запуска, которые можно отредактировать так, как это необходимо. Кстати, модифицирование копии файлов из каталога /etc/skel/ следует хранить в каталоге usr/local/etc/skel. При задании владельца домашнего каталога необходимо следить за тем, чтобы (в случае неаккуратного использования команды chown) пользователь не стал владельцем псевдокаталога «..», т. е. каталог, уровнем выше, который часто представляет собой каталог /home, что по соображениям безопасности недопустимо.

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

В целях безопасности для учётной записи обязательно должен существовать надёжный пароль. Который следует задать сразу же после создания учётной записи пользователя:

$ sudo passwd name_of_new_user

Например, для пользователя jonh:

$ sudo passwd john Новый пароль: Повторите ввод нового пароля: passwd: все данные аутентификации успешно обновлены.

Проверка учётной записи

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

$ pwd $ ls -al

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

Управление учётными записями

Как уже ранее отмечалось, для управления пользователями в Linux-системах существуют наборы специализированных утилит для добавления, редактирования и удаления учётных записей (пользователей) - useradd, usermod и userdel . Они выполняют предписанный порядок действий для достижения конечной цели - например, в случае с добавлением нового пользователя, команда useradd производит, соответственно, весь вышеописанный «комплекс мероприятий». Каждую из этих утилит можно гибко настроить с помощью конфигурационных файлов, чем, кстати, очень активно пользуются разработчики дистрибутивов Linux. Ведь в разных Linux-системах работа этих утилит незначительно, но отличается, хотя утилиты, по сути, идентичные. Ниже приводится таблица, показывающая команды и файлы конфигурации для управления пользователями для некоторых систем на примере утилиты useradd :

Система Команды Файлы конфигурации Комментарий
Ubuntu useradd /etc/login.defs
adduser /etc/default/useradd Perl-версия
/etc/adduser.conf
SUSE useradd /etc/login.defs
/etc/default/useradd
/etc/default/passwd
/usr/sbin/useradd.local Локальные настройки
/usr/sbin/userdel.local Локальные настройки
/usr/sbin/userdel-pre.local Локальные настройки
/usr/sbin/userdel-post.local Локальные настройки
Red Hat useradd /etc/login.defs
/etc/default/useradd
Solaris useradd /etc/default/{login,passwd)
/etc/security/policy.conf

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

Для удаления пользователей из системы используется команда userdel, например команда

Userdel john

Удалит пользователя john, но зачастую (как и команда useradd , кстати) не в «чистом» виде, а в виде Perl-оболочек с использованием сценария удаления учётной записи. Например, в дистрибутивах Ubuntu используется команда deluser, которая является обычным сценарием на Perl. Который, в свою очередь, вызывает саму команду userdel для удаления и очистки всего того, что было сделано ранее командой useradd . При этом, используется файл сценария (обычно это файл /etc/deluser.conf в Ubuntu и /etc/login.defs в RedHat). Который позволяет задать следующие опции для работы команды userdel:

Использование: userdel [параметры] ПОЛЬЗОВАТЕЛЬ

Параметры:
-f , —force принудительное удаление пользователя и файлов, даже если они используются в настоящее время
-r , —remove удалить домашний каталог и почтовый ящик
-R , —root КАТ_CHROOT каталог, в который выполняется chroot
-Z , —selinux-user удалить все пользовательские сопоставления
SELinux для пользователя

Файл /etc/passwd – описание локальных учётных записей

Если в системе не используется какая-либо автоматизированная служба управления каталогами (например LDAP, NIS), то файл /etc/passwd – это именно тот файл, в котором хранится информация об учётных записях пользователей, известных системе. К этому файлу система обращается всякий раз при попытке авторизации пользователя в поисках требуемого идентификатора пользователя и определения его домашнего каталога. Формат этого файла заключается в том, что каждая строка в нём соответствует одному конкретному пользователю (учётной записи), в которой (в строке) перечислены атрибуты (поля) учётной записи, разделяемые символом двоеточия:

  1. Имя пользователя.
  2. Пароль пользователя (в шифрованном виде) или «заполнитель» пароля.
  3. Идентификатор пользователя.
  4. Идентификатор группы пользователя (по умолчанию).
  5. Информация GECOS - полное имя, офис, телефоны и т. д.
  6. Домашний каталог.
  7. Регистрационная оболочка.

Содержимое файла /etc/passwd может выглядеть следующим образом: Как можно видеть, второе поле для всех записей содержит символ «x» — заполнитель пароля. В Linux-системах зашифрованные пароли хранятся отдельно, в файле /etc/shadow. В случае, если совместно с файлом /etc/passwd используется служба автоматизированного управления каталогами, то в этом же файле имеются записи, начинающиеся с символа «+». Такие записи содержат инструкции по интеграции службы управления каталогами в системе. Стоит вкратце рассмотреть поля учётных записей:

  • Имя пользователя или регистрационное имя - уникальное имя, которое должно составляться согласно правилам построения регистрационных имён для той или иной системы. Для Linux длина регистрационного имени может быть не более 32 символов. Допускается использование только строчных букв с включением цифр. Начинаться регистрационное имя должно с буквы.
  • Зашифрованный пароль - как уже отмечалось, пароли для локальных учётных записей хранятся в /etc/shadow в зашифрованном виде. В Linux в качестве криптографических инструментов для шифрования паролей используются алгоритмы crypt, MD5, Blowfish. Минимальная длина пароля составляет 5 символов, максимальная 8
  • Идентификатор пользователя - это целое число без знака, по которому система «распознаёт» отдельных пользователей, поэтому идентификаторы пользователей используются системой и программной средой, в то время как имена пользователей служат для наглядности и удобства представления пользователей в системе. Для пользователя root зарезервирован идентификатор под номером 0, также рекомендуется присваивать реальным пользователям идентификаторы, следующие после 500, поскольку в системе может быть много «неперсонифицированных» пользователей, таких как bin или daemon – это позволит содержать в порядке список пользователей и избегать путаницы. Также в Linux-системах предусмотрен псевдопользователь nobody, с идентификатором -1 или -2. Обычно этот псевдопользователь используется, когда суперпользователь системы пытается получить доступ к файлам, примонтированным с другого компьютера, у которого нет доверия к исходному компьютеру.
  • Идентификатор группы - целое число без знака, аналогично идентификатору пользователя предназначено для обозначения в системе уникальных групп пользователей. Под номером 0 зарезервирована группа root. Группы используются в основном для удобного управления и организации совместного доступа к файлам. Как и в случае с идентификаторами пользователей, в системе зарезервированы группы (например bin) для использования самой системой.
  • Поле GECOS – информация, которая не имеет чётко определённой спецификации, отражает в себе дополнительные данные о пользователе: его полное имя, телефоны, сведения о должности и отделе и т. д. Информацию в этом поле можно менять с помощью команды chfn.
  • Домашний каталог — «место» в дереве файловой системы, которое отведено для хранения данных определённого пользователя. Этот каталог из соображений безопасности должен быть доступен только пользователю-владельцу этого каталога. Если домашний каталог отсутствует на момент регистрации, то пользовательские данные помещаются в каталог /. Также, если в файле /etc/login.defs в опции DEFAULT_HOME, задающем домашний каталог по умолчанию указано значение no, то авторизация/регистрация пользователя будет невозможной.
  • Регистрационная оболочка - командная оболочка интерпретатора команд (или любая другая программа), которая запускается при входе пользователя в свою учётную запись. Для Linux используется интерпретатор

Файл /etc/group – создание и удаление групп пользователей

Добавления новой группы в Linux осуществляется с помощью команды

$ groupadd group_name

где group_name название новой группы. Эта команда создаст в файле /etc/group новую запись

Формат этого файла такой же как и у /etc/passwd. Пример содержимого файла /etc/group:
Как видно, каждая строка включает в себя четыре поля:

  1. Имя группы.
  2. Зашифрованный пароль или заполнитель пароля.
  3. Уникальный идентификатор группы.
  4. Список пользователей, входящих в данную группу, содержащий имена пользователей, разделённых запятыми без пробелов.

Интересным здесь является поле пароля. Пароль группы предназначен для того, чтобы пользователи могли вступить в группу с помощью команды newgrp. Сам же пароль для группы задаётся командой gpasswd, после чего он в зашифрованном виде будет храниться в файле /etc/gshadow. Однако, следует заметить, что пароли для групп используются крайне редко. Системным администраторам следует следить за содержимым файлов /etc/passwd и /etc/group и согласовывать их между собой, поскольку иногда возникают ситуации, когда пользователь указывается членом группы в файле /etc/passwd и в то же время в файле /etc/group такого объявления нет. Следует заметить, что в этом случае пользователь будет считаться членом группы, однако всё же настоятельно рекомендуется согласовывать содержимое обоих файлов.

По умолчанию в дистрибутивах Linux (кроме SUSE), при создании пользователя (утилита useradd ) создаётся и его одноимённая группа, в которую он сразу же включается. Это предусмотрено для того, чтобы максимально исключить вероятность доступа разных пользователей к файлам друг друга.

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

$groupdel group_name

Эта команда удалит запись из /etc/group.

Файл /etc/shadow – хранение паролей

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

  1. Регистрационное имя.
  2. Пароль в зашифрованном виде.
  3. Дата последнего изменения пароля.
  4. Минимальное количество дней между изменениями пароля.
  5. Максимальное количество дней между изменениями пароля.
  6. Количество дней до выдачи сообщения об окончании срока действия пароля.
  7. Количество дней (по истечению срока действия пароля) до автоматического аннулирования учётной записи.
  8. Период действия учётной записи.
  9. Зарезервированное поле.

Запись из файла /etc/shadow выглядит следующим образом:

John:$md5$em5JhGE$a$iQhgS70sakdRaRFyy7Ppj. :14469:0:180:14: : :


Следует отметить, что обязательными являются первые два поля. Формат полей дат соответствует количеству дней, прошедших с первого января 1970 года. Поле с регистрационным именем, как уже отмечалось, заполняется соответствующим значением из файла /etc/passwd. В Linux седьмое поле содержит значение, которое определяет по истечении какого времени (в днях) после устаревания пароля учётная запись будет автоматически отключена. Эта интерпретация отличается от той, которая используется в системах Solaris и HP-UX. В восьмом поле, для установки даты истечения срока действия учётной записи можно использовать команду usermod в формате гггг-мм-чч.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter .