Пользователи в Linux – добавление, изменение, удаление
Давайте разберемся, как устроены пользователи в Linux. В процессе мы создадим учетную запись, назначим группу, научимся менять пароли и получать информацию о созданных пользователях.
Создание и удаление пользователя в Linux – useradd
Для добавления пользователей используется команда
useradd
, а удаляются с помощью
userdel
. Давайте создадим две учетки, с одной будем работать дальше, а вторую удалим.
Перед тем как добавить учетную запись, на незнакомом сервере, сначала посмотрите какие параметры заданы по умолчанию для новых пользователей.
useradd
использует шаблон, который задается в файле
/etc/default/useradd
. Посмотрим, что там у нас:
1 2 3 4 5 6 7 8 9 | [root@hc ~]# useradd -D # useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes |
Что тут для нас важно:
-
HOME=/home
– директория где создастся домашняя папка пользователя, традиционно это/home
-
INACTIVE=-1
– количество дней, через которое навсегда заблокируется учетная запись, после устаревания пароля.-1
здесь означает, что возможность не используется. -
EXPIRE=
– дата, когда пользователь будет заблокирован. Сейчас пусто, значит никогда. -
SHELL=/bin/bash
– какая оболочка будет использоваться пользователем. -
SKEL=/etc/skel
– папка где лежат файлы, которые будут скопированы в домашнюю директорию нового пользователя.
По сути нас все устраивает, давайте уже создадим учётку:
1 | useradd hc -m |
-m
указывает, что необходимо создать папку пользователя в
/home
, если ее там еще нет.
И сразу создадим второго:
1 | useradd testuser -m -s /bin/sh -c 'Test User Account' |
Для разнообразия, с помощью ключа
-s
я указал, что shell оболочкой будет не bash, a sh. А
-с
задает комментарий для пользователя, который используется, обычно, как полное имя пользователя.
Какие ключи еще понимает
useradd
:
-b
– задает базовый каталог, в котором будет создана домашняя папка пользователя. По умолчанию /home
-d
– задает имя домашнего каталога. По умолчанию название совпадает с именем пользователя
-e
Дата, по достижении которой пользователь блокируется. Задается в формате ГГГГ-ММ-ДД. По умолчанию отключено. Соответствует
EXPIRE
в шаблоне
/etc/default/useradd
;
-f
– соответствует
INACTIVE
в шаблоне, как уже говорилось, срок устаревания пароля до блокировки;
-g
– задает первичную группу для нового пользователя. Указывается GID или имя группы. Если параметр не задан, имя группы будет такое же как имя пользователя;
-G
– список дополнительных групп для создаваемого пользователя;
-k
– путь к каталогу шаблонов. Соответствует
SKEL
в шаблоне;
-u
– для установки UID пользователя вручную.
Управляем паролями пользователей в Linux – passwd
Для задания и смены паролей используется команда passwd.
Давайте зададим пароль для пользователя hc:
1 2 3 4 5 | [root@hc ~]# passwd hc Changing password for user hc. New password: Retype new password: passwd: all authentication tokens updated successfully. |
Нас спросили новый пароль и его подтверждение. В ходе задания пароля вы можете получать предупреждения, что пароли не слишком хороши:
- BAD PASSWORD: The password is a palindrome – зеркальный пароль, например – 111111, 123321, qweewq и т.п.;
- BAD PASSWORD: The password is shorter than 8 characters – пароль меньше 8 символов;
- BAD PASSWORD: The password fails the dictionary check – it is based on a (reversed) dictionary word – в качестве пароля используется слово из словаря, например hello или qwerty;
- BAD PASSWORD: is too similar to the old one – слишком похож на предыдущий, например, если вы сменили только один символ.
и так далее. Придумывайте качественные пароли!
Просмотр информации о пользователях в Linux
с помощью команды
id
, о любом пользователе
1 2 | [root@hc ~]# id testuser uid=1001(testuser) gid=1001(testuser) groups=1001(testuser) |
id
без указания параметров расскажет о вашей текущей учетке.
Так же узнать под кем вы работаете можно с помощью команды
whoami
:
1 2 | [hc@hc home]$ whoami hc |
или чуть более подробно
who am i
:
1 2 | [hc@hc home]$ who am i root pts/0 2016-07-20 15:06 (192.168.0.33) |
Узнать какие пользователи работают в системе можно введя
who
:
1 2 3 | [root@hc home]# who root pts/0 2016-07-20 15:06 (192.168.0.33) hc pts/1 2016-07-20 18:42 (192.168.0.33) |
или так, чуть более подробно командой
w
:
1 2 3 4 5 | [root@hc home]# w 18:42:50 up 8:45, 2 users, load average: 0.03, 0.03, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.0.33 15:06 2.00s 1.31s 0.06s w hc pts/1 192.168.0.33 18:42 48.00s 0.03s 0.03s -bash |
Изменение информации о пользователях в Linux – usermod
Изменять учетную запись можно с помощью
usermod
.
Вернем bash для testuser:
1 | usermod testuser -s /bin/bash |
Утилита использует те же ключи, что и
useradd
. Т.е. и изменить вы можете те же самые параметры и атрибуты, что и при создании учётной записи.
Удаляем учетную запись в Linux – userdel
Тут так же все просто:
1 | userdel -r testuser |
-r
– указывает, что необходимо удалить не только запись о пользователе, но и его домашний каталог со всем содержимым. Так же есть еще опция
-f
– немедленное удаление пользователя, даже если он работает в системе.
Пользователи в Linux – пара полезных практических примеров
Меняем оболочку по умолчанию в шаблоне пользователя
1 2 3 4 5 6 7 8 9 | [root@hc home]# useradd -D -s /bin/zsh [root@hc home]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/zsh SKEL=/etc/skel CREATE_MAIL_SPOOL=yes |
Не рекомендую вам править файл шаблона руками – используйте
useradd -D
с необходимыми опциями.
Утилита finger
Для просмотра информации о пользователе удобно пользоваться утилитой
finger
. В стандартный набор софта она не входит, ее надо установить дополнительно:
Для Debian/Ubuntu/Linux Mint
1 | sudo apt-get install finger |
Для RedHat/CentOS
1 | yum install finger |
1 2 3 4 5 6 | [hc@hc ~]$ finger testuser Login: testuser Name: Test User Account Directory: /home/testuser Shell: /bin/bash Last login Wed Jul 20 18:40 (EDT) on pts/0 No mail. No Plan. |
Изменить логин пользователя в Linux
1 | usermod -l newname testuser |
Список всех пользователей Linux
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | cat /etc/passwd | sed s/:.*// root bin daemon adm lp sync shutdown halt mail operator games ftp nobody avahi-autoipd systemd-bus-proxy systemd-network dbus polkitd tss postfix sshd hc newname |
На этом все, надеюсь, что вам стало немного понятнее, как управляются пользователи в Linux.
10:59
последнюю команду со списком пользователей понял далеко не сразу.
ибо в представленном виде выдает такие ошибки:
$ cat/etc/passwd|seds/:.*//
-bash: cat/etc/passwd: Нет такого файла или каталога
-bash: seds/:.*//: Нет такого файла или каталога
пришлось включать мозги, вспоминать что существуют регулярки и расставлять пробелы в правильных местах
$ cat /etc/passwd | sed s/:.*//
root
...