- •II. First steps on the command line
- •5. Man pages
- •6. Working with directories (работа с папками)
- •7.Working with files
- •8. Working with file contents
- •9. The Linux file tree
- •III. Shell expansion
- •10. Commands and arguments
- •11. Control operators
- •12. Variables
- •13. Shell history
- •14. File globbing
- •IV. Pipes and commands
- •Глава 16. Фильтры.
- •16.3 Grep
- •16.7. Sort
- •16.8. Uniq
- •16.9. Comm
- •16.12. Примеры пайпов
- •Глава 17. Основные инструменты Unix
- •17.1. Find
- •17.2. Размещение
- •17.3. Date
- •17.5. Sleep
- •17.6. Time
- •17.7. Gzip - gunzip
- •17.8. Zcat - zmore
- •18.3. Замена и удаление символов (r X X)
- •18.4. Отменить и повторить (u .)
- •18.5. Вырезать, копировать и вставить строчки (dd yy p p)
- •18.6. Вырезать, копировать и вставить строчки (3dd 2yy)
- •18.8. Объединения двух и более линий (j)
- •18.9. Слова (w b)
- •18.10. Сохранить (или нет) и выход (:w :q :q! )
- •18.11. Поиск (/ ?)
- •18.13. Чтение файлов (:r :r !cmd)
- •19.1. Предпосылки
- •19.2. Hello World
- •19.4. Комментарии
- •20.2. Если, затем, иначе (if then else)
- •20.3. If then elif
- •20.4. For loop
- •20.5. While loop
- •21.2. Shift through parameters.
- •21.3. Runtime input.
- •21.3. Sourcing a config file.
- •21.5. Get script options with getopts.
- •21.6. Get shell options with shopt.
- •Глава 22 More scripting.
- •22.1. Eval.
- •22.4. Case.
- •22.5. Shell functions.
- •Раздел VII. Local user management. Глава 23. Users.
- •23.1. Identify yourself.
- •23.2. Users.
- •23.3. Passwords.
- •23.4 Home directories
- •23.5 User shell
- •23.6. Switcj users with su
- •23.7 Run a program as another user
- •23.10 Shell environment
- •Глава 24. Groups
- •24.1 About groups
- •24.2 Groupadd
- •24.3 /Etc/group
- •24.4 Usermod
- •24.5 Groupmod
- •24.6 Groupdel
- •24.7 Groups
- •24.8 Gpasswd
- •24.9 Vigr
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. Простейший (и рекомендованный) способ добавить пользователя с паролем в систему – это добавить пользователя с помощью команды 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)