Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
spo_voprosy.docx
Скачиваний:
9
Добавлен:
20.03.2016
Размер:
465.35 Кб
Скачать

23.3. 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.Этот файл доступен только для чтения и может быть прочтён только рутом(bereadbyroot).

[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. Простейший (и рекомендованный) способ добавить пользователя с паролем в систему – это добавить пользователя с помощью команды useraddm 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 ~]$

Вы можете разблокировать аккаунт, используя usermodU.

Не забывайте о возможности небольшой разницы в опциях командной строки для 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)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]