Sphelper — различия между версиями

Материал из Школьный портал: справочника
Перейти к: навигация, поиск
(Проверки)
(sphelper на другом сервере)
 
(не показаны 4 промежуточные версии этого же участника)
Строка 1: Строка 1:
Это черновик.
 
 
 
sp-helper — это средство для автоматического создания unix-пользователей (как следствие, почтовых ящиков) и samba-пользователей синхронно с созданием пользователей в Школьном портале. Это же касается задания (сброса) и изменения их паролей.
 
sp-helper — это средство для автоматического создания unix-пользователей (как следствие, почтовых ящиков) и samba-пользователей синхронно с созданием пользователей в Школьном портале. Это же касается задания (сброса) и изменения их паролей.
  
Строка 43: Строка 41:
  
 
<pre>
 
<pre>
 +
#!/bin/bash
 +
 
SPHELPER_SERVICES_LINE='sphelper 7890/tcp'
 
SPHELPER_SERVICES_LINE='sphelper 7890/tcp'
 
if ! grep -q "$SPHELPER_SERVICES_LINE" /etc/services; then
 
if ! grep -q "$SPHELPER_SERVICES_LINE" /etc/services; then
Строка 61: Строка 61:
 
# create_dc_users = sp-helper
 
# create_dc_users = sp-helper
 
# sp_helper_host = IP_сервера_куда_вы_перенесли_sphelper
 
# sp_helper_host = IP_сервера_куда_вы_перенесли_sphelper
 +
 +
Пример файла конфигурации для sphelper
 +
<pre>
 +
# SP config for sphelper only
 +
sphelper_smbuser = sphelper
 +
sphelper_smbpass = ***
 +
db_user = SYSDBA
 +
db_pass = ***
 +
</pre>
  
 
== Журнал ==
 
== Журнал ==
Строка 86: Строка 95:
  
 
# имя пользователя для проверки (логин в Портале)
 
# имя пользователя для проверки (логин в Портале)
my $user = 'admin';
+
my $user = 'ivanov';
  
 
our (%gconf);
 
our (%gconf);
Строка 100: Строка 109:
 
# пример результата
 
# пример результата
 
# OK: user = ivanov, groups = students,class_1a
 
# OK: user = ivanov, groups = students,class_1a
 
 
</pre>
 
</pre>

Текущая версия на 14:35, 18 февраля 2015

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