Управление учетными записями пользователей

Содержание

Введение

    Отделение обычных пользователей от системных

    Определение кодов UID и GID

    Создание учетной записи пользователя командой USERADD

    Создание учетной записи пользователя командой ADDUSER

    Изменение учетной записи пользователя

    Удаление пользователя

    Блокировка учетных записей

    Управление паролями

    Создание групп командой GROUPADD

    Удаление групп командой GROUPDEL

    Создание системного пользователя

    Создание системных групп командой ADDGROUP

    Изменение принадлежности к группам

    Проверка целостности файлов паролей

    Серийное добавление новых пользователей

    Серийная замена паролей

    Серийное включение пользователей в группы

    Временное использование привилегий ROOT

    Временное предоставление привилегий ROOT командой SUDO

    Пароли. Служба теневого хранения паролей

    Дополнительные модули аутентификации

Список использованной литературы

Выводы

Введение

В системе Linux как "живым" пользователям, так и системным процессам назначаются учетные записи (accounts), необходимые для управления привилегиями и правилами доступа.

Два важнейших принципа безопасности Linux:

1. Всегда используйте минимальный уровень привилегий, необходимый для выполнения работы.

2. Используйте сильные пароли.

В Linux входит набор утилит для выполнения операций с пользователями и группами: useradd, groupadd, userdel, groupdel, usermod, groupmod, passwd, chfn и chsh.

Они входят в семейство "Shadow Suite", разработанное Джулианом Фрэнсисом Хо (Julianne Frances Haugh) для улучшения защиты паролей и упрощения операций управления учетными записями. Когда-то все файлы приходилось редактировать по отдельности, а шифрованные пароли хранились в файле /etc/passwd.

Но поскольку файл /etc/passwd должен оставаться доступным для чтения, хранение паролей в нем, пусть даже в зашифрованном виде, чревато потенциальными неприятностями. Скопировав этот файл, любой желающий теоретически сможет вычислить пароли. Перемещение зашифрованных паролей в файл /etc/shadow, доступный только для привилегированного пользователя root, создает полезный дополнительный уровень защиты.

Команда useradd по-разному работает в разных системах. Традиционно она включала всех новых пользователей в одну группу users(lOO). Все домашние каталоги становились общедоступными, потому что все пользователи принадлежали к одной группе. В Red Hat эта схема была заменена схемой "User Privacy Group".

Команда useradd в Red Hat создает для каждого нового пользователя приватную группу, идентификатор которой (GID) совпадает с идентификатором пользователя (UID). Разумеется, разные пользователи обладают разными потребностями, некоторые из них могут предпочесть, чтобы их каталоги были открытыми. Фундаментальный принцип безопасности гласит: "сначала все запретить, потом разрешать по мере необходимости".

Adduser и addgroup, сценарные Perl-обертки для команд useradd и groupadd, появились относительно недавно. Эти сценарии полностью руководят вашими действиями при создании нового пользователя. Они очень удобны для создания отдельных учетных записей, но не для серийных (batch) операций (разве что если вы самостоятельно внесете изменения в сценарии adduser и addgroup). В разделе 15 приведен сценарий для серийного создания новых пользователей и изменения паролей.

1. Отделение обычных пользователей от системных

В любой системе Linux, наряду с учетными записями обычных пользователей, существуют системные учетные записи (root, uucp, daemon и т. д.). В файле /etc/passwd эти две категории не отделяются друг от друга. Как отделить учетные записи "живых" пользователей от системных учетных записей?

Воспользовавшись схемой нумерации идентификаторов пользователей в Linux (UID) и возможностью сортировки по полям или столбцам в awk.

Пример для системы на базе Debian или Slackware:

$ awk -F: '$3 > 999 { print $0}' /etc/passwd

nobody:x:65534:65534:nobody:/nonexi stent:/bi n/sh

carl a:x:1000:1000::/home/carl a:/bin/bash

foober:x:1001:1001::/home/test:/bi n/false

bitchkat:x:1002:1002::/home/test2/:bin/bash

Colby:x:1003:1003::/home/test3:/bin/bash

Отображение подмножества записей:

$ awk -F: '($3 >- 1000) && ($3 <= 1005) { print $0}' /etc/passwd

Для систем Red Hat и SuSE:

* awk -F: '$3 > 499 { print $0}' /etc/passwd

Алфавитная сортировка результата:

$ awk -F: '$3 > 499 { print $0}' /etc/passwd | sort

Описанный прием особенно удобен тогда, когда схему нумерации UID в группах удается спроектировать заранее.

Например:

    Trainers 1000-1100;

    Coaches 1101-1200;

    Players 1200-2000.

Если придерживаться подобной схемы, в нашем распоряжении появится простой инструмент для сортировки пользователей и их последующего разбиения на группы.

2. Определение кодов UID и GID

Если необходимо узнать код UID пользователя и выяснить, к каким группам он принадлежит, воспользуйтесь командой id:

$ id carl a

uid-lOOO(carla) gid=1000(carla)

groups=1000(carla).20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(video),

105(windows),432(usb).lOOl(cdrecording)

Ключи команды id:

-u — вывод только кодов UID;

-g — вывод только кодов GID;

-gn — вывод имени первичной группы пользователя вместо GID.

3. Создание учетной записи пользователя командой USERADD

Для создания учетной записи можно воспользоваться командой useradd -m для создания имени пользователя, его домашнего каталога и других переменных окружения, затем назначьте пароль командой passwd -e. До создания пароля учетная запись остается неактивной. Далее приводится простейший вариант вызова. С флагом –m команда создает домашний каталог и копирует в него файлы из /etc/skel:

# useradd -m имя пользователя

Как правило, в команду также включается полное имя пользователя с флагом - с (Comment, то есть комментарий). Поставьте четыре запятые после имени пользователя, чтобы остальные поля комментария (рабочий телефон и т. д.) остались пустыми.

# useradd -m -с Grace Hopper ghopper

Имя пользователя должно быть уникальным.

Можно выполнить команду passwd -e. Флаг -е означает, что пароль становится недействительным после первого входа, что заставляет пользователя сменить его:

# passwd -e ghopper

Enter new UNIX password:

Retype new UNIX password:

passwd: password updated successfully

Окружение пользователя формируется на основании стандартного содержимого /etc/default/useradd и/etc/skel. Конфигурация useradd по умолчанию отображается командой

# useradd -D

Любые значения по умолчанию могут переопределяться в командной строке —

например, UID и командный процессор:

# useradd -u 1500 -s tcsh ghopper

Также существует возможность расширения стандартной конфигурации —

например, включить пользователя в дополнительные группы:

# useradd -G users,cdrecord.dialout ghopper

Useradd, в отличие от своего родственника adduser, прекрасно работает в сценариях (например, в сценарии mass_useradd из раздела 15).

