Установка сервера NIS в Debian Linux и настройка клиентов

NIS очень прикольная штука. Она позволяет авторизоваться на всех машинах, где есть её клиент с помощью учетных данных локальных пользователей на сервере. Ну т. е. если мы поменяем пароль на свою учетку, то все клиенты автоматом подтянут изменения. Да и просто удобно.

Итак, установим нужные пакеты и их зависимости командой:

aptitude -y install nis portmap

Когда спросит, введем имя нашего домена – например, example.com
Автостарт службы сфейлиться, но не пугайтесь – ему просто не хватает некоторых настроек.

Займемся конфигурацией.

1) nano /etc/default/nis

Здесь прописываем: 

NISSERVER=master

2) nano /etc/ypserv.securenets

Здесь закомментируем строчку, разрешающую доступ со всех IP:

# This line gives access to everybody. PLEASE ADJUST!
# make it comment
# 0.0.0.0 0.0.0.0

И пропишем адреса наших подсетей, например:
255.255.255.0                    10.86.35.0

3) nano /var/yp/Makefile

В 119-й линии добавим shadow:

ALL = passwd shadow group hosts rpc services netid protocols netgrp

4) nano /etc/hosts 

Добавим адрес нашего сервера NIS:
127.0.0.1 localhost nis.example.com nis
#Добавим также сетевой адрес сервера
10.86.35.10 nis.example.com nis

5) Обновим базу данных NIS сервера командой (введя на запрос имя нашего nis сервера как мы его прописали чуть выше – nis):

/usr/lib/yp/ypinit -m

Вывод команды:
At this point, we have to construct a list of the hosts which will run NIS
servers. master is in the list of NIS server hosts. Please continue to add
the names for the other hosts, one per line. When you are done with the
list, type a <control D>
. next host to add: nis
next host to add:
# push Ctrl+D
The current list of NIS servers looks like this:

localhost
nis

Is this correct? [y/n: y]
y

We need a few minutes to build the databases…
Building /var/yp/server.world/ypservers…
gethostbyname(): Success
Running /var/yp/Makefile…
make[1]: Entering directory `/var/yp/server.world’
Updating passwd.byname…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating passwd.byuid…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating group.byname…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating group.bygid…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating shadow.byname…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating hosts.byname…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating hosts.byaddr…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating rpc.byname…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating rpc.bynumber…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating services.byname…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating services.byservicename…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating netid.byname…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating protocols.bynumber…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating protocols.byname…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating netgroup…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating netgroup.byhost…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating netgroup.byuser…
failed to send ‘clear’ to local ypserv: RPC: Program not registeredmake[1]: Leaving directory `/var/yp/server.world’

master has been set up as a NIS master server.

Now you can run ypinit -s master on all slave server.

6) Запускаем демона NIS

/etc/init.d/nis start
Starting NIS services: ypserv yppasswdd ypxfrd ypbind.

7) Необходимо проапдейтить базу NIS:

cd /var/yp
make

Настройка клиентов NIS:

1) Установка:

aptitude -y install nis portmap
2) Конфигурация NIS Client – подредактируем несколько конфигов
nano /etc/yp.conf

# add at the last: (domain name) (server) (NIS server’s hostname)
domain example.com server nis.example.com

nano /etc/nsswitch.conf

passwd:      compat nis

group:          compat nis
shadow:         compat nis

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4 nis
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

nano /etc/pam.d/common-session

Добавляем в конец для автоматического создания домашних директорий:

session optional pam_mkhomedir.so skel=/etc/skel umask=077

 /etc/init.d/nis restart

Всё. Можем заходить с помощью логина из NIS сервера.
Несколько полезных команд:

ypwhich – показывает адрес NIS-сервера

ypcat passwd  – показывает пользователей NIS-сервера
ypcat hosts – показывает список хостов
http://geckich.blogspot.com/

Ошибка в FileZilla Error GnuTLS error “-12” A TLS fatal alert has been received.

Эта ошибка возникает, если пытаться зайти колиентом версии 3.5.3 на FTP сервер, поднятый на vsftpd и с использованием FTPES (FTP over explicit TLS/SSL)

Вводим все данные правильно в Site Manager и… получаем ошибку

Error GnuTLS error “-12” A TLS fatal alert has been received.

WTF???

Дело в том, что в FileZilla версией от 3.5.3 не поддерживаются определенные заголовки SSL и TLS. Я так особо не вникал, какие – там можно себе мозг сломать 🙂

В общем, решение заключается в добавлении в конфиг ftp-сервера /etc/vsftpd.conf строчки:

ssl_ciphers=HIGH

Перезапускаем ftp демона и пробуем.
http://geckich.blogspot.com/

Удаление скрытых драйверов в Windows 2003

Недавно задолбал меня на сервере драйвер, из-за которого периодически сыпались ошибки в ивентлог… Нашел способ его (и не только его) удалить.

Для того, чтобы найти и удалить ненужные драйвера:

1. Нажмите [Windows]+[Break],чтобы вызвать диалоговое окно System Properties (Свойства системы).

2. Перейдите на вкладку Advanced (Дополнительно) и нажмите на кнопку Environment Variables (Переменные среды).

3. Нажмите на кнопку New (Создать) на панели System Variables (Системные переменные).
В диалоговом окне New System Variable (Новая системная переменная) в поле Variable Name (Имя переменной) введите devmgr_show_nonpresent_devices, а в поле Variable Value (Значение переменной) введите 1.

