У каждого пользователя в Unix есть своя домашняя папка, предназначенная для хранения данных пользователя в месте, доступном только для него. О том, как узнать домашнюю директорию любого пользователя можно прочитать по → этой ссылке. О том, где и как создаются записи о домашнем каталоге пользователя написано в → этой статье. О том, как поменять домашнюю папку пользователя по умолчанию в Linux → по этой ссылке. Все перечисленные сведения полезны и могут помочь ручками поправить путь до домашнего каталога пользователя, однако для его смены есть удобная команда linux — usermod
. То, как с её помощью быстро поменять домашнюю директорию для пользователя и рассмотрим ниже.
Зная название команды, лично я лезу в подсказки операционной системе по ней. Чего и всем советую. =) Данный случай не является исключением. Сперва посмотрим на те опции, которые описаны в хэлпе:
[email protected]:~# usermod -h
Usage: usermod [options] LOGIN
Options:
-c, --comment COMMENT new value of the GECOS field
-d, --home HOME_DIR new home directory for the user account
-e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE
-f, --inactive INACTIVE set password inactive after expiration
to INACTIVE
-g, --gid GROUP force use GROUP as new primary group
-G, --groups GROUPS new list of supplementary GROUPS
-a, --append append the user to the supplemental GROUPS
mentioned by the -G option without removing
him/her from other groups
-h, --help display this help message and exit
-l, --login NEW_LOGIN new value of the login name
-L, --lock lock the user account
-m, --move-home move contents of the home directory to the
new location (use only with -d)
-o, --non-unique allow using duplicate (non-unique) UID
-p, --password PASSWORD use encrypted password for the new password
-R, --root CHROOT_DIR directory to chroot into
-s, --shell SHELL new login shell for the user account
-u, --uid UID new UID for the user account
-U, --unlock unlock the user account
-v, --add-subuids FIRST-LAST add range of subordinate uids
-V, --del-subuids FIRST-LAST remove range of subordinate uids
-w, --add-subgids FIRST-LAST add range of subordinate gids
-W, --del-subgids FIRST-LAST remove range of subordinate gids
-Z, --selinux-user SEUSER new SELinux user mapping for the user account
Как видно, опций у команды usermod
более, чем достаточно, но для текущей цели (смены домашнего каталога пользователя) понадобится опция -d
. Её и рассмотрим более подробно.
Как с помощью опции -d
команды usermod
в линукс поменять домашнюю директорию пользователя
Рассмотрим на живом примере. Создадим нового пользователя (как это сделать → подробно тут):
[email protected]:~# adduser newuser
Посмотрим на запись об этом пользователе в файле /etc/passwd
. Она имеет следующий вид:
[email protected]:~# cat /etc/passwd
...
newuser:x:1000:1000:,,,:/var/www/newuser:/bin/bash
...
Посмотрим содержимое этой домашней папки (она пустая):
[email protected]:~# ls -l /var/www/newuser
total 0
[email protected]:~# tree /var/www/newuser
/var/www/newuser
0 directories, 0 files
И теперь сменим домашнюю папку этому пользователю:
[email protected]:~# usermod -d /var/www/newuser2 newuser
[email protected]:~# ls -l /var/www/newuser2
ls: cannot access '/var/www/newuser2': No such file or directory
[email protected]:~# cat /etc/passwd
...
newuser:x:1000:1000:,,,:/var/www/newuser2:/bin/bash
...
- Командой
usermod -d /var/www/newuser2 newuser
прописали папку/var/www/newuser2
в качестве домашней для пользователяnewuser
- Но директория при этом не была создана. Это видно при попытке её прочитать:
ls -l /var/www/newuser2
- Однако, запись в файле
/etc/passwd
была изменена.
Можно конечно создать эту папку вручную командой mkdir
(читать тут), а потом прописать ей владельца и группу командой chown
(читать тут), но проще и безболезненнее воспользоваться дополнительной опцией -m
команды usermod
. Важно, чтобы папка пользователя содержала хоть что-нибудь в себе. Даже просто пустой файл. Тогда и только тогда, новая папка будет создана и в неё будет перенесено содержимое старой папки.
Поэтому для того, чтобы поменять домашнюю директорию для пользователя linux, нужно воспользоваться командой usermod с опцией -md. При этом в папке пользователя должны храниться какие-нибудь данные.
Формат команды переноса:
usermod -md /путь_до_новой_домашней_папки username
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Выберите, то, чем пользуетесь чаще всего:
Управление пользователями системы и их основными и дополнительными группами – одна из важных задач при администрировании Linux. С ней отлично справляется встроенная команда usermod.
В этой статье будет рассмотрена команда usermod Linux. Сначала мы разберем её синтаксис и опции, а затем перейдем к конкретным примерам её использования, которые могут оказаться для вас полезными.
Утилита usermod нужна для управления пользователями Linux, их основными и дополнительными группами. При ее выполнении в терминале нужно указать опции и конкретного пользователя, к которому применяются изменения. Синтаксис здесь следующий:
$ usermod опции имя_пользователя
Рассмотрим опции, которые будут использоваться в этой статье:
- —a, —append – добавить пользователя в одну или несколько дополнительных групп. Опция будет работать только вместе с опцией -G.
- —b, —badnames – разрешить использование имен, которые не соответствуют стандартам.
- —d, —home – указать новое местоположение домашнего каталога пользователя. При использовании опции -m содержимое текущего домашнего каталога будет перемещено на новое место.
- —e, —expiredate – указать дату, при наступлении которой учетная запись будет отключена. Дата вводится в формате ГГГГ-ММ-ДД. Если использовать эту опцию без указания даты, то отключение пользователя будет отменено.
- —f, —inactive – установить количество дней для блокировки пользователя, которое должно пройти после устаревания пароля. При значении -1 опция блокировки отключается, а при значении 0 блокировка случится сразу же после устаревания.
- —g, —gid – выбрать новую основную группу для пользователя и для файлов в его домашнем каталоге. Нужно задать имя или номер новой группы.
- —G, —groups – указать список дополнительных групп, в которые должен входить пользователь. Между собой группы разделяются запятой. Если пользователь входит в дополнительную группу, которая не была указана в списке, то он будет из нее удалён. Но при использовании опции -a можно добавлять новые дополнительные группы, не удаляя старые.
- —l, —login – изменить имя пользователя на новое. Данная опция не затрагивает никакие другие данные. А значит, название домашнего каталога и почты придется изменять вручную, чтобы они совпадали с новым именем пользователя.
- —L, —lock – заблокировать пароль пользователя. Эта опция помещает символ ! (восклицательный знак) перед паролем в зашифрованном виде, отключая его. Данную опцию нельзя использовать с -p и -U.
- —m, —move-home – изменить местоположение домашнего каталога пользователя. Опция будет работать только вместе с -d. Утилита попытается обновить права собственности на файлы и скопировать режимы, ACL и расширенные атрибуты.
- —o, —non-unique – разрешить заменить идентификационный номер пользователя на не уникальное значение. Работает в паре с опцией -u.
- —p, —password – изменить пароль в зашифрованном виде.
- —R, —root – выполнить chroot в указанный каталог и использовать его вместо корневого каталога / с хранящимися в нем конфигурационными файлами.
- —s, —shell – указать новую командную оболочку shell для пользователя. При использовании опции -s с пустым значением будет выбрана оболочка по умолчанию.
- —u, —uid – изменить параметр UID (числовой идентификатор пользователя). Данные изменения автоматически применятся к почтовому ящику и содержимому домашнего каталога. Для остальных файлов UID придется изменять вручную.
- —U, —unlock – разблокировать пароль пользователя. Данная опция убирает символ ! (восклицательный знак) перед паролем в зашифрованном виде, разрешая использовать его для входа. Не сработает с -p и -L.
Все доступные опции с исходным описанием для данной утилиты вы можете просмотреть в терминале, выполнив следующую команду:
man usermod
На этом вводная часть статьи завершена. Теперь самое время рассмотреть конкретные примеры использования данной утилиты для администрирования группами в Linux.
Примеры использования usermod
Разберем типовые задачи, которые могут пригодиться вам для управления учетными записями на компьютере или ноутбуке.
1. Изменить основную группу
Посмотреть список всех групп, доступных в системе, можно в файле /etc/group, например, с помощью редактора vi в терминале:
vi /etc/group
Для смены основной группы нужна опция -g. Синтаксис здесь следующий:
$ usermod -g имя_основной_группы имя_пользователя
Задача – изменить основную группу для пользователя test_user на test_group (GID – 1001). Так будет выглядеть команда в нашем случае:
sudo usermod -g test_group test_user
Затем можно проверить что изменения применились с помощью команды id. В результатах вывода команды id нам интересен пункт GID. А еще вместо названия группы можно использовать ее идентификатор GID (1001 в нашем случае):
sudo usermod -g 1001 test_user
2. Добавить в группу
Допустим пользователь gregory2 обладает ограниченными правами, ведь используется в редких случаях для удаленного управления системой. Его нужно включить в группу plugdev, чтобы иметь полный доступ ко внешним устройствам, например, подключенным по USB жестким дискам. Сначала проверим его текущие группы командой:
groups gregory2
С этой задачей поможет параметр —G. Но его обязательно нужно использовать вместе с -a, чтобы добавить новую группу, не удаляя старые:
sudo usermod -a -G plugdev gregory2
Более подробная инструкция по добавлению пользователя в группу с помощью команды usermod описана в отдельной статье. Теперь вы знаете как добавить пользователя в группу usermod.
3. Удалить из группы
Дальше давайте рассмотрим как удалить пользователя из группы usermod. Эта утилита не слишком хорошо справляется с удалением пользователя из групп, ведь нужной опции в ней просто нет. Но с помощью -G можно указать, в каких дополнительных группах пользователь останется, чтобы удалить все остальные.
В качестве примера возьмем уже упомянутую учетную запись gregory2. Задача – оставить ее только в группе disk, убрав cdrom и plugdev. В таком случае нужно для usermod задать опцию -G и ту группу, которая останется:
sudo usermod -G disk gregory2
А если вы хотите удалить все дополнительные группы для конкретного пользователя, передайте опции -G пустое значение:
sudo usermod -G "" gregory2
В подробностях удаление пользователя из группы мы рассказывали в отдельной статье. Помимо утилиты usermod, в ней разобрана работа с gpasswd и deluser.
4. Изменить домашнюю папку
Чтобы увидеть текущий адрес домашней папки конкретно пользователя, посмотрите содержимое файла /etc/passwd, например, с помощью утилиты grep:
grep gregory2 /etc/passwd
Конкретный каталог выводится с первым символом / (косая черта).
Здесь стоит отдельно рассмотреть два сценария: выбор другого местоположения для домашнего каталога и перемещение текущего домашнего каталога со всем его содержимым на новое место.
Если вы хотите просто изменить домашнюю папку, то воспользуйтесь опцией -d, указав новый адрес. Утилита автоматически создаст папку, если ее нет. В качестве примера возьмем путь /home/new-dir:
sudo usermod -d /home/new-dir gregory2
Проверим изменения с помощью уже упомянутой утилиты grep:
grep gregory2 /etc/passwd
А если вы хотите переместить домашнюю папку, сохранив все содержимое, то дополните опцию -d опцией -m, опять же, указав новый путь. В качестве примера возьмем путь /home/gregory-new:
sudo usermod -m -d /home/gregory-new gregory2
Проверить местоположение новой папки можно с помощью grep, а убедиться в копировании содержимого – через файловый менеджер Linux.
5. Изменить оболочку
Просмотреть весь список доступных в системе оболочек получится в файле /etc/shells. Откройте его в редакторе vi:
vi /etc/shells
Просмотреть оболочку конкретного пользователя можно в уже упомянутом файле /etc/passwd:
grep gregory2 /etc/passwd
Нужная информация идет после домашнего каталога.
Для того чтобы поменять оболочку shell используйте опцию -s. В качестве примера возьмем оболочку /usr/bin/dash:
sudo usermod -s /usr/bin/dash gregory2
6. Изменить UID
UID – числовой идентификатор пользователя. Для его просмотра воспользуйтесь утилитой id:
id gregory2
Для изменения этого значения нужна опция -u. При этом новый номер должен быть неотрицательным (число 0 допустимо) и уникальным. В качестве примера возьмем 9138:
sudo usermod -u 9138 gregory2
Вы можете задать неуникальный номер UID, добавив к исходной команде опцию —o. В качестве примера возьмем идентификатор 0, который по умолчанию закреплен за группой root:
sudo usermod -o -u 0 gregory2
Не забывайте, что данные изменения автоматически применяются только к домашнему каталогу с его содержимым и к почтовому ящику.
7. Изменить логин
Для изменения логина (имени) пользователя предназначена опция -l. Но при этом она не затрагивает название домашнего каталога. Если вас это устраивает, то можете воспользоваться ей. Синтаксис:
$ sudo usermod -l новое_имя старое_имя
Вот как это выглядит с пользователем gregory2, который нужно переименовать в gregory3:
sudo usermod -l gregory3 gregory2
Ну а еще вы можете использовать эту команду вместе с перенесением домашней папки, например, в /home/gregory3:
sudo usermod -l gregory3 -m -d /home/gregory3 gregory2
8. Изменить пароль
Опция —password предназначена для изменения пароля в зашифрованном виде. А значит, так просто ей воспользоваться не получится. Необходимо добавить к ней команду openssl passwd для шифрования пароля. Для того чтобы изменить пароль на xz3 выполните:
sudo usermod --password $(openssl passwd -6 'xz3') gregory
В результате пароль изменится сразу же после ее выполнения.
9. Заблокировать пользователя
Для блокировки пользователя пригодится опция -L, которая блокирует вход по паролю:
sudo usermod -L gregory2
При использовании этой опции перед паролем пользователя в файле /etc/shadow добавляется восклицательный знак и пользователь не сможет больше войти в систему по паролю. Однако, другие способы входа ещё доступны. Для полной блокировки учетной записи к команде нужно добавить опцию —expiredate со значением 1:
sudo usermod --expiredate 1 -L gregory2
Для отмены блокировки в таком случае сработает команда с опциями -U и -e с пустым значением:
sudo usermod --expiredate "" -U gregory2
А еще с помощью —expiredate можно указать точную дату для блокировки в формате ГГГГ-ММ-ДД. Вот как будет выглядеть команда для 28 января 2023 года:
sudo usermod --expiredate 2023-01-28 gregory2
Посмотреть срок действия учетной записи получится через утилиту chage с опцией -l:
sudo chage -l gregory2
Выводы
Команда usermod linux позволяет достаточно удобно управлять группами пользователей, а также менять информацию о нём. Ну а если вы хотите более подробно разобраться с самими группами и их устройством в различных дистрибутивах Linux, ознакомьтесь с этим материалом. В нем детально рассмотрена эта тема, место хранения файла с группами и другая полезная информация.
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
usermod
— это утилита командной строки, позволяющая изменять данные для входа пользователя.
В этой статье рассказывается, как использовать команду usermod
для добавления пользователя в группу, изменения оболочки пользователя, имени входа, домашнего каталога и т.д.
Синтаксис команды usermod имеет следующий вид:
usermod [options] USER
Только root или пользователи с sudo доступом могут вызывать usermod и изменять учетную запись пользователя. В случае успеха команда не выводит никаких результатов.
Добавить пользователя в группу
Наиболее типичный вариант использования usermod — добавление пользователя в группу.
Чтобы добавить существующего пользователя во вторичную группу, используйте параметры -a -G
после имени группы и имени пользователя:
usermod -a -G GROUP USER
Если вы хотите добавить пользователя сразу в несколько групп, укажите группы после -G
параметра, разделенные, (запятыми), без пробелов.
Например, чтобы добавить пользователя linuxizeв gamesгруппу, вы должны выполнить следующую команду:
sudo usermod -a -G games linuxize
Всегда используйте опцию -a
(добавить) при добавлении пользователя в новую группу. Если вы не укажете этот параметр, пользователь будет удален из групп, не перечисленных после -G
параметра.
Если пользователя или группы не существует, команда предупредит вас.
Изменить основную группу пользователя
Чтобы изменить основную группу пользователя, вызовите команду usermod с помощью параметра -g
, следующего за именем группы и именем пользователя:
sudo usermod -g GROUP USER
В следующем примере мы меняем основную группу пользователя linuxize на developers:
usermod -g developers linuxize
Каждый пользователь может принадлежать ровно к одной основной группе и нулю или более вторичных групп.
Изменение информации о пользователе
Чтобы изменить информацию GECOS (полное имя пользователя), запустите команду с параметром -c
, за которым следует новый комментарий и имя пользователя:
usermod -c "GECOS Comment" USER
Вот пример, показывающий, как добавить дополнительную информацию пользователю linuxize:
usermod -c "Test User" linuxize
Эта информация хранится в файле /etc/passwd.
Изменение домашнего каталога пользователя
В большинстве систем Linux домашние каталоги пользователей названы по имени пользователя и создаются в каталоге /home.
Если по какой-то причине вы хотите изменить домашний каталог пользователя, вызовите usermodкоманду, указав опцию -d
, указав абсолютный путь к новому домашнему каталогу и имя пользователя:
usermod -d HOME_DIR USER
По умолчанию команда не перемещает содержимое домашнего каталога пользователя в новый. Чтобы переместить содержимое, используйте опцию -m
. Если новый каталог еще не существует, он создается:
usermod -d HOME_DIR -m USER
Вот пример, показывающий, как изменить домашний каталог пользователя www-data на /var/www:
usermod -d /var/www www-data
Изменение пользовательской оболочки по умолчанию
Оболочка по умолчанию — это оболочка, которая запускается после входа в систему. По умолчанию в большинстве систем Linux в качестве оболочки по умолчанию используется Bash Shell.
Чтобы изменить оболочку пользователя по умолчанию, запустите команду с параметром -s
, следующим за абсолютным путем оболочки и именем пользователя:
usermod -s SHELL USER
В приведенном ниже примере мы меняем оболочку пользователя на Zsh:
sudo usermod -s /usr/bin/zsh linuxize
Вы можете узнать, какие оболочки доступны в вашей системе, просмотрев /etc/shells содержимое файла.
Изменение UID пользователя
UID (идентификатор пользователя) — это номер, присвоенный каждому пользователю. Он используется операционной системой для обозначения пользователя.
Чтобы изменить UID пользователя, вызовите команду с -uпараметром, следующим за новым UID и именем пользователя:
usermod -u UID USER
В приведенном ниже примере показано, как изменить номер «UID» на «1050»:
sudo usermod -u 1050 linuxize
UID файлов, принадлежащих пользователю и находящихся в домашнем каталоге пользователя, и файл почтового ящика пользователя будет изменен автоматически. Право собственности на все остальные файлы необходимо изменить вручную.
Изменение имени пользователя
Хотя не очень часто, иногда вам может потребоваться изменить имя существующего пользователя. Параметр -l
используется для изменения имени пользователя:
usermod -l NEW_USER USER
В приведенном ниже примере мы переименование пользователя linuxizeк lisaна «1050»:
sudo usermod -l linuxize lisa
При изменении имени пользователя вы также можете изменить домашний каталог пользователя, чтобы отразить новое имя пользователя.
Установка даты истечения срока действия пользователя
Дата истечения срока — это дата, когда учетная запись пользователя будет отключена. Чтобы установить дату истечения срока действия пользователя, используйте опцию -e
:
sudo usermod -e DATE USER
Срок годности должен быть установлен в формате YYYY-MM-DD.
Например, чтобы отключить пользователя linuxize на 2022-02-21, вы бы выполнить следующую команду:
sudo usermod -e "2022-02-21" linuxize
Чтобы отключить истечение срока действия учетной записи, установите пустую дату истечения срока действия:
sudo usermod -e "" linuxize
Используйте chage команду -l
, чтобы просмотреть дату истечения срока действия пользователя:
sudo chage -l linuxize
Last password change : Jul 24, 2018 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
Срок годности хранится в /etc/shadow файле.
Блокировка и разблокировка учетной записи пользователя
Опция -L
позволяет заблокировать учетную запись пользователя:
usermod -L USER
Команды вставят восклицательный знак (!
) перед зашифрованным паролем. Если поле пароля в /etc/shadow файле содержит восклицательный знак, пользователь не сможет войти в систему, используя аутентификацию по паролю. Другие методы входа в систему, такие как аутентификация на основе ключей или переключение на пользователя, по-прежнему разрешены. Если вы хотите заблокировать учетную запись и отключить все методы входа в систему, вам также необходимо установить дату истечения срока действия равной 1.
В следующих примерах показано, как заблокировать пользователя linuxize:
sudo usermod -L linuxize sudo usermod -L -e 1 linuxize
Чтобы разблокировать пользователя, запустите usermodс -Uопцией:
usermod -U USER
Заключение
Мы показали вам, как использовать команду usermod для установки информации об учетной записи пользователя.
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.
Состояние перевода: На этой странице представлен перевод статьи Users and groups. Дата последней синхронизации: 11 июля 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
Механизм пользвателей и групп используется в GNU/Linux для управления доступом к файлам, каталогам и периферийным устройствам. Базовый контроль доступа в Linux прост и не предлагает большого выбора настроек. Некоторые инструменты обеспечивают расширенный набор возможностей, подробнее см. ACL, Capabilities и PAM#Configuration How-Tos.
Обзор
Под пользователем понимается любой, кто работает с компьютером. Как правило, для каждого пользователя в системе создаётся отдельный аккаунт, которому присваивается специальное имя. В качестве имени пользователя можно использовать как реальные имена, вроде Mary или Bill, так и псевдонимы — Dragonlady, Pirate и т.п. С помощью имени пользователь получает доступ к своему аккаунту и, в конечном счёте, к системе. Некоторые системные службы запускаются либо привилегированными аккаунтами, либо строго определёнными аккаунтами пользователей.
Механизм пользователей был разработан по соображениям безопасности, для ограничения доступа к различным частям системы. Суперпользователь (root) имеет полный доступ к операционной системе и её настройкам. Этот аккаунт используется только для целей системного администрирования; обычные пользователи могут временно повысить уровень своих прав командами su и sudo.
Один человек может создать несколько аккаунтов с разными именами. Некоторые специфические имена, вроде того же «root», зарезервированы и запрещены к использованию.
Пользователи часто объединятся в «группы». Добавление пользователя в определённую группу обычно даёт ему дополнительные права, связанные с этой группой.
Примечание: Если у вас нет опыта работы с аккаунтами и правами, то используйте указанные в статье инструменты с осторожностью. Не пытайтесь что-либо сделать с существующими аккаутами пользователей, за исключением разве что своего собственного.
Права и владельцы
Из статьи Всё в UNIX есть файл:
- В операционной системе UNIX были сформулированы некоторые общие идеи и принципы, которые оказали в дальнейшем сильное влияние на её архитектуру, пользовательский интерфейс, культуру и развитие. В частности, один из основополагающих принципов выражается мантрой «всё есть файл», которую часто называют определяющим пунктом UNIX в целом.
- Суть данного принципа заключается в создании унифицированного способа доступа к широкому диапазону ресурсов ввода/вывода: к документам, каталогам, жёстким дискам, дискам CD-ROM, модемам, клавиатурам, принтерам, мониторам, терминалам и даже межпроцессным и сетевым взаимодействиям. Цель — предоставление универсальной абстракции для каждого из этих объектов, названных отцами-оснвоателями UNIX общим термином «файл». Поскольку доступ к файлу осуществляется с помощью одного и того же API, стало возможно использовать одинаковый набор базовых команд для чтения и записи таких разнородных устройств, как диск, клавиатура, документ или сетевой интерфейс.
Из статьи Использование абстракции файла в UNIX для работы с сетью:
- Абстракция файла, существующая в операционной системе UNIX и совместимых с ней системах, является основополагающей и всеобъемлющей. Любая системная служба и интерфейс устройства теперь могут реализовываться так, чтобы предоставлять другим приложениям метафору файла или файловой системы. Это открывает новые способы их использования и значительно расширяет возможности существующих приложений — простые инструменты, разработанные для решения узких задач, теперь, вооружившись абстракцией файла UNIX, могут использоваться совершенно по-новому. Небольшая утилита вроде cat, предназначенная для считываения одного или нескольких файлов и вывода их содержимого на стандартный поток вывода, теперь может выполнять чтение с устройств ввода-вывода с помощью специальных файлов устройств, как правило расположенных в каталоге
/dev
. С другой стороны, во многих системах запись и проигрываение звука теперь выполняется всего лишь командами «cat /dev/audio > myfile
» и «cat myfile > /dev/audio
» соответственно.
В GNU/Linux каждый файл принадлежит какому-то пользователю и группе. Существует три типа прав доступа — чтение, запись и исполнение. Права доступа задаются по отдельности для владельца-пользователя, владельца-группы, и для прочих пользователей, которые не входят в первые две категории. Владельцев файла и права доступа можно узнать с помощью «длинного» формата команды ls:
$ ls -l /boot/
total 13740 drwxr-xr-x 2 root root 4096 Jan 12 00:33 grub -rw-r--r-- 1 root root 8570335 Jan 12 00:33 initramfs-linux-fallback.img -rw-r--r-- 1 root root 1821573 Jan 12 00:31 initramfs-linux.img -rw-r--r-- 1 root root 1457315 Jan 8 08:19 System.map26 -rw-r--r-- 1 root root 2209920 Jan 8 08:19 vmlinuz-linux
Первая колонка содержит права доступа к файлу (например, правами файла initramfs-linux.img
являются -rw-r--r--
). Третья и четвёртая колонки содержат соответственно пользователя и группу, которым принадлежит файл. В этом примере все файлы принадлежат пользователю root и группе root.
$ ls -l /media/
total 16 drwxrwx--- 1 root vboxsf 16384 Jan 29 11:02 sf_Shared
В этом примере каталог sf_Shared
принадлежит пользователю root и группе vboxsf. Владельца и права доступа можно также определить утилитой stat.
Пользователь-владелец:
$ stat -c %U /media/sf_Shared/
root
Группа-владелец:
$ stat -c %G /media/sf_Shared/
vboxsf
Права доступа:
$ stat -c %A /media/sf_Shared/
drwxrwx---
Права доступа отображаются тремя группами символов, которые являются правами соответственно пользователя, группы и всех остальных. Например, строка -rw-r--r--
говорит о том, что владелец файла имеет права на чтение и запись, но не на выполнение (rw-
), а пользователи из группы-владельца и прочие пользователи имеют доступ только на чтение (r--
и r--
). С другой стороны, строка drwxrwx---
говорит о том, что у пользователя и группы права на чтение, запись и исполнение (rwx
и rwx
), а все остальные доступа к файлу не имеют вовсе (---
). Первый символ в строке означает тип файла.
Вывести список всех файлов, принадлежащих пользователю или группе, можно с помощью утилиты find:
# find / -group имя_группы
# find / -group номер_группы
# find / -user имя_пользователя
Изменить владельцев файла можно командой chown, а права доступа меняются командой chmod:
См. также chown(1), chmod(1) и Linux file permissions.
Shadow
В Arch Linux инструменты для работы с пользователями, группами и паролями собраны в пакет shadow, который являеется зависимостью мета-пакета base.
Список файлов
Важно: Ни в коем случае не редактируйте эти файлы вручную. Есть специальные программы, которые обеспечивают правильную работу с базами данных и гарантируют отсутствие ошибок в форматировании. Подробнее см. #Управление пользователями и #Управление группами.
Файл | Назначение |
---|---|
/etc/shadow |
Безопасное хранение информации о пользователях |
/etc/passwd |
Информация о пользователях |
/etc/gshadow |
Скрытая информация о группах |
/etc/group |
Принадлежность пользователей к группам |
Управление пользователями
Список пользователей, которые в настоящий момент выполнили вход в систему, можно вывести командой who
. Список хранящихся в базе данных аккаунтов и их характеристик можно вывести командой passwd -Sa
с правами root. Описание формата вывода вы найдёте в руководстве passwd(1).
Добавление нового пользователя выполняется командой useradd:
# useradd -m -G дополнительные_группы -s оболочка_входа имя_пользователя
-m
/--create-home
- указание создать домашний каталог пользователя по адресу
/home/имя_пользователя
. В каталоге создаётся набор стартовых файлов, владельцем которых назначается новый пользователь. -G
/--groups
- список дополнительных групп, в которые должен войти новый пользователь. Группы в списке разделяются запятыми. По умолчанию новый пользователь добавляется только в начальную группу (см. ниже в этом разделе).
-s
/--shell
- путь к файлу оболочки входа (login shell) пользователя. Убедитесь, что пакет с необходимой оболочкой установлен, если указали что-то, отличное от Bash.
Важно: Файл оболочки входа должен совпадать с одним из указанных в файле /etc/shells
. В противном случае PAM-модуль pam_shell
отклонит запрос на вход. В частности, нельзя вместо /bin/bash
использовать /usr/bin/bash
, разве что вы заранее настроили файл /etc/shells
соответствующим образом. Подробнее см. FS#33677.
Примечание: При создании пользователя необходимо также с помощью утилиты passwd задать пароль. Подробнее см. #Пример добавления пользователя.
Группы в параметре -G
задаются именами или номерами существующих групп. Если этот парамет не указан, то поведение useradd зависит от переменной USERGROUPS_ENAB
в файле /etc/login.defs
. Стандартное поведение (USERGROUPS_ENAB yes
) — создать группу, название которой совпадает с именем нового пользователя.
Когда оболочка входа не нужна, например, если аккаунт пользователя создаётся для работы неинтерактивной службы, вместо обычной оболочки можно указать /usr/bin/nologin
. В этом случае процедура входа будет корректно отклоняться (см. nologin(8)).
Другие доступные параметры можно найти в руководстве useradd(8).
Пример добавления пользователя
Команда ниже добавит в систему пользователя archie
, попутно создав для него домашний каталог, а также задействует настройки по умолчанию для групп, названий каталогов, используемых оболочек и проч.
# useradd -m archie
Совет: Узнать используемую по умолчанию оболочку входа можно командой useradd --defaults
. Обычно в роли такой оболочки выступает Bash; чтобы это изменить, воспользуйтесь флагом -s
/--shell
. В файле /etc/shells
перечислены доступные оболочки.
Хотя задавать пароль для защиты нового пользователя не обязательно, всё же рекомендуется это сделать:
# passwd archie
Указанная выше команда useradd автоматически создаст группу archie
и сделает её группой по умолчанию для пользователя archie
. Считается правильным подходом создавать отдельную группу для каждого нового пользователя.
Флагом -g
можно задать другую исходную группу, но объединять пользователей в одну группу (например, users
) в многопользовательских системах не рекомендуется. Причина в том, что для совместного доступа на запись для группы пользователей значение umask устанавливается на 002
; в итоге все члены группы смогут перезаписывать ваши файлы. См. также User Private Groups[устаревшая ссылка 2021-11-19 ⓘ]. Если всё же необходимо добавить пользователя в какую-то группу, то при его создании укажите её как вспомогательную.
Если следовать рекомендованному подходу, т.е. создать группу, название которой совпадает с именем пользователя, то все файлы по умолчанию доступны на запись только создавшему их пользователю. Если вы хотите сделать некий каталог доступным на запись для всех членов определённой группы, то этому каталогу нужно установаить в правах доступа т.н. «бит setgid». Все создаваемые в этом каталоге файлы и подкаталоги получат в качестве группы-владельца группу родительского каталога, а не группу пользователя, их создавшего. Т.о. эти файлы будут доступны на запись для всех членов группы:
# chmod g+s каталог_с_совместным_доступом
Временно изменить идентификатор группы GID пользователя можно командой newgrp. Например, после команды newgrp название_группы
создаваемые пользователем файлы будут привязаны к идентификатору группы название_группы
; при этом заново выполнять вход не потребуется. Чтобы изменить GID обратно на исходный, выполните команду newgrp без аргументов.
Пример добавления системного пользователя
Системные пользователи чаще всего создаются для запуска процесоов/демонов другими пользователями, для защиты (например, с помощью chown) файлов и/или каталогов, а также по другим соображениям безопасности.
Команда ниже создаст системного пользователя без доступа к командной оболочке и без домашнего каталога (можно также указать флаг -U
, чтобы создать группу, название которой совпадает с именем пользователя, и добавить пользователя в эту группу):
# useradd -r -s /usr/bin/nologin имя_пользователя
Если необходимо присвоить новому пользователю конкретные идентификаторы UID и GID, то укажите их флагами -u
/--uid
и -g
/--gid
:
# useradd -r -u 850 -g 850 -s /usr/bin/nologin имя_пользоваетеля
Смена имени пользователя или домашнего каталога
Команда для изменения домашнего каталога пользователя:
# usermod -d /новый/домашний/каталог -m имя_пользователя
Флаг -m
нужен для автоматического создания нового каталога и переноса в него всего содержимого старого.
Совет: Можно создать ссылку из прежнего домашнего каталога на новый. Это позволит программам находить нужные файлы, путь которых задан в исходниках явно.
# ln -s /новый/домашний/каталог/ /старый/домашний/каталог
Обратите внимание, что в строке /старый/домашний/каталог
отсутствует закрывающй символ /
.
Команда для изменения имени пользователя:
# usermod -l новое_имя старое_имя
Важно: При этом вы не лолжны быть залогинены пользователем, имя которого собираетесь изменить. Откройте новый терминал (например, комбинацией клавиш Ctrl+Alt+F6
), после чего войдите либо в root-аккаунт, либо в аккаунт другого пользователя, повысив права до root. usermod не позволит по ошибке изменить имя «самого себя».
Смена имени пользоваеля проста и безопасна, когда выполняется правильно. Просто используйте usermod. Если пользователь входит в «личную» группу с таким же именем, то переименовать её можно командой groupmod.
Альтернативный способ — отредактировать непосредственно файл /etc/passwd
. В разделе #База данных пользователей дано описание его формата.
Также следует имейть в виду:
- При использовании sudo убедитесь, что не забыли обновить файл
/etc/sudoers
, добавив в него нового пользователя (используйте для этого утилиту visudo с правами root). - Задачи crontab также необходимо отредактировать, переименовав файл пользователя в файле
/var/spool/cron
. Затем выполнитеcrontab -e
и отредактируйте пути к файлам и права доступа к ним. - Содержимое пользовательских файлов и каталогов Wine (вроде
~/.wine/drive_c/users
и~/.local/share/applications/wine/Programs
) необходимо отредактировать. - Некоторые дополнения Thunderburd, вроде Enigmail, возможно придётся переустановить.
- Все элементы системы (комбинации клавиш, сценарии оболочки и т.п.), где используются абсолютные пути к файлам в старом домашнем каталоге, необходимо изменить. Чтобы избежать этого в будущем, используйте в скриптах переменные
~
или$HOME
для обозначения домашнего каталога. - Тажке не забудьте отредактировать файлы настроек в каталоге
/etc/
, которые полагаются на абсолютные пути (например, файлы Samba, CUPS и т.д.). Найти нуждающиеся в редактировании файлы проще всего командойgrep -r старое_имя_пользователя *
.
Другие примеры управления пользователями
Команда для добавления информации о пользователе (например, настоящего имени) в виде комментария GECOS:
# chfn имя_пользователя
(здесь chfn запускается в интерактивном режиме).
Либо же можно добавить более длинный GECOS-комментарий командой:
# usermod -c "Comment" имя_пользователя
Следующая команда пометит пароль пользователя как истёкший и потребует от него при следующем входе создать новый:
# chage -d 0 имя_пользователя
Удаляются аккаунты пользователей командой userdel:
# userdel -r имя_пользователя
Флаг -r
указывает на то, что домашний каталог и почтовый ящик тоже должны быть удалены.
Команда для изменения оболочки входа пользователя:
# usermod -s /bin/bash имя_пользователя
Совет: Скрипт adduserAUR позволяет выполнять действия команд useradd, chfn и passwd интерактивно. См. также FS#32893.
База данных пользователей
Информация о пользователях хранится в открытом виде в файле /etc/passwd
: каждая строка в нём представляет собой набор из семи полей, описывающих аккаунт.
account:password:UID:GID:GECOS:directory:shell
По порядку:
account
— имя пользователя. Это поле не может быть пустым. Применяются стандартные для *NIX правила именования.password
— пароль пользователя.Важно: Файл
passwd
доступен на чтение для всех пользователей в системе, поэтому хранить в нём пароли (в виде хэш-сумм или как-то иначе) небезопасно. Вместо этого в Arch Linux используются shadow-пароли: полеpassword
содержит всего лишь символx
, а хэшированный пароль хранится в файле/etc/shadow
, доступ к которому ограничен. По этой причине менять пароли лучше командой passwd.UID
— численное значение идентификатора пользователя. В Arch Linux нумерация обычных пользователей (отличных от root) начинается с UID 1000.GID
— численное значение идентификатора основной группы пользователя. Идентификаторы групп можно найти в файле /etc/group.GECOS
— необязательное поле, носящее информативный характер; обычно содержит настоящее имя пользователя, но может также использоваться службами вроде finger и изменяться командой chfn. Поскольку поле необязательное, его можно оставить пустым.directory
— используется командой входа для задания переменной окружения$HOME
. Некоторые службы, для которых создаются специальные пользователи, используют для этого корневой каталог/
, но обычные пользователи чаще всего хранят домашний каталог в разделе/home
.shell
— командная оболочка пользователя. Это поле является необязательным, и если в нём ничего не указано, то используется оболочка/bin/bash
.
Пример:
jack:x:1001:1003:Jack Smith,some comment here,,:/home/jack:/bin/bash
Смысл строки следующий: пользователь jack
, пароль хранится в /etc/shadow
, идентификатор пользователя — 1001, идентификатор его основной группы 1003. Полное имя — Jack Smith, также имеется некоторый комментарий. Домашний каталог /home/jack
, используемая командная оболочка — Bash.
Команда pwck проверяет корректность базы данных. При этом она может отстортировать список пользоватей по идентификаторам групп, что бывает полезно при сравнении:
# pwck -s
Важно: Arch Linux при обновлении пакетов создаёт резервные файлы с суффиксом .pacnew. За исключением случая, когда pacman выводит сообщение с требованием что-то предпринять, при появлении файла базы данных с таким суффиксом его необходимо удалить. Добавление новых пользователей и групп должно производиться только утилитой systemd-sysusers(8) или сценариями установки пакетов.
Автоматическая проверка целостности
Чтобы не запускать pwck
/grpck
вручную, можно воспользоваться таймером systemd shadow.timer
из пакета shadow. Он по умолчанию включён и каждый день запускает службу shadow.service
, которая, в свою очередь, будет запускать pwck(8) и grpck(8) для проверки целосности файлов групп и пользователей.
При обнаружении несоответствий группы можно отредактировать с помощью команды vigr(8), а пользователей — командой vipw(8). Эти утилиты предоставляют дополнительный слой безопасности, блокируя базы данных на время редактирования. В качестве редактора по умолчанию используется vi, но с помощью переменной окружения EDITOR
можно выбрать любой другой.
Управление группами
В файле /etc/group
перечислены существующие группы (подробнее см. group(5)). Также существует файл gshadow
, который используется достаточно редко (см. gshadow(5)).
Команда для вывода списка групп, в которых состоит пользователь:
$ groups пользователь
Если пользователь
не указан, то будет выведен список групп текущего пользователя.
Команда id позволяет узнать дополнительные подробности, вроде UID и GID пользователя:
$ id пользователь
Команда для вывода списка существующих групп:
$ cat /etc/group
Команда для создания новой группы:
# groupadd группа
Добавить пользователя в группу можно командой gpasswd
(см. FS#58262 на предмет возможных ошибок):
# gpasswd -a пользователь группа
Также добавить пользователя в группы можно командой usermod (здесь доп_группы
— список групп, разделённых запятыми без пробелов):
# usermod -aG доп_группы пользователь
Важно: Если не указать флаг -a
, то команда удалит пользователя из всех групп, кроме указанных в списке доп_группы
. В итоге пользователь будет числиться только в группах из этого списка и ни в каких более.
Команда для изменения группы, например, переименования:
# groupmod -n новая_группа старая_группа
Примечание: Изменится название группы, но не численное значение GID. Файлы, принадлеживашие старой группе, будут теперь принадлежать новой.
Команда для удаления группы:
# groupdel группа
Команда для удаления пользователя из группы:
# gpasswd -d пользователь группа
Примечание: Если пользователь в этот момент был залогинен, то ему придётся выйти из системы и снова выполнить вход, чтобы изменения вступили в силу.
Проверить корректность базы данных групп можно командой grpck.
Важно: Arch Linux при обновлении пакетов создаёт резервные копии файлов с суффиксом .pacnew. За исключением случаев, когда pacman выводит сообщение с требованием что-то предпринять, файл базы данных с таким суффиксом необходимо удалить. Добавление новых пользователей и групп при установке пакетов должно производиться только утилитой systemd-sysusers(8) или установочными скриптами.
Список групп
В этом разделе объясняется назначение важнейших групп из пакета filesystem. Существует множество других групп, которые создаются при установке пакетов с присвоением корректного GID. Подробности вы найдёте на страницах руководств соответствующих программ.
Примечание: Удаление пакета не приводит к удалению автоматически созданных пользователей и групп. Это сделано намеренно, потому что в противном случае созданные в процессе работы программы файлы могут остаться без владельца, что потенциально представляет угрозу безопасности.
Пользовательские группы
Часто возникает необходимость добавить обычного (не root) пользователя в одну из групп, обеспечивающих доступ к периферийным устройствам или упрощающих системное администрирование:
Группа | Файлы | Назначение |
---|---|---|
adm | Группа администрирования, обычно используется для чтения файлов защищённых логов. Позволяет читать файлы журнала. | |
ftp | /srv/ftp/ |
Доступ к файлам FTP-сервера. |
games | /var/games |
Доступ к некоторым игровым программам. |
http | /srv/http/ |
Доступ к файлам HTTP-сервера. |
log | Доступ к файлам логов в каталоге /var/log/ , созданным syslog-ng.
|
|
rfkill | /dev/rfkill |
Управление питанием беспроводных устройств (используется rfkill). |
sys | Администрирование принтеров с помощью CUPS. | |
systemd-journal | /var/log/journal/* |
Может использоваться как альтернатива группам adm и wheel для чтения журналов systemd [1]. В противном случае отображаются только сообщения, созданные пользователем.
|
uucp | /dev/ttyS[0-9]+ , /dev/tts/[0-9]+ , /dev/ttyUSB[0-9]+ , /dev/ttyACM[0-9]+ , /dev/rfcomm[0-9]+ |
Последовательные порты RS-232 и подключенные к ним устройства. |
wheel | Группа администрирования, даёт необходимые права. Имеет доступ к файлам журнала и принтерам в CUPS. Также позволяет работать с утилитами sudo и su (по умолчанию их не использует). |
Системные группы
Следующие группы имеют значение для всей системы, и добавление в них пользователям производится только в указанных целях:
Группа | Файлы | Назначение |
---|---|---|
dbus | Используется в dbus | |
kmem | /dev/port , /dev/mem , /dev/kmem |
|
locate | /usr/bin/locate , /var/lib/locate , /var/lib/mlocate , /var/lib/slocate |
См. locate. |
lp | /dev/lp[0-9]* , /dev/parport[0-9]* |
Доступ к устройствам параллельного порта (принтеры и прочие). |
/usr/bin/mail |
||
nobody | Непривилегированная группа. | |
proc | /proc/pid/ |
Группа для сбора информации о процессах. Должна быть задана явно опцией монтирования gid= , не работает, если смонтировать файловую систему proc с опцией hidepid=
|
root | /* |
Полный доступ к администрированию и управлению системой (root, admin). |
smmsp | Группа sendmail. | |
tty | /dev/tty , /dev/vcc , /dev/vc , /dev/ptmx |
|
utmp | /run/utmp , /var/log/btmp , /var/log/wtmp |
Группы, существовавшие до перехода на systemd
До перехода Arch Linux на systemd пользователи должны были вручную добавляться к этим группам, чтобы получить доступ к устройствам. Такой подход был признан устаревшим после перехода на udev, помечающий устройства меткой[устаревшая ссылка 2022-09-23 ⓘ] uaccess
, и logind, динамически присваивающий пользователям права доступа с помощью ACL в соответствии с тем, какой сеанс активен на данный момент. Обратите внимание, что чтобы вышеперечисленное работало, сеанс должен быть корректным (см. General troubleshooting#Session permissions).
Есть несколько важных исключений, которые требуют добавления пользователей в группы ниже — например, если вы хотите разрешить неавторизованным пользователям доступ к устройствам. Тем не мнее, имейте в виду, что это может стать причиной определённых проблем (например, группа audio
мешает быстрому переключению между пользователями, а также даёт приложениям возможность блокировать програмное микширование).
Группы | Файлы | Назначение |
---|---|---|
audio | /dev/audio , /dev/snd/* , /dev/rtc0 |
Прямой доступ к звуковому оборудованию для всех сеансов. По-прежнему требуется, чтобы ALSA и OSS работали в удаленных сеансах, см. ALSA#User privileges. Также используется в JACK для выдачи пользователям разрешений на работу в режиме реального времени. |
disk | /dev/sd[a-zA-Z]*[1-9] |
Доступ к блочным устройствам, не затронутым другими группами вроде optical , floppy и storage .
|
floppy | /dev/fd[0-9]* |
Доступ к флоппи-дискам. |
input | /dev/input/event[0-9]* , /dev/input/mouse[0-9]* |
Доступ к устройствам ввода. Введено в systemd 215 [2]. |
kvm | /dev/kvm |
Доступ к виртуальным машинам с использованием KVM. |
optical | /dev/sr[0-9] , /dev/sg[0-9] |
Доступ к оптическим устройствам, таким как CD- и DVD-приводы. |
scanner | /var/lock/sane |
Доступ к оборудованию сканера. |
storage | /dev/st[0-9]*[lma]* , /dev/nst[0-9]*[lma]* |
Даёт доступ к съёмным носителям вроде USB-дисков, устройств flash/jump, MP3-плееров; позволяет монтировать носители [3]. В настоящее время используется в основном для работы с ленточными носителями без использования правил udev: [4], [5], [6], [7]. |
video | /dev/fb/0 , /dev/misc/agpgart |
Доступ к устройствам захвата видео, аппаратное ускорение 2D/3D, framebuffer (X можно использовать без поддержки этой группы). |
Неиспользуемые группы
Следующие группы в настоящий момент никак не используются.
Группа | Файлы | Назначение |
---|---|---|
bin | Историческое наследие. | |
daemon | ||
lock | Использовалась для lockfile-доступа. Требовалась для gnokiiAUR. | |
mem | ||
network | Не использовалась по умолчанию. Могла использоваться в NetworkManager (см. NetworkManager#Set up PolicyKit permissions). | |
power | ||
uuidd | ||
users | Основная группа для пользователей; использовалась, если приватные группы не были предусмотрены. Например, при создании с опцией USERGROUPS_ENAB no в файле /etc/login.defs , или командой useradd с флагом -N /--no-user-group пользователь помещался именно в эту группу.
|
Прочие инструменты для работы с базами данных
Для просмотра отдельных записей можно использовать getent(1):
% getent group tty
Как отмечалось в разделе #База данных пользователей, для работы с базами данных лучше использовать специализированные утилиты вроде passwd
и chfn
. Если же они недоступны, то есть vipw
и vigr
. Данные редакторы предпочтительней обычных текстовых редакторов, поскольку они могут блокировать базу данных на случай одновременного редактирования, а также не позволяют добавить в базу некорректную запись. Shadow-базы редактируются командами vipw -s
и vigr -s
из пакета util-linux, если утилита chage также недоступна. См. также FS#31414.
Обновлено: 28.07.2022
Опубликовано: 05.12.2016
В данной инструкции рассказывается о работе с пользователями Linux через терминал (с применением командной строки).
Просмотр
Создание
Редактирование
Удаление
Блокировка
Работа с группами
Список пользователей
Примеры
Получение информации о пользователях
1. Список пользователей можно посмотреть в файле /etc/passwd командой:
less /etc/passwd
Данная команда вернет всех пользователей, в том числе служебных. Для отображения только учетных записей пользователей можно ввести команду:
users
2. Проверить существование пользователя и увидеть его идентификатор можно с помощью команды id:
id username
Мы должны увидеть что-то на подобие:
uid=1001(username) gid=1001(username) groups=1001(username),27(sudo)
* учетная запись username существует, она находится в основной группе username и дополнительной sudo. Ее идентификатор 1001.
3. Также мы можем получить строку о пользователе из файла /etc/passwd:
getent passwd username
Мы увидим что-то такое:
username:x:1001:1001::/home/username:/bin/sh
* наш пользовател username имеют идентификатор пользователя и группы 1001, его домашняя директория /home/username, командная оболочка /bin/sh.
Создание
Синтаксис:
useradd <имя пользователя> [опции]
* опции не являются обязательными при создании пользователя.
Пример:
useradd dmosk
* в данном примере создается учетная запись dmosk.
Для учетной записи стоит сразу создать пароль:
passwd 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 <имя пользователя> [опции]
Пример:
usermod dmosk -G wheel
* эта команда добавит пользователя dmosk в группу wheel
Удаление
Синтаксис:
userdel <имя пользователя> [опции]
Пример:
userdel dmosk
Блокировка
Можно заблокировать пользователя, не удаляя его из системы:
usermod -L <имя пользователя>
Пример:
usermod -L dmosk
Чтобы разблокировать пользователя, вводим:
usermod -U <имя пользователя>
Работа с группами
1. Добавление группы:
groupadd <группа> [опции]
2. Редактирование:
groupmod <группа> [опции]
3. Удаление группы:
groupdel <группа> [опции]
4. Добавление пользователя в группу:
Выполняется через команду usermod:
usermod -a -G <группы через запятую> <пользователь>
5. Удаление из группы:
Выполняется с помощью gpasswd:
gpasswd —delete <пользователь> <группы через запятую>
Список пользователей
Посмотреть список пользователей можно в файле /etc/passwd:
cat /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
Можно найти пользователя по идентификатору:
getent passwd 1000
Получить список не системных пользователей:
getent passwd {1000..60000}
Получить только список логинов не системных учетных записей:
getent passwd {1000..60000} | awk -F: ‘{ print $1}’
Примеры работы с учетными записями
useradd
Создать пользователя, добавить его в группу и создать домашнюю директорию:
useradd dmosk -G wheel -m
Создать пользователя с определенными UID и GID (соответственно идентификаторы пользователя и группы):
useradd dmosk -u 900 -g 950
* группа с используемым идентификатором (в данном примере 950) уже должна быть создана заранее с использованием команды groupadd.
Создать пользователя и указать путь к домашней директории:
useradd dmosk -d /home/newdmosk
Создать учетную запись без возможности входа в систему:
useradd dmosk -s /sbin/nologin
usermod
Потребовать сменить пароль при следующем входе в систему:
chage -d 0 dmosk
Поменять пользователю основную группу:
usermod dmosk -g kdonewgroup
Задать пользователю дополнительную группу с правами root:
usermod dmosk -G sudo
Добавить пользователя в группу:
usermod -a -G group dmosk
* в данном примере мы добавим пользователя dmosk в группу group.
Сменить домашнюю директорию:
usermod -d /var/www/dmosk dmosk
* данной командой мы меняем для пользователя dmosk домашнюю директорию на /var/www/dmosk.