Поля комментария также известны под названием данных GECOS. Данные GECOS состоят из пяти полей, разделенных запятыми. Если вы собираетесь использовать поле комментария, включите все четыре запятые, даже если значения соответствующих атрибутов не указываются. В долгосрочной перспективе это окупится, особенно при выполнении серийных операций и при поиске. Традиционно в данные GECOS входит полное имя, номер комнаты, рабочий телефон, домашний телефон и прочее (произвольная информация). Полное имя используется многими внешними программами — в частности, почтовыми серверами, однако другие поля можно использовать так, как вы сочтете нужным. Например, они позволяют организовать произвольное деление пользователей на группы и их сортировку (см. раздел 17).

4. Создание учетной записи пользователя командой ADDUSER

Использование adduser вместо useradd помогает ввести все данные конфигурации нового пользователя — пароль, данные GECOS и т. д.

Введите команду adduser имя_пользователя и введите запрашиваемые данные:

# adduser anitab

Adding user anitab...

Adding new group anitab (1008).

Adding new user anitab (1008) with group anitab.

Creating new home directory /home/anitab.

Copying files from /etc/skel

Enter new UNIX password:

Retype new UNIX password:

passwd: password updated successfully

Changing the user information for anitab

Enter the new value, or press ENTER for the default

Full name []:

Room Number []:

Work Phone []:

Home Phone []:

Other []:

Is the information correct [y/n] у

В командной строке adduser можно указать код UID, переопределяя значение по умолчанию:

# adduser --uid 1500 anitab

Стандартная конфигурация adduser задается в файле /etc/adduser.conf.

5. Изменение учетной записи пользователя

Иногда требуется внести изменения в существующую учетную запись — например, сменить имя пользователя или UID, обновить данные GECOS или домашний каталог.

Воспользуйтесь командами usermod и chfn.

Изменять можно любые атрибуты, включая имя пользователя и код UID. Чтобы сменить имя, сначала укажите новое имя, а затем старое:

# usermod -I aborg anitab

Следующая команда изменяет UID (в следующем примере исходное значение 1050 меняется на 1200) без изменения имени пользователя. Сначала указывается новый код UID, затем имя:

# usermod -u 1200 anitab

Принадлежность пользователя к группам не изменяется. Все файлы в домашнем каталоге пользователя автоматически обновляются новым кодом U1D. Тем не менее вам придется вручную найти и изменить все файлы за пределами домашнего каталога (crontab, почтовые каталоги, временные файлы /tmp и файлы в общих каталогах).

Для поиска файлов можно воспользоваться командой find с указанием исходного кода UID, если вы хотите просмотреть список файлов перед внесением изменений:

# find / -uid 1050

/usr/src/include/lber.h

/usr/src/include/1 dap.h

/usr/src/include/ldbm.h

Смена владельца файлов осуществляется командой chown:

# chown 1200 /usr/scr/include/lber.h

Последовательная смена владельца для каждого файла — занятие довольно утомительное. Команды chown и find могут выполнить эту работу за вас:

# find / -uid 1050 -exec chown -v 1200 {} \;

changed owner of '/usr/src/include/lber.h' to 1200

changed owner of '/usr/src/include/ldap.h' to 1200

changed owner of '/usr/src/include/ldbm.h' to 1200

Следующая команда перемещает домашний каталог пользователя со всем содержимым. Если новый каталог не существует, он автоматически создается. Сначала указывается новый каталог, а затем имя пользователя. Обязательно используйте флаги -d и -m:

# usermod -d /serverl/home/aborg/ -m aborg

Изменение данных GECOS:

# chfn aborg

Пользователь может передать при вызове chfn данные GECOS по своему усмотрению. Исключение составляют два поля: полное имя и "прочее". Содержимое этих полей может редактироваться только суперпользователем.

6. Удаление пользователя

Иногда требуется удалить из системы учетную запись пользователя и найти все файлы, принадлежащие этому пользователю.

Учетная запись удаляется командой userdeL. Поиск файлов, принадлежащих пользователю, осуществляется командой find.

Удаление учетной записи:

# userdel aborg

Чтобы команда userdel сработала, пользователь не может находиться в системе, и под его именем не должны быть запущены процессы.

Команда userdel удаляет данные пользователя из всех системных файлов (/etc/passwd, /etc/shadow, /etc/group), но не трогает файлы, принадлежащие этому пользователю. Чтобы удалить домашний каталог пользователя и почтовый ящик, добавьте флаг -r:

# userdel -r aborg

Другие файлы приходится искать отдельно:

# find / -uid 1200

7. Блокировка учетных записей

Блокировка учетной запись и временный запрет пользователю на вход в систему, но без удаления учетной записи, осуществляется при помощи ключа –l(lock):

# passwd -I aborg.

Password changed.

Следующая команда снимает блокировку с учетной записи:

# passwd -u aborg

Еще один способ заблокировать учетную запись — вставить восклицательный знак в начало поля пароля в файле /etc/shadow:

foobar:!$l$wiD1Qr34$mitGZA76MSYCY04AHIYl:12466:0:99999:7:: :

Также можно заменить х в поле пароля в файле /etc/passwd звездочкой (*):

foober:*:1025:1025:Foober Smith..,:/home/foober:/bin/bash

Наконец, можно лишить пользователя доступа к командному процессору:

# usermod -s /bin/false foober

8. Управление паролями

Операции назначения и настройки паролей осуществляются командой passwd.

Сброс или изменение пароля:

# passwd aborg

Пользователь также может сменить свой пароль:

aborg@server04:~$ passwd

Следующая команда ограничивает срок действия пароля aborg шестью месяцами, с выдачей предупреждения за пять дней:

# passwd -х 180 -w 5 -i l aborg

Чтобы просмотреть пароли пользователя, воспользуйтесь командой

# passwd -S option

aborg P 02/18/2004 0 10 5 1

Пароль может содержать цифры, буквы и знаки препинания, при этом они чувствительны к регистру символов. Пробелы и функциональные клавиши не допускаются. Рекомендуется использовать сильные пароли, то есть не выбирать в качестве пароля имена, слова из словаря, дни рождения или адреса. Пароли рекомендуется записывать и хранить в надежном месте. Пароли Linux не восстанавливаются. При потере пароля следует обратиться к суперпользователю для получения нового пароля.

9. Создание групп командой GROUPADD

Воспользуйтесь командой groupadd. Команда создает новую группу по системным значениям, настроенным в /etc/default/useradd и /etc/skeL/:

# groupadd newgroup

Системная группа создается с ключом -r:

# groupadd -r newgroup

Ключ -r является специфическим для Red Hat. Если в вашей версии groupadd он не поддерживается, укажите следующий доступный номер системной группы:

# groupadd -g 127 newgroup

Следующий доступный номер группы можно узнать из файла /etc/group.

Рекомендуется использовать логически последовательную схему нумерации групп. С точки зрения Linux это несущественно, но зато такая схема избавит вас от многих хлопот. В Red Hat номера системных групп лежат в диапазоне 0-499, а в Debian - в диапазоне 100-999.

10. Удаление групп командой GROUPDEL

Сначала, если потребуется, переназначьте номера групп редактированием файла