4. Нажмите OK, чтобы вернуться в диалоговое окно System Properties (Свойства системы) и затем ещё раз нажмите OK.

5. Перейдите на вкладку Hardware (Оборудование) и нажмите на кнопку Device Manager (Диспетчер устройств).

6. В меню Диспетчера устройств выберите View | Show Hidden Devices (Вид | Показать скрытые устройства).

7. Раскройте все списки дерева устройств и ищите затемнённые иконки, обозначающие неиспользуемые драйвера.

8. Чтобы удалить неиспользуемый драйвер, щелкните правой кнопкой на соответствующем ярлыке и выберите команду Uninstall (Удалить).

Тема работает на Windows XP и Windows Server 2003 R2. На остальных версиях не проверял, но мне кажется, что скорее всего тоже работать будет.

http://geckich.blogspot.com/

Проверка заданий планировщика Windows Scheduler в Nagios

Понадобилось сделать проверку, которая бы раз в день проверяла дату последнего выполнения заданий на сервере и отсылала отчетик по почте.

Такую задачу можно решить многими способами. Здесь опишу свой вариант.

Использовать я буду NRPE для Windows, а точнее его реализацию в NSC++ клиенте (0.3.х версия). NRPE позволяет выполнять на стороне клиента любые скрипты и получать от них результаты – главное всё правильно настроить 😉 Как установить и настроить NRPE на сервере и клиенте я писал в этой статье. Для скриптов будем использовать Python 3. Почему? Во 1-х я знаю этот язык 🙂 а во 2-х, я долго мучался с PowerShell, в котором очень криво работает парсинг CSV и мне так и не удалось заставить его нормально вытягивать данные. В итоге, я положий большой и толстый на мракобесную приблуду и заюзал православный питон, в котором тоже была пара граблей, но гугл помог их решить 🙂

Итак. Для начала настроим клиента.

Идем на http://python.org/download/ и скачиваем 3ю версию питона для Windows, устанавливаем (Далее, Далее… Готово 🙂 ).

Открываем конфиг NSC++ и в секцию [External Scripts] прописываем:

check_scheduler=C:Python32python.exe “C:Program FilesNSClient++scriptsscript.py”

Затем собсно и пишем этот скриптец (создаем текстовый файлик, переименовываем и ПКМ / Edit with IDLE):

import csvimport sys
import os
##Deleting old log
os.system('del "log.csv"')
##Performing schtasks command
os.system('schtasks /query /fo CSV /v >> "log.csv"')
##Clean bad characters inserted by schtasks
fi = open('log.csv', 'rb')
data = fi.read()
fi.close()
fo = open('log.csv1', 'wb')
fo.write(data.replace(b'x00', b''))
fo.close()
##Opening cleaned CSV
ifile = open('log.csv1', "r")
reader = csv.reader(ifile, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL)
##Extracting needed data
for row in reader:
if (row[1] == "rdc_106") or (row[1] == "rdc_108") or (row[1] == "rdc_115") or (row[1] == "rdc_116"):
print (row[1]+" : "+row[5])
ifile.close()

Алгоритм работы скрипта такой:

  • удаляем старый лог чтоб не мешал
  • командой schtasks /query /fo CSV /v >> “log.csv” получаем список заданий и в формате CSV записываем в лог-файл
  • очищаем файлик от символов неотображаемых null которые мракософтные команды и Excel зачем-то пихают в файлик CSV, а питон ругается на аткие символы
  • а затем извлекаем в командную строку поля TaskName и Last Run Time для нужных нам заданий.

Перезапускаем службу NSClient++. Всё, если вы ничего не напутали с путями, то клиент настроен.
Настроим теперь сервер.

Тут всё даже попроще. Редактируем файл команд /usr/local/nagios/etc/objects/commands.cfg добавив в конец:

define command{
        command_name    check_scheduler
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_scheduler
        }

Затем пишем скриптец на bash, который будет чекать наши задания и отправлять результаты по почте. Мне не надо было делать постоянный чек, потому я не прописывал сервис для хоста.

#!/bin/bash
#удаляем старый лог чтоб не мешал
rm /home/user/daily_log
#тут пишем комментарии, чеки и всё такое
echo ” `date ` nn Daily report for Super-duper server.nn [Disk space on D:]” >> /home/user/daily_log>
/usr/local/nagios/libexec/check_nt -H 192.168.1.4 -p 12489 -v USEDDISKSPACE -l d -d SHOWALL >> /home/user/daily_log
echo “n [Processes state:]” >> /home/user/daily_log
/usr/local/nagios/libexec/check_nt -H 192.168.1.41 -p 12489 -v PROCSTATE -l someprocess.exe -d SHOWALL >> /home/user/daily_log
/usr/local/nagios/libexec/check_nrpe -H 192.168.1.4 -p 5666 -c check_scheduler >> /home/user/daily_log
cat /home/user/daily_log | mail -s “Report for Super-duper” -c copy_mail@domain.com recipient@domain.com 

chmod +x /home/user/daily_report.sh

И пихаем этот скриптик в планировщик на нужное на время crontab -e (например, в 6-45 по рабочим дням):

45 6 * * 1-5 sh /home/user/daily_report.sh

Усё. Если всё сделано правильно, то пожинаем плоды своего труда.

http://geckich.blogspot.com/