Раздел VII. local user management
Глава 23. users.
Identify yourself.
Whoami
Команда whoamiсообщает ваше имя пользователя(username).
[root@RHEL5 ~]# whoami
root
[root@RHEL5 ~]# su - paul
[paul@RHEL5 ~]$ whoami
Paul
Who
Команда whoпоказывает информацию о том, у кого выполнен вход(logged in) в систему.
[paul@RHEL5 ~]$ who
root tty1 2008-06-24 13:24
sandra pts/0 2008-06-24 14:05 (192.168.1.34)
paul pts/1 2008-06-24 16:23 (192.168.1.37)
Who am i
В отличие от who, who am Iпоказывает только строку, отвечающую за текущую сессию.
[paul@RHEL5 ~]$ who am i
paul pts/1 2008-06-24 16:23 (192.168.1.34)
W
Команда wпоказывает, у кого выполнен вход в систему, и чем они заняты.
$ w
05:13:36 up 3 min, 4 users, load average: 0.48, 0.72, 0.33
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 05:11 2.00s 0.32s 0.27s find / -name shad
inge pts/0 192.168.1.33 05:12 0.00s 0.02s 0.02s -ksh
paul pts/2 192.168.1.34 05:13 25.00s 0.07s 0.04s top
Id
Команда idпокажет вам ваш идентификатор(id) пользователя, id основной группы(primary group) и список групп, к которым вы принадлежите.
root@laika:~# id
uid=0(root) gid=0(root) groups=0(root)
root@laika:~# su - brel
brel@laika:~$ id
uid=1001(brel) gid=1001(brel) groups=1001(brel),1008(chanson),11578(wolf)
Users.
User management
Управление пользователями(user management) на любых Unix может быть осуществлено 3 способами. Вы можете использовать графические инструменты, предоставленные вашим дистрибутивом. Данный способ рекомендован для пользователей-новичков Linux, пользующихся домашней системой, т.к. вы не столкнетесь с проблемами.
Другой вариант – использовать инструменты командной строки(command line tools) такие как useradd, usermod, gpasswd, passwd и другие. Серверные администраторы используют эти инструменты, т.к. они очень похожи во многих различных дистрибутивах. Эта глава будет сконцентрирована именно на инструментах командной строки.
|
|
Третий и ,скорее, экстремистский способ – это редактирование файлов настройки (локальной конфигурации) (edit the local configuration files)напрямую, используя vi(или vipw/vigr). Не пытайтесь это сделать на производственных системах, если вы новичок.
/etc/passwd
Локальная база данных пользователей на Linux (и большинстве Unix) это /etc/passwd
[root@RHEL5 ~]# tail /etc/passwd
inge:x:518:524:art dealer:/home/inge:/bin/ksh
ann:x:519:525:flute player:/home/ann:/bin/bash
frederik:x:520:526:rubius poet:/home/frederik:/bin/bash
steven:x:521:527:roman emperor:/home/steven:/bin/bash
pascale:x:522:528:artist:/home/pascale:/bin/ksh
geert:x:524:530:kernel developer:/home/geert:/bin/bash
wim:x:525:531:master damuti:/home/wim:/bin/bash
sandra:x:526:532:radish stresser:/home/sandra:/bin/bash
annelies:x:527:533:sword fighter:/home/annelies:/bin/bash
laura:x:528:534:art dealer:/home/laura:/bin/ksh
Как вы можете заметить, этот файл содержит 7 столбцов, разделенных двоеточие. Они содержат имя пользователя, x, id пользователя, id основной группы, описание, название домашней директории, и login shell.
Root
Rootпользователь, также называющийся superuser, является самым могущественным аккаунтом на вашей Linux системе. Этот пользователь может делать почти всё, включая создание других пользователей. Root пользователь всегда имеет uerid 0 (независимо от имени аккаунта).
|
|
[root@RHEL5 ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
Useradd
Вы можете добавлять пользователей с помощью команду useradd.Пример ниже показывает, как добавить пользователя yanina(последний параметр) , создать домашнюю директорию (-m), задать её имя (-d) и создать описание (-с).
[root@RHEL5 ~]# useradd -m -d /home/yanina -c "yanina wickmayer" yanina
[root@RHEL5 ~]# tail -1 /etc/passwd
yanina:x:529:529:yanina wickmayer:/home/yanina:/bin/bash
Пользователь, названный yanina, получил userid 529 и primary groupid 529.
Default/useradd
Как Red Hat Enterprise Linux, так и Debian/Ubuntu имеет файл с названием etc/default/useradd, который содержит несколько стандартных опций пользователя. Кроме использования cat для отображения этого файла, вы также можете использовать useradd –D.
[root@RHEL4 ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
Userdel
Вы можете удалить пользователя yanina с помощью userdel.Опция –r также удалит домашнюю дерикторию.
[root@RHEL5 ~]# userdel -r yanina
Usermod
Вы можете менять свойства пользователя с помощью команды usermod. В данноом примере usermodиспользуется, чтобы сменить описание пользователя harry.
[root@RHEL4 ~]# tail -1 /etc/passwd
harry:x:516:520:harry potter:/home/harry:/bin/bash
[root@RHEL4 ~]# usermod -c 'wizard' harry
[root@RHEL4 ~]# tail -1 /etc/passwd
harry:x:516:520:wizard:/home/harry:/bin/bash
|
|
Passwords.
Пароли пользователей могут быть установлены с помощью команды passwd. Пользователи должны ввести старый пароль, перед двойным вводом нового.
[harry@RHEL4 ~]$ passwd
Changing password for user harry.
Changing password for harry
(current) UNIX password:
New UNIX password:
BAD PASSWORD: it's WAY too short
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[harry@RHEL4 ~]$
Как вы можете видеть, инструмент passwd совершает некоторые стандартные проверки, чтобы предотвратить использование слишком простых слов. Root пользователь может не следовать этим правилам (хотя предупреждение все равно будет появляться). Root пользователь также не должен вводить старый пароль перед двойным вводом нового.
Shadow
Пароли пользователей зашифрованы и хранятся в /etc/shadow. Этот файл доступен только для чтения и может быть прочтён только рутом(be read by root).
[root@RHEL5 ~]# tail /etc/shadow
inge:$1$yWMSimOV$YsYvcVKqByFVYLKnU3ncd0:14054:0:99999:7:::
ann:!!:14054:0:99999:7:::
frederik:!!:14054:0:99999:7:::
steven:!!:14054:0:99999:7:::
pascale:!!:14054:0:99999:7:::
geert:!!:14054:0:99999:7:::
wim:!!:14054:0:99999:7:::
sandra:!!:14054:0:99999:7:::
annelies:!!:14054:0:99999:7:::
laura:$1$Tvby1Kpa$lL.WzgobujUS3LClIRmdv1:14054:0:99999:7:::
Файл /etc/shadow содержит 9 полей, разделенных двоеточиями. Эти поля содержат (слева-направо) имя пользователя, зашифрованный пароль (заметьте, что только inge и laura имеют зашифрованный пароль), день последней смены пароля (1 день – это 1 января 1970), количество дней, которое пароль должен оставаться неизменным, день истечения пароля, количество дней до истечения пароля, количество после истечения пароля ,после которых аккаунт будет заблокирован, день в который аккаунт был заблокирован. Последнее поле пока не имеет значения.
|
|
Password encryption
Encryption with passwd
Пароли хранятся в зашифрованном формате. Зашифровка осуществляется функцией crypt.Простейший (и рекомендованный) способ добавить пользователя с паролем в систему – это добавить пользователя с помощью команды useradd –m user, и затем установить его пароль с помощью passwd.
[root@RHEL4 ~]# useradd -m xavier
[root@RHEL4 ~]# passwd xavier
Changing password for user xavier.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@RHEL4 ~]#
Encryption with openssl
Другой способ создать пользователя с паролем – это использовать –p опцию useradd, но эта опция требует зашифрованный пароль. Вы можете сгенерировать этот зашифрованный пароль с помощью команды opessl passwd.
[root@RHEL4 ~]# openssl passwd stargate
ZZNX16QZVgUQg
[root@RHEL4 ~]# useradd -m -p ZZNX16QZVgUQg Mohamed
Encryption with crypt
3 вариант – создание собственной С программы, используя функцию crypt, и скомпилировать её команду.
[paul@laika ~]$ cat MyCrypt.c
#include <stdio.h>
#define __USE_XOPEN
#include <unistd.h>
int main(int argc, char** argv)
{
if(argc==3)
{
printf("%s\n", crypt(argv[1],argv[2]));
}
else
{
printf("Usage: MyCrypt $password $salt\n" );
}
return 0;
}
Эта небольшая программа может быть скомпилирована с помощью gcc.
[paul@laika ~]$ gcc MyCrypt.c -o MyCrypt –lcrypt
Чтобы её использовать, нам надо добавить два параметра к MyCript. Первый - незашифровонный пароль, второй – ключ(salt). Ключ нужен, чтобы изменить алгоритм шифрования одним из 4096 различных способов. Это разнообразие предотвратит, при наличии у двух пользователей одинакового пароля, выдачи им одного входа в /etc/shadow.
paul@laika:~$ ./MyCrypt stargate 12
12L4FoTS3/k9U
paul@laika:~$ ./MyCrypt stargate 01
01Y.yPnlQ6R.Y
paul@laika:~$ ./MyCrypt stargate 33
330asFUbzgVeg
paul@laika:~$ ./MyCrypt stargate 42
42XFxoT4R75gk
Вы заметили, что первые два символа пароля – это ключ.
Стандартный вывод функции crypt использует алгоритм DES, который является старым и может быть взломан за минуты. Лучше использовать md5пароли, которые могу быть опознаны по ключу, начинающемуся с $1$.
paul@laika:~$ ./MyCrypt stargate '$1$12'
$1$12$xUIQ4116Us.Q5Osc2Khbm1
paul@laika:~$ ./MyCrypt stargate '$1$01'
$1$01$yNs8brjp4b4TEw.v9/IlJ/
paul@laika:~$ ./MyCrypt stargate '$1$33'
$1$33$tLh/Ldy2wskdKAJR.Ph4M0
paul@laika:~$ ./MyCrypt stargate '$1$42'
$1$42$Hb3nvP0KwHSQ7fQmIlY7R.
Ключ md5 может быть до 8 символов в длину. Ключ отображается в /etc/shadow между третьим и четвёртым $, так что никогда не используйте пароль как ключ.
paul@laika:~$ ./MyCrypt stargate '$1$stargate'
$1$stargate$qqxoLqiSVNvGr5ybMxEVM1
Password defaults
/etc/login.defs
Файл /etc/login.defsсодержит некоторые стандартные настройки для паролей пользователей, такие как настройки возраста и длины. ( Вы также найдете числовые ограничения id пользователя и группы, и следует ли создавать домашнюю директорию по умолчанию)
[root@RHEL4 ~]# grep -i pass /etc/login.defs
# Password aging controls:
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
Chage
Команда chageможет быть использована для установки даты истечения аккаунта пользователя(-Е) минимальный (-m) и максимальный (-М) возраст пароля, дата истечения пароля, установить количество дней с предупреждением об истечении пароля. Большинство этих возможностей также доступны с использованием команды passwd. Опция –lкоманды chage показывает эти настройки поьзователю.
[root@RHEL4 ~]# chage -l harry
Minimum: 0
Maximum: 99999
Warning: 7
Inactive: -1
Last Change: Jul 23, 2007
Password Expires: Never
Password Inactive: Never
Account Expires: Never
[root@RHEL4 ~]#
Disabling a password.
Пароли в /etc/shadow не могут начинаться с восклицательного знака. Когда второе поле в /etc/passwd начинается с восклицательного знака, значит пароль не может быть использован.
Использование этой особенности обычно называется locking, disablingили suspending(блокировка, заморозка) аккаунта пользователя. Вы можете это сделать с помощью vi (или vipw) или usermod.
Первая строчка в следующем примере блокирует (disable) пароль пользователя harry, делая для него невозможной аутентификацию с помощью этого пароля.
[root@RHEL4 ~]# su - harry
[harry@RHEL4 ~]$
Вы можете разблокировать аккаунт, используя usermod –U.
Не забывайте о возможности небольшой разницы в опциях командной строки для passwd, usermod, useradd в разных дистрибутивах!
Editing local files
Если вы до сих пор хотите вручную изменять /etc/passwdили /etc/shadow, после того, как узнали эти команды для управления паролями, тогда непосредственно используйте vipw вместо vi(m). Редактор vipw сделает тщательную блокировку файла.
[root@RHEL5 ~]# vipw /etc/passwd
vipw: the password file is busy (/etc/ptmp present)
Home directories
Creating home directories
Легчайший способ создать домашнюю директорию – добавить опцию –m к useradd(скорее всего является опцией по умолчанию на Linux).
Менее легкий способ – создание домашней директории вручную с помощью mkdir, что также требует установления владельца и прав доступа к директории с помощью chmod и chown (об обеих командах будет рассказано более подробно в другой главе).
[root@RHEL5 ~]# mkdir /home/laura
[root@RHEL5 ~]# chown laura:laura /home/laura
[root@RHEL5 ~]# chmod 700 /home/laura
[root@RHEL5 ~]# ls -ld /home/laura/
drwx------ 2 laura laura 4096 Jun 24 15:17 /home/laura/
/etc/skel/
Когда useraddиспользуется с опцией –m, директория /etc/skel/копируется в созданную домашнюю директорию. Директория /etc/skel/ содержит несколько файлов (обычно скрытых) в которых хранятся настройки профиля и стандартные значения для приложений. Поэтому/etc/skel/служит стандартной домашней директорией и стандартным профилем пользователя.
[root@RHEL5 ~]# ls -la /etc/skel/
total 48
drwxr-xr-x 2 root root 4096 Apr 1 00:11 .
drwxr-xr-x 97 root root 12288 Jun 24 15:36 ..
-rw-r--r-- 1 root root 24 Jul 12 2006 .bash_logout
-rw-r--r-- 1 root root 176 Jul 12 2006 .bash_profile
-rw-r--r-- 1 root root 124 Jul 12 2006 .bashrc
Deleting home directories
Опция –r команды usedelпроверит, удалена ли домашняя директория вместе с аккаунтом пользователя.
[root@RHEL5 ~]# ls -ld /home/wim/
drwx------ 2 wim wim 4096 Jun 24 15:19 /home/wim/
[root@RHEL5 ~]# userdel -r wim
[root@RHEL5 ~]# ls -ld /home/wim/
ls: /home/wim/: No such file or directory
User shell
Login shell
Файл /etc/passwdопределяет login shellдля пользователя. В примере ниже, вы можете увидеть, что пользователь annelies зайдет с/bin/bashshell, а пользователь laura c /bin/kshshell.
[root@RHEL5 ~]# tail -2 /etc/passwd
annelies:x:527:533:sword fighter:/home/annelies:/bin/bash
laura:x:528:534:art dealer:/home/laura:/bin/ksh
Вы можете использовать команду usermod, чтобы изменить льзователя.
[root@RHEL5 ~]# usermod -s /bin/bash laura
[root@RHEL5 ~]# tail -1 /etc/passwd
laura:x:528:534:art dealer:/home/laura:/bin/bash
Chsh
Пользователи могу менять свой login shell с помощью команды chsh. Вначале пользователь harry получил список доступных shell ( он также мог использовать cat /etc/shells), а затем сменил свой login shell на Korn shell(/bin/ksh). При следующем входе harry по умолчанию будет направлен в ksh, вместо bash.
[harry@RHEL4 ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/bin/ash
/bin/bsh
/bin/ksh
/usr/bin/ksh
/usr/bin/pdksh
/bin/tcsh
/bin/csh
/bin/zsh
[harry@RHEL4 ~]$ chsh -s /bin/ksh
Changing shell for harry.
Password:
Shell changed.
[harry@RHEL4 ~]$
Switcj users with su
Su to another user
Команда suпозволяет запустить shell от имени другого пользователя.
[paul@RHEL4b ~]$ su harry
Password:
[harry@RHEL4b paul]$
Su to root
Вы также можете использовать su,чтобы получить права rootпользователя, если вы знаете root пароль.
[harry@RHEL4b paul]$ su root
Password:
[root@RHEL4b paul]#
Su as root
Пока вы не зашли как root, запуск shell с другого пользователя будет требовать его пароль. Rootпользователь может стать любым пользователем, не зная его пароль.
[root@RHEL4b paul]# su serena
[serena@RHEL4b paul]$
Su - $username
По умолчанию командаsu сохраняет ту же среду shell. Для того, чтобы стать другим пользователем и так же получить среду этого пользователя, введите команду su, а затем имя требуемого пользователя.
[paul@RHEL4b ~]$ su - harry
Password:
[harry@RHEL4b ~]$
Su –
Когда имя пользователя не указано после suили su-, команда выберет root как целевого пользователя.
[harry@RHEL4b ~]$ su -
Password:
[root@RHEL4b ~]#
Дата добавления: 2018-04-05; просмотров: 360; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!