/etc/grou p. Просто скопируйте данные пользователей и вставьте их в другую группу. Затем удалите группу командой groupdel, после чего воспользуйтесь командами find и chgrp для поиска и передачи права владения файлами другой группе.

Удаление группы:

# groupdel имя_группы

Удаление группы считается хлопотной операцией, потому что не существует утилит для автоматического переноса/удаления файлов или пользователей, входящих в группу. Вам придется самостоятельно найти их и изменить коды GID вручную:

# find / -gid 750

/usr/src/i nclude/1ber.h

/usr/src/include/ldap.h

/usr/src/include/ldbm.h

Изменения можно вносить последовательно:

# chgrp 800 /usr/src/include/lber.h

А можно выполнить замену одновременно посредством совместного использования find и chgrp:

# find / -gid 750 -exec chgrp -v 800 {} \;

11. Создание системного пользователя

Если есть необходимость создать системного пользователя для таких программ, как Postfix, Apache или Squid рекомендуется назначить собственные учетные записи пользователей вместо того, чтобы на скорую руку "свалить" их на универсального пользователя nobody.

Задача может быть решена как командой adduser, так и useradd. С adduser это делается примерно так:

# adduser --system --no-create-home --group squid

Adding system user squid...

Adding new group squid (109).

Adding new user squid (109) with group squid

Not creating home directory

Проверьте результат:

# cat /etc/passwd | grep squid

squid:x:109:109::/home/squid:/bin/false

Хотя подстрока /home/squid присутствует, домашний каталог не создается.

А вот как то же самое делается в useradd:

# useradd -d /dev/nuil -g squid -s /bin/false squid

Многие демоны и процессы, которым необходима системная учетная запись, по умолчанию используют nobody, но все больше приложений требует создания собственной уникальной учетной записи. Старайтесь использовать уникальную учетную запись там, где это возможно, потому что это повышает уровень безопасности системы. Учетная запись nobody чаще всего становится объектом хакерских атак, поэтому собирать разнообразные процессы и демонов в единую цель для атаки не стоит.

12. Создание системных групп командой ADDGROUP

Создание системных групп сценарием addgroup происходит следующим образом:

# addgroup - - system группа

В командной строке можно передать код GID, переопределяя значение по умолчанию.

Не забудьте придерживаться схемы нумерации групп, принятой в вашем дистрибутиве Linux:

# addgroup --system --gid 300 группе

13. Изменение принадлежности к группам

Бывает, что требуется включить пользователей в некоторую группу или исключить их из этой группы, для этого отредактируйте файл /etc/groups вручную. Просто скопируйте и вставьте записи, это самый быстрый способ.

Для решения задачи также можно воспользоваться командами add user и usermod, но будьте осторожны: adduser позволяет за один вызов включить пользователя только в одну группу, а команда usermod, позволяющая перечислить несколько групп, стирает прежние данные о принадлежности пользователя к группам.

14. Проверка целостности файлов паролей

Файлы паролей (/etc/group, /etc/passwd, /etc/shadow и /etc/gshadow) интенсивно используются в процессе администрирования, и вам нужно какое-нибудь средство для проверки правильности их синтаксиса.

Файлы /etc/passwd и /etc/shadow проверяются командой pwck, а файлы /etc/group и /etc/gshadow — командой grpek:

# pwck

# grpek

Если команда завершается без выдачи сообщений, значит, ошибки не обнаружены. В противном случае команда выводит перечень ошибок. Ошибки нужно будет исправить, иначе работа программы завершится. Чтобы ограничиться просмотром всех ошибок, запустите программу в режиме "только чтения":

# pwck -r

# grpek -r

Программа pwck проверяет логическую целостность файлов /etc/passwd и /etc/shadow.

Она последовательно анализирует записи и проверяет, что каждая запись содержит:

    правильное количество полей;

    уникальное имя пользователя;

    действительные идентификаторы пользователя и группы;

    действительную первичную группу;

    действительный домашний каталог;

    действительный командный процессор.

Pwck сообщает обо всех записях, не имеющих пароля. Когда pwck обнаруживает ошибку, вы можете либо удалить учетную запись, либо проигнорировать ее. Во втором случае pwck прекращает работу и не проверяет новые строки (за одним исключением: обнаружив повторяющееся имя, программа продолжит проверку даже в том случае, если вы не удалите учетную запись).

Программа grpck анализирует файлы/etc/group и/etc/gshadow и проверяет, что каждая запись содержит:

    правильное количество полей;

    уникальное имя группы;

    действительный список членов и администраторов.

15. Серийное добавление новых пользователей

Для серийного добавления новых пользователей системный администратор может воспользоваться сценарием mass_useradd(листинг 1). Это сценарий командного процессора, поэтому он должен работать практически везде. Также понадобится сценарий mass_passwd(листинг 2). Необходимо сохранить эти два сценария в одном каталоге. Также следует установить утилиту pwgen, генерирующую пароли.

Создаем список имен и паролей в формате:

имя_пользователя: имя фамилия

Также можно добавить дополнительные данные GECOS:

dawns:Dawn Marie Schroder,,123-4567,trainers

Затем запустите сценарий mass_useradd. Сценарий создает записи в /etc/passwd, /etc/group и /etc/shadow, домашние каталоги, персональные группы и пароли, которые становятся недействительными после первого использования.

Следующая команда приказывает mass_useradd использовать список новых пользователей из файла newusers с заменой/созданием выходного файла newLogins.txt:

sh mass_useradd < newusers > newlogins.txt

Присоединение новых имен и паролей к файлу newlogins.txt:

sh mass_useradd < newusers >> newlogins.txt

Помимо выходного файла, который представляет собой обычный список, mass_passwd создает для каждого пользователя отдельный файл с инструкциями. Инструкции распечатываются и раздаются пользователям. Эти файлы, а также файл журнала хранятся в домашнем каталоге

пользователя, запустившего сценарий (обычно root):

# ls /root/mass_passwds

dawns.passwd.txt nikitah.passwd.txt mass_passwd.log rubst.passwd.txt

В сценариях используются стандартные средства Shadow Suite, поэтому они легко настраиваются посредством регулировки параметров утилит, задействованных в их работе.

Файл выходных данных выглядит так:

dawns shabaefi 1002

nikitah gohbinga 1003

rubst ahtoohaa 1004

В файл /etc/passwd добавляются записи вида

dawns:x:1002:1002:Dawn Mari Schroder,.123-4567,trainers:/home/dawns:/bin/bash

nikitah:x:1003:1003:Nikita Horse..123-4567,equine:/home/nikitah:/bin/bash

rubst:x:1004:1004:Rubs The Cat.101,,234-5678.,test:/home/rubst:/bin/bash

Листинг 1. Программа mass_useradd

#!/bin/sh

##

## Использование:

# # sh mass_useradd < inputfile >> new-passwords.txt

##

PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:$PATH

# Чтение строки входных данных.

# Формат входного файла:

# имя_пользователя : имя фамилия

# Чтобы в качестве разделителя использовалась запятая, замените

