Sphelper

Материал из Школьный портал: справочника
Перейти к: навигация, поиск

sp-helper — это средство для автоматического создания unix-пользователей (как следствие, почтовых ящиков) и samba-пользователей синхронно с созданием пользователей в Школьном портале. Это же касается задания (сброса) и изменения их паролей.

# для начала использования этого сервиса нужен samba-пользователь.
# есть ли пользователь для sp-helper? узнаём командой:
pdbedit -L | grep sp-helper

# если нет, создаём

# придумайте и запишите страшно длинный пароль
# например, с помощью команды
pwgen --secure 64 1

# создаём пользователя с паролем
smbpasswd -s -a sp-helper

# включаем пользователя в группу root:
usermod -G root sp-helper

# проверка (должно ответить root)
id -n -g sp-helper

В файле конфигурации (см. Файл конфигурации) должны быть заданы настройки:

  1. sphelper_smbuser = sp-helper
  2. sphelper_smbpass = тот_самый_страшный_пароль

По умолчанию sp-helper устанавливается на сервере вместе с порталом.

sphelper на другом сервере

Можно установить sp-helper на другой сервер, где нет портала.

Для этого нужно скопировать файлы:

/opt/xxi/sphelper.pl
/etc/xinetd.d/sphelper

Выполните в bash от пользователя root скрипт:

#!/bin/bash

SPHELPER_SERVICES_LINE='sphelper 7890/tcp'
if ! grep -q "$SPHELPER_SERVICES_LINE" /etc/services; then
	echo "$SPHELPER_SERVICES_LINE" >> /etc/services
fi
chown root.root /opt/xxi/sphelper.pl
chmod 750       /opt/xxi/sphelper.pl
service xinetd restart

Файл конфигурации портала нужно скопировать на сервер, куда вы ставите sp-helper.

В нём должны быть параметры, равные параметрам на основном сервере:

  1. db_user
  2. db_pass

На сервере с порталом необходимо задать настройки:

  1. create_dc_users = sp-helper
  2. sp_helper_host = IP_сервера_куда_вы_перенесли_sphelper

Пример файла конфигурации для sphelper

# SP config for sphelper only
sphelper_smbuser = sphelper
sphelper_smbpass = ***
db_user = SYSDBA
db_pass = ***

Журнал

/var/log/sphelper.log

Проверки

sphelper слушает порт?

netstat -ntlp|grep 7890
# пример результата
# tcp        0      0 0.0.0.0:7890            0.0.0.0:*               LISTEN      25855/xinetd

Perl-скрипт для проверки sphelper:

#!/usr/bin/perl
use strict;
use CGI::Carp;
require "/var/www/cgi-bin/sp/common.pl";

# имя пользователя для проверки (логин в Портале)
my $user = 'ivanov';

our (%gconf);
%gconf = read_config('/var/www/cgi-bin/sp/sp.conf');

my $answer = sphelper_request("<sp_user_info><user>$user</user></sp_user_info>");

if ( $answer =~ m|<groups>(.+)</groups>| )
	{ print "OK: user = $user, groups = $1\n" }
else
	{ print "FAIL: $answer\n" }

# пример результата
# OK: user = ivanov, groups = students,class_1a