суббота, 14 февраля 2015 г.

NIS сервер и клиенты (Xubuntu 14.04)

Исходные данные: 
Xubuntu 14.04 (64 разряда сервер + отдельный сервер LTSP + клиенты в т.ч. бездисковые, в т.ч. винды).

Нужно раздать по сети пароли с тем чтоб не заводить их на всех ресурсах. Идея такова: Заводим их в Самбе при помощи smbpasswd, они одновременно заводятся как linux-пользователи на SAMBA - сервере (в /etc/passwd, /etc/shadow, /etc/groups), это будет "самое главное место для паролей" и оттуда их раздаем при помощи NIS на остальные сервера (еще нужно будет написать два коротеньких скриптика для обновления NIS при заведении нового пользователя или смене пароля и указать их в smb.conf). На самом деле на момент написания материала интересовал всего-навсего еще один сервер на котором "живет" LTSP (там расположены dhcp, tftp, nbd - сервера и домашние каталоги машин-клиентов, монтируемые по NFS). Вот ради него и все пляски-то.
В принципе есть два почти достаточных ресурса SettingUpNISHowTo и http://www.server-world.info.

Отличие совсем небольшие, и только в деталях. По этому коротко-коротко.
1. Проверяем содержимое  /etc/hosts.  IP сервера должен там быть (имеется ввиду нормальные внешний интерфейс, а не  127.0.0.1). NIS должен быть по возможности независим от  DNS .
2.Как написано, так и делаем  -  Add the following line to hosts.allow:
rpcbind ypserv ypbind : list of IP addresses
rpc.yppasswdd : localhost # тут есть о чем подумать, он вообще не очень нужен...
3. Ставим NIS:
sudo apt-get install rpcbind nis
Установочный скрипт спросит имя nis-домена, обычно это название или что-то в этом роде. Например для владельца домена pupkin.ru нормально иметь nis-домен pupkin или vpupkin.
4. В /etc/default/nis пропишите NISSERVER = master
5. В /etc/yp.conf прописываем сервер (лучше IP):
#domain  server 
domain pupkin server 192.168.0.1
6. Правим /var/yp/Makefile. Там инструкция внутри. Реально нужно проверить MINGID.
7. Правим /etc/ypserv.securenets :
host 192.168.1.1
255.255.255.0 192.168.0.0
etc.
Важно!!!: уберите  0.0.0.0 ! - Иначе всем и все!
8. Строим базу, предварительно перезапустив rpcbind :
sudo initctl restart rpcbind
Собственно базы:
sudo /usr/lib/yp/ypinit -m
Будет спрошено про сервера, CTRL-D нас устроит.
9. (Re)start everything:
sudo initctl restart rpcbind
sudo initctl start ypserv
ypcat passwd должен нам показать пароли, все работает
10. Обновление (добавили пользователя или что-то еще):
sudo make -C /var/yp

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

Теперь клиент:

1. Пакеты:
sudo apt-get install rpcbind nis
Отвечаем на вопрос про имя домена. Рекомендуется так же ограничить доступ к rpcbind в /etc/hosts.allow  :
rpcbind : NIS Server IP
2. Разрешаем сервис NIS:
В хвост /etc/passwd добавляем строчку:
+::::::
В  /etc/group аналогично:
+:::
И в /etc/shadow аналогично:
+::::::::
Смотрим что у нас в  /etc/nsswitch.conf это порядок опроса разных источников имен. "compat" означает как раз режим с использованием "родных" файлов и NIS. Остальное прозрачно. 
3. Правим  /etc/yp.conf - прописываем наш сервер (и запасной, если делали):
ypserver 123.45.67.89
ypserver 187.65.43.21
4. (За)пускаем nis
initctl restart ypbind
5. Проверяем так же при помощи ypcat. Остались скрипты для SAMBA.

SAMBA

В /etc/samba/smb.config прописываем "свои" проги
add user script = /usr/local/bin/useradd.local  %u
passwd program = /usr/local/bin/passwd.local %u

Ну и сами эти скриптики.
useradd.local

#! /bin/bash
ADD=/usr/sbin/useradd
#ADD="bash ./fakeuser"
if [ -z "$1" ]; then
    echo "usage: $0 "
    exit 1
fi
CWD=`pwd`
$ADD -s /sbin/nologin $1
# Make a homedir
mkdir /home/$1chown $1.users $1chmod 0700 /home/$1 
cd /var/yp
make
cd $CWD
и passwd.local
#! /bin/bash
ADD=/usr/bin/passwd
if [ -z "$1" ]; then
    echo "usage: $0 "
    exit 1
fi
CWD=`pwd`
$ADD  $1
cd /var/yp
make
cd $CWD
В используемые в хозяйстве иные скрипты для создания и удаления пользователей дописали в хвост make -C /var/yp И на этом вроде все...
И еще мелкое продолжение про Самбу было написано 2 мая 2016.

И добавление одного скрипта (заводит нового пользователя в NIS и в SAMBA) от 21 феврала 2021

#! /bin/bash
# use: bash ./newuser.bash newname newpass realname_f.l.

if [ -z "$3" ]; then 
    echo "usage: $0 <username> <password> <realname_f.l.>"
    exit 1
fi

CWD=`pwd`

echo "Добавляем юзверя $3 как: $1 с паролем $2"
useradd  $1 -G fuse,scanner,vboxusers,audio,cdrom,video,plugdev,lpadmin -m -s "/bin/bash" -c $3
echo $1:$2 | chpasswd
chgrp adm /home/$1
chmod 0750 /home/$1

echo "И в самбу добавим"
echo $2 | tee - | smbpasswd -a -s $1

cd /var/yp
make



Комментариев нет:

Отправить комментарий