# IFS=":$IFS" на IFS=",$IFS"

while IFS=":$IFS" read username realname: do

# Сначала удаляем пустые строки и комментарии

case "Susername" in

'' | \#*) continue ;

esac

# Чтение /etc/passwd и /etc/group и вычисление

# следующих свободных значений UID and GID.

# Программа начинает с {id=1000}, измените для своей системы

id=$({ getent passwd; getent group: } | cut -f3 -d: | sort -un

awk 'BEGIN { id=1000 }

$1 == id { id++ }

$1 > id { print id: exit }')

# Добавление новых пользователей в /etc/group и /etc/passwd.

# Создание домашних каталогов командой chmod 700

# Все параметры groupadd, useradd и chmod

# можно изменить в соответствии со спецификой системы.

groupadd -g $id $username

useradd -m -c "$realname" -g $username -u $id $username

chmod 700 /home/$username

# Назначение пароля. Для этой цели вызывается другой сценарий

# mass_passwd, который может использоваться независимо.

# Сценарий mass_passwd выводит имя пользователя, пароль

# и идентификатор пользователя.

$(dirname $0)/lmass_passwd -M $username

done

Листинг 2. Программа mass_passwd

#! /bin/sh

## Каталог для сохранения файлов "username.passwd.txt"

## Если каталог не существует, он будет создан.

text_file_dir=$HOME/mass_passwds

log_file=mass_passwd.log

## Минимальный идентификатор для "обычных" пользователей

min_uid=1000

## Длина генерируемых паролей

pass_len=8

## Срок действия паролей (в днях)

pass_expire=90

## Получение имени программы (скорее всего, "mass_passwd")

prog=${0##*/}

usage () {

echo "usage: $prog [-v] [-n] username ..."

echo " $prog [-v] [-n] [-g] groupname ..."

echo " $prog [-v] [-n] [-a]"

echo " -g change passwords of everyone in a group"

echo " -a change everyone's password"

echo " -v verbose"

echo " -n don't do i t . just simulate (implies -v)"

e x i t 0

}

short_usage () {

echo >&2 "usage: $prog [-v] [-g] [-a] name..."

echo >&2 " $prog -h for help"

e x i t 1

# echo something, but only i f in verbose mode

vecho () {

test -n "$verbose" && echo "$@"

}

# Построение случайного пароля.

# Если программа pwgen доступна, используем

# Если программа недоступна, читаем /dev/urandom и отфильтровываем все

# символы, не являющиеся алфавитно-цифровыми, пока количество символов

# не окажется достаточным для пароля. Символы в "tr -d" определяют

# ASCII-коды (в восьмеричной записи) диапазонов удаляемых символов.

randompass () {

pwgen $pass_len 1 2>&- ||

tr -d '[\000-\057][\072-\100][\133-\140][\173-\377]' < /dev/urandom |

dd bs=$pass_len count=l 2>&-

}

# Функция интерпретирует режим (пользователи / группы / серийная замена)

# и возвращает список имен пользователей

get_users () {

if [ -n "$all_mode" ]: then

getent passwd | awk -F: '{if ($3 >= '$min_uid') (print $1}}'

return

fi

if [ -z "$group_mode" ]: then

echo "$@"

return

while [ -n "$1" ] : do

g_ent=$(getent group "$1" 2>&-)

i f [ -z "$g_ent" ] : then

echo >&2 "warning: $1: group not found"

continue

fi

members=${g_ent##*:}

gid=${g_ent%:*}

gid=${gid##*:}

echo "$members" | tr '.' ' '

getent passwd | awk -F: '{if ($4 == '$gid') { print $1 } }'

shift

done

}

## Основной код

group_mode=: verbose=: all_mode=: simulate=: eol =:

while [ -z "$eol" ]: do

case "$1" in

-g) group_mode=l: shift ::

-v) verbose=l: shift ;:

-a) all_mode=l: shift ::

-n) simulate=true: verbose=l: shift ::

-M) mass_out=l: shift :: # we're called from mass_useradd

-h | -? | --help) usage ::

--) eol-1; shift ::

-*) short_usage ::

*) eol=l ::

esac

done

# Настройка безопасного окружения и каталога для текстовых файлов.

# предназначенных для вывода на печать.

PATH=/usr/sbin:/usr/bin:$PATH

umask 077

mkdir -р $text_file_dir

cd $text_file_dir

processed=0

for u in $(get_users "$@"): do

vecho -n "generating password for $u..."

pass=$(randompass)

echo "$u:$pass" | eval $simulate chpasswd

vecho -n "."

eval $simulate change -M $pass_expire -d 2003-01-01 $u

vecho -n "."

rm -f $u.passwd.txt

echo > $u.passwd.txt "\

------------------------------------------------------------------------------------------------------------------------

Login name: $u

Password: $pass

Please log in and change your password: the system should prompt you to do this when you log in. You can change your password at any time with the 'passwd' command. Choose a strong password - everyday words, birthdays, names of people or animals, all these are too easy to guess.

Also, DO NOT give your password to anyone, ever. The IT staff will never ask you for your password, and neither should anyone else. You will be held responsible for all activity done via your account.

--------------------------------------------------------------------------------------------------------------------------

printf >>$log_file "$(date) %-12s %s\\n" $u $pass

vecho "$pass"

if [ -n "$mass_out" ]: then

uid=$(getent passwd $u | cut -f3 -d:)

echo -e "$u\\t$pass\\t$uid"

processed=$(expr $processed + 1)

done

i f [ $processed -gt 0 ] : then

test -z "$mass_out" &&

echo >&2 "$processed password(s) reset - see $text_file_dir/$log_file"

else

echo >&2 "no users specified - see '$prog -h' for help"

fi

16. Серийная замена паролей

Для серийной смены паролей можно воспользоваться сценарием mass_passwd из раздела 15. Сценарий позволяет задать состав пользователей тремя разными способами:

# mass_passwd пользователь1 пользователь2 ...

# masspasswd -g группа группа...

# mass_passwd -a

В первом случае передается список имен пользователей, разделенных пробелами.

Во втором случае изменяются пароли пользователей, входящих в указанные группы.

В третьем случае изменяются все пароли из /etc/passwd.

Сценарий mass_passwd генерирует для каждого пользователя отдельный файл с указанием новых паролей и инструкциями, которые вы сочтете нужным включить. Это позволяет легко распечатать отдельную инструкцию для каждого пользователя.

Ключ -n тестирует команду без ее фактического выполнения:

# ./mass_passwd -v -g -n usergroup

generating password for dawns… teivuphu

generating password for nikitah…kohfahsh

2 password(s) reset - see /root/mass_passwd/mass_passwd.log

Пароли остаются прежними, выполнение команды в этом режиме всего лишь проверяет параметры перед внесением изменений.

17. Серийное включение пользователей в группы

Для того чтобы добавить большое количество пользователей в группу нужно вставить список имен прямо в файл /etc/group. Далее описан быстрый способ построения списка пользователей для вставки в /etc/group. Он основан на схеме нумерации UID, позволяющей легко отсортировать нужную группу пользователей. Для примера воспользуемся схемой "Trainers/ Coaches/Players", описанной в разделе 1. Добавим в группу Trainers несколько новых членов:

