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

Материал из Школьный портал: справочника
Перейти к: навигация, поиск
(Новая страница: «Это черновик. sp-helper — это средство для автоматического создания unix-пользователей (как сле...»)
 
(sphelper на другом сервере)
 
(не показано 15 промежуточных версии этого же участника)
Строка 1: Строка 1:
Это черновик.
 
 
 
sp-helper — это средство для автоматического создания unix-пользователей (как следствие, почтовых ящиков) и samba-пользователей синхронно с созданием пользователей в Школьном портале. Это же касается задания (сброса) и изменения их паролей.
 
sp-helper — это средство для автоматического создания unix-пользователей (как следствие, почтовых ящиков) и samba-пользователей синхронно с созданием пользователей в Школьном портале. Это же касается задания (сброса) и изменения их паролей.
  
Строка 9: Строка 7:
  
 
# если нет, создаём
 
# если нет, создаём
 +
 +
# придумайте и запишите страшно длинный пароль
 +
# например, с помощью команды
 +
pwgen --secure 64 1
 +
 +
# создаём пользователя с паролем
 
smbpasswd -s -a sp-helper
 
smbpasswd -s -a sp-helper
  
Строка 16: Строка 20:
 
# проверка (должно ответить root)
 
# проверка (должно ответить root)
 
id -n -g sp-helper
 
id -n -g sp-helper
 +
</pre>
 +
 +
В файле конфигурации (см. [[Файл конфигурации]]) должны быть заданы настройки:
 +
# sphelper_smbuser = sp-helper
 +
# sphelper_smbpass = тот_самый_страшный_пароль
 +
 +
По умолчанию sp-helper устанавливается на сервере вместе с порталом.
 +
 +
== sphelper на другом сервере ==
 +
 +
Можно установить sp-helper на другой сервер, где нет портала.
 +
 +
Для этого нужно скопировать файлы:
 +
<pre>
 +
/opt/xxi/sphelper.pl
 +
/etc/xinetd.d/sphelper
 +
</pre>
 +
 +
Выполните в bash от пользователя root скрипт:
 +
 +
<pre>
 +
#!/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
 +
</pre>
 +
 +
Файл конфигурации портала нужно скопировать на сервер, куда вы ставите sp-helper.
 +
 +
В нём должны быть параметры, равные параметрам на основном сервере:
 +
# db_user
 +
# db_pass
 +
 +
На сервере с порталом необходимо задать настройки:
 +
# create_dc_users = sp-helper
 +
# sp_helper_host = IP_сервера_куда_вы_перенесли_sphelper
 +
 +
Пример файла конфигурации для sphelper
 +
<pre>
 +
# SP config for sphelper only
 +
sphelper_smbuser = sphelper
 +
sphelper_smbpass = ***
 +
db_user = SYSDBA
 +
db_pass = ***
 +
</pre>
 +
 +
== Журнал ==
 +
 +
<pre>
 +
/var/log/sphelper.log
 +
</pre>
 +
 +
== Проверки ==
 +
 +
sphelper слушает порт?
 +
 +
<pre>
 +
netstat -ntlp|grep 7890
 +
# пример результата
 +
# tcp        0      0 0.0.0.0:7890            0.0.0.0:*              LISTEN      25855/xinetd
 +
</pre>
 +
 +
Perl-скрипт для проверки sphelper:
 +
<pre>
 +
#!/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
 
</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