скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

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

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

# 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 ()

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

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

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.

Страницы: 1, 2, 3


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.