$ awk -F: '($3 >= 1050) && ($3 <= 1060) { print $1}' /etc/passwd | tr '\n' ','

bcool.bkind.fmow.kthxbye.oknodo

Далее копируем и вставляем список в /etc/group.

А если в вашей системе нет аккуратной, четкой схемы нумерации UID, то можно воспользоваться данными GECOS. Следует выбрать одно из полей для хранения метки.

Поле "прочее" лучше всего подходит для этой цели, поскольку пользователи не могут изменять его по своему усмотрению. Оно находится в данных GECOS —

пяти полей, разделенных запятыми. Данные GECOS выглядят примерно так:

bcool:х:1300:1300:Bob Cool.... trainer:/home/bkind:/bin/bash

bkind:x:1055:1055:Bev Kind....trainer:/home/bkind:/bin/bash

После добавления меток выборка пользователей легко производится при помощи grep и awk:

$ cat /etc/passwd | grep trainer awk -F: '{ print $1}' | tr '\n' ','

bkind.bcool.

18. Временное использование привелегий ROOT

Когда потребуется выполнить какую-нибудь административную операцию, воспользуйтесь командой su (Switch User):

carla@windbag:~$ su

Password:

root@windbag:/home/carla#

Затем вернитесь к своей "основной личности":

root@windbag:/home/carla# exit

exit

carla@windbag:~$

Переключение на root с восстановлением конфигурации окружения и командного процессора root:

carla@windbag:~$ su -

Password:

root@windbag:/home/carla~#

Переход на другой командный интерпретатор:

$ su - --shell=tcsh

Password:

Доступные командные процессоры перечислены в /etc/shells.

Команда su позволяет переключиться на любую учетную запись, пароль которой вам известен. Дефис после su существенно влияет на результат выполнения команды. Без дефиса команда сохраняет старую системную конфигурацию и переменные окружения — командный процессор, редактор по умолчанию, пути и umask.

19. Временное предоставление привелегий ROOT командой SUDO

Требуется поручить некоторые операции администрирования системы другим пользователям или создать дополнительный уровень безопасности для ваших административных потребностей, но это нужно сделать так, чтобы мощь привилегий root использовалась в ограниченном объеме, не раскрывая пароль root.

Воспользуйтесь sudo — командой, которая предоставляет ограниченные права root

конкретным пользователям для решения конкретных задач и регистрирует их действия без сообщения пароля root.

Допустим, имеется пользователь jhaugh, которому вы хотите предоставить полные права root. Поскольку пользователи sudo имеют собственные пароли, пароль root остается защищенным. Отредактируйте файл /etc/sudoers командой visudo - файл открывается в редакторе по умолчанию.

# visudo

# Файл sudoers

#

# Этот файл ДОЛЖЕН редактироваться командой 'visudo'

# с правами root.

# За дополнительной информацией о записи в файл

# sudoers обращайтесь к man-странице.

#

# Спецификацияпсевдонимов хостов

# Спецификация псевдонимов пользователей

# Спецификация псевдонимов команд

# Спецификация привилегий пользователей

root ALL=(ALL) ALL

Для начала создайте псевдоним хоста:

Host_Alias LOCALHOST= local host

В секции "Спецификация привилегий пользователей" ("User privilege specification") добавляются отдельные пользователи:

jhaugh ALL=(ALL) ALL

Эта строка предоставляет jhaugh привилегии root для выполнения любых операций в системе и на подключенных компьютерах. Допустим, вы хотите предоставить другому пользователю tgwynne привилегии root только на локальном компьютере.

Включите следующую запись:

tgwynne LOCALHOST = ALL

А пользователю msmith разрешается только выключение локального компьютера:

msmith LOCALHOST=/sbin/shutdown, /sbin/halt

Предоставление группам обычных пользователей права выключения своих компьютеров:

# Спецификация псевдонимов хостов

Host_Alias LOCALHOST = local host

# Спецификация псевдонимов пользователей

User_Alias USERS = tgwynne. msmith. jhaugh, \

abyron. jwinters

# Спецификация псевдонимов команд

Cmnd_Alias SHUTDOWN - /usr/sbin/shutdown, /usr/sbin/halt. \

/usг/sbin/reboot, /usr/sbin/poweroff

# Спецификация привилегий пользователей

USERS LOCALHOST = SHUTDOWN

Вызов команды sudo выглядит так:

$ sudo /usr/sbin/halt

Команда запрашивает у пользователей их пароли, после чего завершается. Чтобы узнать, выполнение каких команд им разрешено, пользователи могут выполнить следующую команду:

$ sudo -1

User jhaugh may run the following commands on this host:

(ALL) ALL

Команда sudo фиксирует ошибки в системном журнале и передает сообщение root:

$ sudo /usr/sbin/halt

carla is not in the sudoers file. This incident will be reported.

Вы можете определять группы серверов и предоставлять пользователям привилегии для группы:

# Спецификация псевдонимов хостов

Host Alias FILESERVERS - hostl. host2. host3

# Спецификация псевдонимов пользователей

User_Alias FILESERVERADMINS = jhaugh. abyron. jwinters

# Спецификация псевдонимов команд

Cmnd_Alias FILEUTILS = /bin/chgrp, /bin/chmod, \

/bin/chown, /bin/cp, /bin/dd, /bin/df, \

/bin/dir, /bin/dircolors, /bin/du, /bin/install, \

/bin/In, /bin/Is. /bin/mkdir, /bin/mkinfo, \

/bin/mknod, /bin/mv, /bin/rm, /bin/rmdir, \

/bin/shred, /bin/touch, /bin/vdir sync

# Спецификация привилегий пользователей

FILESERVADMIN FILESERVERS = FILEUTILS

Команда sudo также может применяться для запуска пользователями сценариев (например, сценариев архивации). Следует быть очень осторожными со сценариями, а также с командами, предоставляющими доступ к командному процессору или запускающими текстовые редакторы, так как с их помощью пользователи могут выйти за пределы своих привилегий.

20. Пароли. Служба теневого хранения паролей

В Linux каждый пользователь имеет свой уникальный числовой идентификатор, по которому он идентифицируется в системе. Этому идентификатору для более удобной работы соответствует имя пользователя. Например, для привилегированного пользователя root зарезервирован нулевой идентификатор. Все имена пользователей Linux и соответствующие им идентификаторы хранятся в специальном файле passwd. Этот файл располагается в каталоге etc, который, в свою очередь, находится в корневом каталоге системы /. Файл имеет обычную текстовую форму.

Пример файла пользовательских имен passwd.

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

Каждая запись в этом файле разделена двоеточиями на 7 частей:

1. Имя пользователя. Это поле содержит имя пользователя. Для операционной системы не важно, какое имя имеет пользователь, система ориентируется на идентификатор, а имя играет, пожалуй, только информационное значение для человека, работающего в системе.

