Perl для системного администрирования


Создание системы учетных записей для работы с пользователями - часть 19


unless ($result = &InitUnixPasswd($account,$record->{"password"»){

print STDERR "succeeded.\n";

return ""; > else {

print STDERR "failed.\n";

return $result; } >

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

(.profile, .tcshrc, .zshrc, и т.д.) из каталога-прототипа.

Обратите внимание, что мы используем отдельный вызов для установки пароля. Команда useradd на некоторых операционных системах (например, Solaris) оставляет учетную запись заблокированной до тех пор, пока для этой учетной записи не будет вызвана программа pass-wd. Подобный процесс требует известной ловкости рук, поэтому мы оформим данный шаг как отдельную подпрограмму, чтобы оставить в стороне подробности. Об этой подпрограмме мы еще поговорим, а пока рассмотрим «симметричный» код, удаляющий учетные записи:

# На самом деле эти переменные надо устанавливать в центральном

# конфигурационном файле

$userdelex = "/usr/sbin/userdel";

# путь к userdel

sub DeleteUnixAccount{

my ($account,Srecord) = @_;

# конструируем командную строку, используя:

# -г - удалить домашний каталог

my @cmd = (Suserdelex, "-r", $account);

print STDERR "Deleting account.,.";

my $result - Oxffff & system tJcmd;

tt код возврата 0 соответствует успеху, не 0 - неудаче,

№ поэтому необходимо инвертирование

if ('$result){

print STDERR "succeeded.\n";

return ""; } else {

print STDERR "failed.\n":

return "Suserdelex failed";

 }

}

Перед тем как перейти к операциям с учетными записями в NT, разберемся с подпрограммой InitUmxPasswdO, о которой упоминалось раньше. Чтобы завершить создание учетной записи (по крайней мере, в Solaris), необходимо изменить ее пароль при помощи стандартной команды passwd. Обращениеpasswd <accountname>

изменит пароль для этой учетной записи.

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




- Начало -  - Назад -  - Вперед -



Книжный магазин