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



Информация о работе «Управление учетными записями пользователей»
Раздел: Информатика, программирование
Количество знаков с пробелами: 57277
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
29257
10
3

... раздел данной главы «Просмотр действующих политик» расскажет Вам больше о просмотре действующих политик на локальном компьютере. Просмотр действующих политик Во время работы с политиками учетных записей и присвоением прав пользователей Вам часто бывает необходимо просмотреть политику, действующую на локальную систему. Действующей является применённая на данный момент политика и, как описано в ...

Скачать
84255
6
8

... анализ существующих подобных систем, выявлены преимущества используемой системы. Также были поставлены цели разработки и основные требования к системе. 2 АИС управления серверным программным обеспечением на базе программного комплекса Webmin/Alterator В этой главе представлены основные этапы технического проектирования системы, такие как функциональное моделирование, моделирование и ...

Скачать
80451
22
5

... ЛВС, тополи, структура, сетевое оборудование и программное обеспечение ЛВС представлены в Приложении А. 2 ПРАКТИЧЕСКАЯ РЕАЛИЗАЦИЯ ПОДБОРА ПРОГРАММНО-ТЕХНИЧЕСКОГО КОМПЛЕКСА ЛВС ДЛЯ АВТОМАТИЗАЦИИ РАБОТЫ БУХГАЛТЕРИИ АОЗТ «ДОНЕЦКОЕ ПУСКО-НАЛАДОЧНОЕ УПРАВЛЕНИЕ № 414 «ДОНБАСЭЛЕКТРОМОНТАЖ» 2.1 Административные, технические и программные характеристики АОЗТ «Донецкое пуско-наладочное управление № ...

Скачать
91640
5
4

... что выбранный вариант является наиболее выгодным и экономически эффективным. 3.1      Анализ основных разделов бизнес-плана Данный раздел посвящён обоснованию эффективности разработки автоматизированной системы управления документооборотом ЦЗЛ. При анализе целесообразности данную разработку следует рассматривать как некоммерческий продукт в том смысле, что она не предназначена для широкого ...

0 комментариев


Наверх