2. Поле пароля. Это поле в ранних версиях Linux содержало зашифрованный пароль, а теперь, когда была введена технология теневых паролей, в этом поле просто ставится x. Практического применения это поле не имеет.

3. Идентификатор пользователя (UID). В системе Linux каждый пользователь имеет уникальный идентификационный номер, который однозначно определяет его в системе. Этот номер используется в различных целях, например, при установке прав доступа на файлы. Права доступа будут рассмотрены в следующем разделе.

4. Идентификатор группы, к которой принадлежит этот пользователь (GID). Концепция групп будет рассмотрена в следующих разделах.

5. Поле комментария. В этом поле может храниться любая дополнительная информация о пользователе, например, его полное имя.

6. Полный путь к домашнему каталогу пользователя. В ОС Linux для каждого пользователя создается его домашний каталог, в котором он может хранить свои документы. Обычно эти каталоги располагаются в директории /home корневого каталога и по умолчанию имеют имена владельцев.

7. Путь к командной оболочке. Последнее поле содержит полный путь к рабочей оболочке пользователя (по умолчанию такой оболочкой является bash). Эта оболочка запускается, когда пользователь проходит процедуру аутентификации. В целях безопасности для системных пользователей в этом поле очень часто ставится /sbin/nologin. В приведенном примере пользователь bin имеет как раз такое значение в поле командного интерпретатора. Сама по себе программа nologin не является оболочкой, единственное ее назначение – не допустить вход в систему. Поэтому при попытке входа под именем пользователя, у которого в качестве рабочей оболочки установлена /sbin/nologin, ничего не происходит. Обычно такой подход используется при создании пользователей, которые являются системными, то есть от имени которых выполняются какие-то действия внутри системы. А поскольку таким пользователям не нужна рабочая оболочка, хорошим решением, с точки зрения безопасности, будет установка поля оболочки в /sbin/nologin. Еще одним распространенным решением в таких ситуациях является установка этого поля в значение /bin/false. Как известно, в Linux, да и в большинстве других операционных систем, успешное завершение программы определяется типом возвращаемого значения. Если возвращается нулевое значение, выполнение программы прошло успешно, если ненулевое – в процессе выполнения программы возникли ошибки. На основе возвращаемого значения система аутентификации делает вывод о том, пройдена ли аутентификация успешно или она "провалилась". false – программа, которая независимо от внешних факторов всегда возвращает значение, отличное от нуля, что в данном случае означает возникновение ошибок при запуске оболочки, и управление снова возвращается системе аутентификации. При входе в систему программа, предоставляющая доступ, производит чтение информации о пользователях как раз из файла passwd. Право на запись в этот файл имеет только привилегированный пользователь root, читать же его могут все пользователи системы. Этот файл никогда не редактируется вручную, хотя, в принципе, это вполне допустимо. Обычно для редактирования файла пользователей используют специальные программы: useradd, usermod и userdel.

Программа добавления useradd позволяет добавить нового пользователя в систему. Для управления процессом создания пользователя эта программа может принимать различные параметры в командной строке. Например, параметр –s задает используемый пользователем shell, а параметр –g – группу, к которой принадлежит создаваемый пользователь.

Помимо добавления записи о пользователе в файл /etc/passwd, программа useradd создает домашний каталог пользователя, который по умолчанию должен размещаться в директории /home. Путь к пользовательскому каталогу может быть определен с помощью параметра –d, за которым следует полный путь от корневого каталога до каталога пользователя.

Программа usermod позволяет изменять такие параметры, как рабочая оболочка пользователя, домашний каталог, группа, идентификатор пользователя и так далее. Нетрудно догадаться, что выполняет программа userdel. Она удаляет пользователя из системы. Подробная информация об этих программах содержится в соответствующих man-руководствах.

Имя пользователя не является секретной информацией, и его могут без проблем узнать другие пользователи системы. Но в таком случае должна существовать опасность входа одного пользователя под именем другого. Однако этого не происходит. Используется такое понятие, как аутентификация.

Аутентификация – это установление подлинности пользователя, то есть установление факта того, что пользователь с таким именем является именно тем, за кого себя выдает.

Для аутентификации в ОС Linux используется уже давно проверенное и доказавшее свою надежность средство – пароль.

Пароль – это набор символов (секретное слово), известный только его владельцу и используемый для удостоверения его подлинности. Каждый пользователь в системе имеет свой собственный пароль. Наличие пароля – необходимая составляющая политики безопасности пользователей Linux. Пароль является как бы пропуском пользователя в систему. Без пароля, зная только имя пользователя, проникнуть в систему невозможно.

Пароли хранятся в отдельном файле /etc/shadow. В ранних версиях Linux имена и пароли пользователей хранились в одном файле /etc/passwd. Но практика показала, что для обеспечения более надежной защиты паролей необходимо создание отдельного файла для их хранения. Таким образом, технология выделения отдельного файла shadow для хранения паролей получила название технологии "теневых паролей".

Пример файла и его структура приведены ниже.

root:$1$pOy8fNrf$uOh/dQlI03BMIdEAhWrE.0:12369:0:99999:7:::

bin:*:12245:0:99999:7:::

daemon:*:12245:0:99999:7:::

sync:*:12245:0:99999:7:::

Файл shadow, как и файл passwd, разделен на несколько частей двоеточиями:

1. Имя пользователя. Это поле просто дублируется из файла passwd.

2. Хэш пароля. Пароль в Linux никогда не хранится в открытом виде, в отличие от имени пользователя. При установке пароля до сохранения его в файле он шифруется по специальному алгоритму. По умолчанию таким алгоритмом является алгоритм одностороннего шифрования DES (Data Encryption Standard).

Использование одностороннего алгоритма шифрования исключает возможность расшифровки пароля. Остальные поля содержат различную служебную информацию. Файл паролей имеет права только на чтение и только для суперпользователя. Его содержимое является недоступным для рядовых пользователей, таким образом, исключается возможность раскрытия зашифрованного пароля.

Для изменения пароля в Linux изначально включена специальная программа passwd.

В качестве параметра в командной строке она получает имя пользователя и при запуске требует ввода пароля для этого пользователя. При вводе в целях безопасности пароль не отображается на экране монитора, существует очень высокая вероятность допустить ошибку, особенно когда пароль состоит из цифр и символов различного регистра. Поэтому ввод пароля осуществляется 2 раза для проверки правильности ввода. После подтверждения пароль шифруется и сохраняется в файле /etc/shadow.

При входе в систему процедурой получения имени и пароля пользователя управляет программа mingetty. mingetty – это программа, выдающая приглашение для ввода имени пользователя и пароля на виртуальную консоль.

