Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #72, ДЕКАБРЬ 2004 г.

В ритме самбы

Anton Karpov

Хакер, номер #072, стр. 072-100-4


После этого для каждого юзверя нужно будет создать домашний каталог с поддиректорией profile, куда будут складываться windows-настройки пользователя (т.н. перемещаемый профиль), а также каталог на публичный ресурс (/usr/local/samba/public/имя_юзера). Набивать каждый раз одни и те же команды - убийство, поэтому привожу скрипт для добавления одного пользователя, который при желании легко модифицировать, чтобы он понимал сразу несколько параметров-имен пользователей на входе. Разумеется, для разных ОС аргументы, передаваемые команде useradd, будут отличаться. Все комментарии смотри по ходу скрипта.

mkuser.sh - скрипт для добавления Samba-пользователя

#!/bin/sh

[ $# -ne "3" ] && echo "usage: $0 loginname name lastname" && exit 1

# Добавляем пользователя /etc/passwd, определяя его в созданную ранее группу users, создаем ему домашний каталог и сразу лочим пользователя.

echo "[+] Adding user $1"

pw useradd $1 -c "$2 $3" -g users -s /sbin/nologin -m && \

pw lock $1

# Создаем каталог профиля пользователя в его хоумдире.

mkdir /home/$1/profile

chown -R $1 /home/$1 && \

# Добавляем его в базу самбы без пароля (!). Пользователь должен сменить себе пароль после первого логина!

echo "[+] Adding $1 into smb accounts"

smbpasswd -a -e -n $1 && \

smbpasswd -e $1 && \

# По правилам, пользователь может заходить в домен только с машины, которая присутствует в домене (trusted host). Пусть имена машин будут такими же, как и имена юзеров, но с постфиксом comp. Также заметь, что учетная запись машины имеет символ $ на конце. Проделываем для машин все то же, что и для пользователей, только домашнего каталога у них не будет.

echo "[+] Adding machine for $1"

pw useradd "$1"comp$ -s /sbin/nologin -d /nonexistent -g 1008 -c "Machine &" && \

pw lock "$1"comp$

# А вот аргументы команде smbpasswd для юзера и для машины разные.

smbpasswd -a -m "$1"comp$ && \

# Создаем публичную диру для пользователя.

mkdir /usr/local/samba/public/$1 && \

chown $1 /usr/local/samba/public/$1 && \

chgrp users /usr/local/samba/public/$1

chmod 770 /usr/local/samba/public/$1

echo "[+] Done!"

exit 0

# ./mkuser.sh pupkin Pupkin Vasiliy

Ничто не мешает сделать аналогичный скрипт и для удаления.

rmuser.sh - удаление пользователя из системы и базы Samba

#!/bin/sh

if [ $# -lt 1 ]; then

echo "Usage: $0 user"

exit 1

fi

# Удаляем пользователя из PDC.

smbpasswd -x $1

# Удаляем пользователя и его машину из системы.

pw userdel $1

pw userdel "$1"comp$

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

rm -rf /usr/local/samba/public/$1

rm -rf /home/$1

# ./rmuser.sh pupkin

Ключ на старт!

Стартовый скрипт во FreeBSD расположился в каталоге /usr/local/etc/rc.d/samba.sh. Однако если ты запустишь его, ничего не произойдет. Скрипт использует систему rcNG (man rc.subr), поэтому необходимость запуска программ определяет по наличию соответствующих переменных в /etc/rc.conf. Для samba.sh такими переменными являются samba_enable или, более детально, nmbd_enable и smbd_enable. Чтобы самба стартовала, добавь в /etc/rc.conf

Назад на стр. 072-100-3  Содержание  Вперед на стр. 072-100-5