Раздел 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!