После ее запуска на экране монитора появляется строка-приглашение ко вводу имени и пароля пользователя. После ввода имени и пароля программа передает управление программе login. login – это программа-посредник, которая осуществляет проверку существования, корректности и соответствия имени пользователя и его пароля в системе. Пароль с помощью механизмов аутентификации шифруется и сравнивается с хэшем из файла. После успешного завершения процедуры аутентификации программа login запускает системную оболочку для взаимодействия пользователя с операционной системой, так называемый shell (от англ. shell – "оболочка"). Путь к исполняемому файлу shell указывается в последнем седьмом поле записи файла passwd. Обычно по умолчанию используется bash (Bourne Shell). Выдается приглашение ко вводу команд с символом # или $ в конце (по умолчанию символ # используется в приглашении суперпользователя, а символ $ - в приглашении обычного пользователя). С этого момента система готова принимать от пользователя команды на выполнение. Для более удобного управления доступом к ресурсам в Linux все пользователи объединяются в группы. В данном случае группа – это множество пользователей, объединенных по каким-либо критериям. К какой группе принадлежит пользователь, говорит 4 поле регистрационной записи в файле passwd. Наличие групп позволяет создать гибкую политику безопасности, основанную на разделении доступа к ресурсам.

21. Дополнительные модули аутентификации

PAM (Pluggable Authentication Modules) – подгружаемые модули аутентификации.

PAM является набором динамически подключаемых модулей, с помощью которых привилегированный пользователь может выбирать, как приложение должно осуществлять процесс аутентификации. Такая технология оказалась очень полезна, особенно при появлении различных методов аутентификации пользователя в системе. Эта технология имеет два основных преимущества. Первым преимуществом является модульность приложений, поддерживающих PAM. Это означает, что для приложения, поддерживающего PAM, появляется возможность изменить механизм аутентификации пользователей без перекомпиляции программы, как говорят "на ходу", достаточно изменить конфигурационный файл PAM. Второе преимущество использования PAM заключается в том, что администратор системы получает полную свободу в выборе схемы аутентификации для каждого отдельного приложения, причем эта схема может быть достаточно сложной и состоящей из нескольких этапов.

Единственным неотъемлемым требованием для использования PAM является наличие изначально встроенных в приложение функций работы с библиотекой PAM.

Сейчас практически все популярные программные продукты имеют встроенную поддержку PAM.

Приложение взаимодействует с библиотекой PAM, причем приложению неизвестно, какие алгоритмы аутентификации используются при проверке подлинности пользователя. Все операции по аутентификации, то есть шифрование пароля и его проверку, производит библиотека PAM. Библиотека Linux-PAM производит чтение параметров аутентификации приложения из конфигурационного файла и загружает необходимые модули в память. Затем загруженные модули попадают в одну из четырех управляющих групп и помещаются туда в порядке появления их в конфигурационном файле. Эти модули при вызове библиотекой Linux-PAM выполняют различные задачи аутентификации для приложения. Для передачи текстовой информации, запрашиваемой у пользователя, может быть использована встроенная функция обмена. Все модули PAM по умолчанию располагаются в каталоге /lib/security, а конфигурационные файлы PAM – в каталоге /etc/pam.d. Имя каждого конфигурационного файла, расположенного в каталоге /etc/pam.d, совпадает с именем приложения, использующего его. Например, для программы login полный путь к конфигурационному файлу PAM будет иметь вид /etc/pam.d/login.

Содержимое этого файла может иметь следующий вид:

#%PAM-1.0

auth required /lib/security/pam_securetty.so

auth required /lib/security/pam_stack.so service=system-auth

auth required /lib/security/pam_nologin.so

account required /lib/security/pam_stack.so service=system-auth

password required /lib/security/pam_stack.so service=system-auth

session required /lib/security/pam_stack.so service=system-auth

session required /lib/security/pam_limits.so

session optional /lib/security/pam_console.so

Каждая строчка файла означает, что для удачной аутентификации пользователь должен пройти через указанный модуль. Формат строки любого конфигурационного файла PAM имеет вид:

тип_модуля флаг_контроля путь_к_модулю параметры_модуля

Все модули библиотеки PAM по функциональному признаку делятся на четыре типа:

auth – этот тип модулей позволяет осуществлять два аспекта аутентификации. Во-первых, он выполняет саму аутентификацию, то есть устанавливает факт того, что пользователь действительно тот, за кого себя выдает. Это может быть запрос пароля или другие методы идентификации. Во-вторых, модуль может разрешить членство в группе (независимо от файла групп пользователей group) или определить другие привилегии, основываясь на информации о пользователе.

account – этот тип модулей выполняет функции, не связанные с аутентификацией напрямую. Обычно он используется для разрешения или запрещения доступа в зависимости от определенных условий, таких как время дня, количество пользователей, одновременно запросивших ресурс, различные параметры системы и так далее.

sessions – в основном этот тип используется для определения дополнительных действий, которые необходимо выполнить до или после предоставления сервиса пользователю. Сюда можно отнести протоколирование действий по открытию определенных файлов, монтирование каталогов, удаление временных файлов и так далее.

password – этот последний тип необходим для обновления опознавательного признака (например, того же самого пароля), который идентифицирует пользователя.

Наличие четырех управляющих типов говорит о том, что сама технология аутентификации с использованием библиотеки PAM способна предоставить не только "голый" способ установления подлинности пользователя, а еще и широкий спектр дополнительных возможностей по защите системы и предоставлению доступа к сервисам.

Флаг контроля определяет, как система будет себя вести при удачном или неудачном прохождении соответствующего модуля. Поскольку модули запускаются один за другим, то специальной расстановкой флагов можно определить значимость каждого из них.

В качестве флагов могут быть использованы четыре ключевых слова:

required – этот флаг определяет, что для удачной аутентификации в целом необходимо успешное прохождение соответствующего модуля. Если при прохождении этого модуля система получила отказ, процесс аутентификации продолжается до тех пор, пока все модули не будут обработаны, и только потом выдается сообщение об ошибке.

requisite – эффект действия этого флага тот же, что и флага required, с одним различием: при получении отказа управление сразу возвращается приложению, прохождение остальных модулей не производится.

sufficient – весь процесс аутентификации считается успешным, если работа модуля с этим флагом была успешной и проверка на предшествующих модулях с флагом required не провалилась. Если работа модуля с этим флагом была неудачной, это не считается фатальной ошибкой.

optional – успешность модуля с этим флагом является необязательной и его использование не критично для аутентификации.

Путь к модулю содержит строку полного пути к модулю в файловой системе. Все модули хранятся в каталоге /lib/security, поэтому, например, путь к модулю pam_limits будет выглядеть как /lib/security/pam_limits.so.

Параметры модуля являются индивидуальным для каждого модуля и описываются в документации модуля.

Помимо основных конфигурационных файлов некоторые модули используют дополнительные файлы конфигурации, находящиеся в каталоге /etc/security.

Каждый файл в этом каталоге предназначен для конкретной группы настроек:

time.conf – в этом файле можно ограничить время доступа пользователей с

различных терминалов к различным сервисам. Эти настройки использует модуль pam_time, поэтому для вступления в силу временных ограничений необходимо добавить модуль pam_time в конфигурационный файл приложения, на которое должны распространяться эти ограничения.

pam_env.conf – с помощью этого файла можно ограничить возможность изменения некоторых переменных среды пользователями. Этот файл используется модулем pam_env.

limits.conf – этот файл дает возможность ограничить размер core-файла, максимально допустимый размер файла, максимальное количество одновременно открытых файлов, запущенных процессов, количество одновременно открытых пользовательских сессий и так далее. Используется модулем pam_limits.

access.conf – с помощью этого файла можно определить различные параметры входа пользователя в систему, например, с каких компьютеров пользователь имеет доступ в систему. Этот конфигурационный файл используется модулем pam_access.

group.conf – в этом файле можно указать, к какой группе будет принадлежать процесс, запущенный пользователем в определенное время с определенного терминала.

Файл читается модулями pam_time и pam_group.

console.perms – в этом файле имеется возможность указать права, назначаемые привилегированным пользователям при входе в систему и возвращаемые консоли при его выходе. Файл используется модулем pam_console.

Как уже неоднократно упоминалось, все модули располагаются в каталоге /lib/security. Кратко рассмотрим, какие модули входят в стандартный пакет PAM, и какие функции выполняет каждый из них:

1. pam_cracklib - password - Позволяет проверять пароль на стойкость, не является ли он, например, словом из словаря и т. д. В основном используется программами, задающими пароли. К полезным параметрам относятся:

retry=N – задает количество попыток на исправление ошибки;

diffok=N – определяет минимальное количество символов, которое должно быть изменено при смене пароля;

minlen=N – задает минимальный размер пароля в символах;

dcredit=N ucredit=N lcredit=N ocredit=N – задает минимальное количество цифр, строчных, прописных букв и других |символов, которые должны присутствовать в пароле.

pam_deny любой Основное назначение этого модуля – запрет доступа при любых условиях.

2. pam_env - auth - Контролирует сохранность переменных среды. С помощью параметра conffile=S можно указать файл конфигурации, отличный от стандартного.

3. pam_ftp - auth - Предназначен для организации анонимного доступа. Получив в качестве имени пользователя последовательность ‘anonymous’, модуль в качестве пароля требует строку, похожую на почтовый адрес. К полезным параметрам относятся:

users=XXX, XXX, … - разрешает анонимный вход для пользователей из этого списка;

ignore – позволяет не обращать внимания, похож ли пароль на почтовый адрес.

4. pam_group - auth - Определяет группу-владельца процесса, |запущенного аутентифицированным пользователем.

5. pam_lastlog - auth - Сообщает о месте и времени входа в систему. Для протоколирования используется файл wtmp, находящийся в каталоге /var/log. К полезным параметрам можно отнести:

nodate noterm nohost silent – позволяют не выводить в сообщении дату, терминал, адрес машины или вообще ничего не записывать в файл;

never – предоставляет возможность выдачи приветствия пользователя, впервые вошедшего в систему.

6. pam_limits |session |Позволяет задавать ограничения для пользователя на размер файлов, число одновременно открытых дескрипторов и т. д. Имеет параметр conf=S для указания альтернативного конфигурационного файла.

7. pam_listfile - auth - Предназначен для организации доступа на основе конфигурационных файлов наподобие /etc/ftpaccess. Возможные паарметры:

onerr=succeed | fail – задает возвращаемое значение в случае неудачного поиска;

sence=allow | deny – задает возвращаемое значение в случае удачного поиска;

file=filename – позволяет указать имя файла со списком;

item=user - tty - rhost - ruser - group

shell – определяет тип элементов в списке. Например, значение item=user означает, что в файле содержится список имен пользователей, имеющих возможность входа в систему.

8. pam_mail - auth - Позволяет уведомлять пользователя о вновь пришедшей почте. Полезные параметры:

dir=S – указывает путь к каталогу почтовых очередей;

noenv – отменяет установку переменной среды MAIL;

close – разрешает уведомлять о новых письмах в почтовых ящиках пользователей с аннулированными бюджетами;

nopen – запрещает вывод какой-либо почтовой информации для вновь заведенного бюджета.

9. pam_nologin - auth - Если файл /etc/nologin существует, в систему может войти только привилегированный пользователь root, остальным же при попытке входа выдается содержимое этого файла.

10. pam_permit - любой - Этот модуль дает доступ при любых условиях. Необдуманное использование этого модуля весьма опасно!

11. pam_pwdb - любой - Замещает модули серии pam_unix. Этот модуль использует интерфейс библиотеки libpwdb, предназначенный для работы с пользовательскими базами данных, что повышает независимость системы аутентификации от способа хранения пользовательских данных. Полезные параметры:

nullok – разрешает использование пустых паролей;

md5 shadow bigcrypt – указывает используемые алгоритмы шифрования паролей.

12. pam_radius - bsession - Позволяет осуществлять аутентификацию через сервер RADIUS.

13. pam_rhosts_auth - auth - Механизм работы этого модуля основывается на анализе содержимого файлов hosts.equiv и .rhosts, используемых для аутентификации такими службами, как rlogin и rsh. Полезные параметры:

no_hosts_equiv – позволяет игнорировать содержимое файла hosts.equiv;

no_rhosts - позволяет игнорировать содержимое файла .rhosts;

suppress – позволяет избежать запись малозначительных сообщений в системный журнал, в частности, при использовании флага sufficient.

14. pam_root_ok - auth - Позволяет организовать доступ привилегированного пользователя к сервису, минуя процедуру ввода пароля. Пользователь допускается к сервису, только если его системный идентификатор равен нулю (то есть привилегированный пользователь root).

15. pam_securetty - auth - Позволяет учитывать файл /etc/securetty. В файле /etc/securetty указаны терминалы, с которых привилегированный пользователь имеет доступ в систему.

16. pam_time - account - Накладывает временные ограничения на доступ в систему.

17. pam_warn - auth - Производит записи в системных журналах при password определенных действиях.

18. pam_wheel - auth - Этот модуль позволяет получить права привилегированного пользователя только пользователям определенной группы. Полезные параметры:

group=XXX – задает группу, пользователи которой имеют возможность получить права пользователя root;

deny – этот параметр инвертирует действие модуля, другими словами, он запрещает изменение прав на права пользователя root для указанной группы;

trust – избавляет пользователей указанной группы от необходимости ввода пароля при смене идентификатора на нулевой.

Возможно также создание собственных PAM-модулей на основе готовых шаблонов, что позволяет быстро получить необходимый метод аутентификации без особых усилий.

Выводы

В данной расчетно-графической работе была освещена тема управления учетными записями пользователей в операционной системе Linux; вопросы создания, удаления учетных записей, блокировка и администрирование доступа пользователей к ресурсам ОС, создание и удаление групп пользователей, управление паролями и работа службы теневого хранения паролей; описана работа дополнительного модуля аутентификации PAM, рассмотрены вопросы серийного добавления пользователей, создания групп и замены паролей, описана работа вспомогательных утилит mass_add и mass_passwd.

А также рассмотрены команды управления учетными записями, формат учетных записей, а также возможность временного предоставления пользователям администраторских прав пользователя Root.