Re: пакет mon

2004-11-17 Пенетрантность Konstantin Klimchev
On Tue, 16 Nov 2004 22:07:10 +0300
Sergey V. Burchu [EMAIL PROTECTED] wrote:

 Как-то раз пришлось решать такую проблему(тож sms). 
 Правили init скрипт. Он в аттаче. Кажется рабочий даже. 
А мантейнеру не пробовали послать? Было б замечательно. По
крайней мере уже 2-е кто подорвался.

 А вообще mon та еще штучка..
А по подробнее... У меня пока довольно неплохое ощущение,
комфортное, я бы выразился..

-- 
Best Regards, Konstantin Klimchev 
(mailto:[EMAIL PROTECTED]jabber:[EMAIL PROTECTED])
ATK-Internet ISP, Arkhangelsk, Russia



Re: пакет mon

2004-11-17 Пенетрантность Michael Shigorin
On Wed, Nov 17, 2004 at 09:04:20AM +0300, Konstantin Klimchev wrote:
  А вообще mon та еще штучка..
 А по подробнее... У меня пока довольно неплохое ощущение,
 комфортное, я бы выразился..

Ну, у нас Игорь Хомяков (собиравший mon) его выкинул в пользу
monit.  Вообще monit та ещё штучка, но сполняет.

-- 
  WBR, Michael Shigorin [EMAIL PROTECTED]
  -- Linux.Kiev http://www.linux.kiev.ua/



Re: пакет mon

2004-11-17 Пенетрантность Konstantin Klimchev
On Wed, 17 Nov 2004 10:51:45 +0200
Michael Shigorin [EMAIL PROTECTED] wrote:

 Ну, у нас Игорь Хомяков (собиравший mon) его выкинул в
 пользу monit.  Вообще monit та ещё штучка, но сполняет.

на monit я смотрел, но mon мне показался более гибким.

-- 
Best Regards, Konstantin Klimchev 
(mailto:[EMAIL PROTECTED]jabber:[EMAIL PROTECTED])
ATK-Internet ISP, Arkhangelsk, Russia



пакет mon

2004-11-16 Пенетрантность Konstantin Klimchev
Добрый день!

Прошу помощи - что-то я уже совсем ничего не понимаю :( 

1) Есть пакет mon, работающий с правами daemon:shadow

2) Прописываю пользователя daemon в группу dialout:
debian:~# id daemon
uid=1(daemon) gid=1(daemon) groups=1(daemon),20(dialout)

или
debian:~# su - daemon -c 'id'
uid=1(daemon) gid=1(daemon) groups=1(daemon),20(dialout)

3) Создаю alert 
echo `date` `id`  /tmp/test.alert.log

результат сработки которго:
Tue Nov 16 14:33:31 MSK 2004 uid=1(daemon) gid=42(shadow)
groups=42(shadow)

Вопрос: куда делась группа 20 (dialout)

PS. перезапуск сервиса выполнялся, в отчаянии даже сервер
(он тестовый - можно) перезагружал.

-- 
Best Regards, Konstantin Klimchev 
(mailto:[EMAIL PROTECTED]jabber:[EMAIL PROTECTED])
ATK-Internet ISP, Arkhangelsk, Russia



Re: пакет mon

2004-11-16 Пенетрантность Konstantin Klimchev
On Tue, 16 Nov 2004 14:50:48 +0300
Konstantin Klimchev [EMAIL PROTECTED] wrote:

 Вопрос: куда делась группа 20 (dialout)
 
 PS. перезапуск сервиса выполнялся, в отчаянии даже сервер
 (он тестовый - можно) перезагружал.

хм... проблема где-то в недрах /etc/init.d/mon

если пускать в лоб:  

su - daemon -c /usr/bin/mon 

то все нормально


-- 
Best Regards, Konstantin Klimchev 
(mailto:[EMAIL PROTECTED]jabber:[EMAIL PROTECTED])
ATK-Internet ISP, Arkhangelsk, Russia



Re: пакет mon

2004-11-16 Пенетрантность Artem Chuprina
Konstantin Klimchev - debian-russian@lists.debian.org  @ Tue, 16 Nov 2004 
15:05:53 +0300:

  Вопрос: куда делась группа 20 (dialout)
  
  PS. перезапуск сервиса выполнялся, в отчаянии даже сервер
  (он тестовый - можно) перезагружал.

 KK хм... проблема где-то в недрах /etc/init.d/mon

 KK если пускать в лоб:  

 KK su - daemon -c /usr/bin/mon 

 KK то все нормально

После того, как добавил пользователя в группу, серверу stop; start
делал?  Впрочем, бывает разное.  В принципе, если он сам меняет
identity, то это его задача проинитить дополнительные группы.  У clamav,
например, на эту тему слово в конфиге есть.  С другой стороны, если в
норме он запускается уже под нужным пользователем, то дополнительные
группы должен инитить не он.

-- 
Artem Chuprina
RFC2822: [EMAIL PROTECTED], FIDO: 2:5020/122.256, Jabber: [EMAIL PROTECTED]



Re: пакет mon

2004-11-16 Пенетрантность Konstantin Klimchev
Сам с собой общаюсь. Похоже на обострение...

Корни проблемы в том, что необходимо отправлять sms при
каких-либо (заранее описаных) проблемах.

Имеем /dev/ttyUSB0 
c правами root:dialout
и доступом crw-rw

Проблему, описанныю в первом посте обошел следующим образом:
Владельцем /dev/ttyUSB0 сделал пользователя daemon.

А теперь - на сколько это правильно, если это не красиво,
как сделать красиво: 
- править init-скрипт, 
- менять права на /dev/ttyUSB0
- запускать от root (но это делать не буду точно)
- ...

-- 
Best Regards, Konstantin Klimchev 
(mailto:[EMAIL PROTECTED]jabber:[EMAIL PROTECTED])
ATK-Internet ISP, Arkhangelsk, Russia



Re: пакет mon

2004-11-16 Пенетрантность Konstantin Klimchev
On Tue, 16 Nov 2004 15:31:32 +0300
Artem Chuprina [EMAIL PROTECTED] wrote:

 После того, как добавил пользователя в группу, серверу
 stop; start делал?  Впрочем, бывает разное.  
да, как уже описывал

В принципе, если он сам меняет
 identity, то это его задача проинитить дополнительные
 группы.  У clamav, например, на эту тему слово в конфиге
 есть.  
этого нет

С другой стороны, если в норме он запускается уже
 под нужным пользователем, то дополнительные группы должен
 инитить не он.
службы работы с инит-скриптами не могут такое творить (т.е.
берем только группу пользователя, а в какие группы он
входит еще - побоку)?
там еще прослойка perl'овская в инит-скрипте - может она (на
нее как раз грешу), но перл для меня - надо подумать (сходу
не могу) - я все более по питону.

А решил проблемку - права на девайс поменят. Хак об колено
так сказать.

-- 
Best Regards, Konstantin Klimchev 
(mailto:[EMAIL PROTECTED]jabber:[EMAIL PROTECTED])
ATK-Internet ISP, Arkhangelsk, Russia



Re: пакет mon

2004-11-16 Пенетрантность Yuri Kozlov

On Tue, 16 Nov 2004 15:43:36 +0300
 Konstantin Klimchev [EMAIL PROTECTED] wrote:

там еще прослойка perl'овская в инит-скрипте - может она (на
нее как раз грешу), но перл для меня - надо подумать (сходу
не могу) - я все более по питону.
В общем я тоже не фанат перла (да и аналога getgroups я у него сразу 
не нашёл),но можно немножно поправить скриптик

В daemon_run()
...
 $) = $gid $gid 20;
if ($( ne $gid $gid 20 || $) ne $gid $gid 20) {
die Error setting group ids, real/effective is now 
$(/$)\n;


зы Python лучше :)

Regards,
Yuri Kozlov



Re: пакет mon

2004-11-16 Пенетрантность Konstantin Klimchev
On Tue, 16 Nov 2004 16:31:37 +0300
Yuri Kozlov [EMAIL PROTECTED] wrote:

 В общем я тоже не фанат перла (да и аналога getgroups я у
 него сразу не нашёл),но можно немножно поправить скриптик
 В daemon_run()
 ...
   $) = $gid $gid 20;
  if ($( ne $gid $gid 20 || $) ne $gid $gid 20)
  {
  die Error setting group ids, real/effective
  is now 
 $(/$)\n;
 
 зы Python лучше :)

огромное мерси... :)
а аналог getgroups найдем...

-- 
Best Regards, Konstantin Klimchev 
(mailto:[EMAIL PROTECTED]jabber:[EMAIL PROTECTED])
ATK-Internet ISP, Arkhangelsk, Russia



Re: пакет mon

2004-11-16 Пенетрантность Иван Лох
On Tue, Nov 16, 2004 at 04:43:40PM +0300, Konstantin Klimchev wrote:
 On Tue, 16 Nov 2004 16:31:37 +0300
 Yuri Kozlov [EMAIL PROTECTED] wrote:
 
  В общем я тоже не фанат перла (да и аналога getgroups я у
  него сразу не нашёл),но можно немножно поправить скриптик
 огромное мерси... :)
 а аналог getgroups найдем...
 
use POSIX; 
@groups=POSIX::getgroups()

;-

-- 
Иван Лох



Re: пакет mon

2004-11-16 Пенетрантность Konstantin Klimchev
On Tue, 16 Nov 2004 17:03:50 +0300
Иван Лох [EMAIL PROTECTED] wrote:

 use POSIX; 
 @groups=POSIX::getgroups()
 
 ;-

ну вот. Я в сомнениях. 
То ли init-скипт  менять, то ли права на /dev/ttyUSB0

-- 
Best Regards, Konstantin Klimchev 
(mailto:[EMAIL PROTECTED]jabber:[EMAIL PROTECTED])
ATK-Internet ISP, Arkhangelsk, Russia



Re: пакет mon

2004-11-16 Пенетрантность Sergey V. Burchu
Tue, Nov 16, 2004 at 03:38:02PM +0300, Вы(Konstantin Klimchev) написали:
 Сам с собой общаюсь. Похоже на обострение...
 
 Корни проблемы в том, что необходимо отправлять sms при
 каких-либо (заранее описаных) проблемах.
 
 Имеем /dev/ttyUSB0 
 c правами root:dialout
 и доступом crw-rw
 
 Проблему, описанныю в первом посте обошел следующим образом:
 Владельцем /dev/ttyUSB0 сделал пользователя daemon.
 
 А теперь - на сколько это правильно, если это не красиво,
 как сделать красиво: 
 - править init-скрипт, 
 - менять права на /dev/ttyUSB0
 - запускать от root (но это делать не буду точно)
 - ...

Как-то раз пришлось решать такую проблему(тож sms).  Правили init
скрипт. Он в аттаче. Кажется рабочий даже. А вообще mon та еще
штучка..

-- 
Burchu Sergey.
#!/bin/sh -e

# $Id: init,v 1.7 2001/09/14 02:18:25 roderick Exp $

# These specify the user and group that mon runs as.  You can use group
# daemon instead of group shadow if you want to limit its permissions,
# but then it won't be able to authenticate users against the shadow
# password file.

user=daemon
group='shadow dialout'

# Don't let group shadow write to my files.

umask 22

# This specifies mon's configuration file.  If this file name ends with
# .m4 it's preprocssed with m4.  The shell code after the assignment
# causes this script to use a .m4 version if it exists.

cfg=/etc/mon/mon.cf
[ -f $cfg.m4 ]  cfg=$cfg.m4

# These are the args which are passed to mon.  -f tells it to fork and
# run as a daemon, -c just makes use of the config file setting from
# above (notably, so that a .m4 version is picked up).

args=-f -c $cfg

# You're less likely to need to change any of the others.

script=`basename $0`
daemon=/usr/sbin/mon
pid=/var/run/mon/mon.pid
desc='monitor daemon'
name=mon

# Add system dirs for start-stop-daemon.
PATH=$PATH:/sbin:/usr/sbin

[ -f $daemon -a -f $cfg ] || exit 0

# Don't bother if the user hasn't configured the package, there is no
# default configuration but there is a default config file (which just
# contains comments).

egrep -v '^[]*$|^#' $cfg /dev/null || exit 0

warn() {
echo $script: $@ 2
}

die() {
warn $@
exit 1
}

usage() {
[ $# = 0 ] || warn $@
warn usage: \`$script action'
warn valid actions: start stop restart reload force-reload
exit 1
}

# I originally used su to start the daemon as user daemon, but ran into
# trouble with the differing requirements of su and secure-su.  The GNU
# getopt's troublsome behavior of looking for switches anywhere on the
# command line requires that one use -- if one wants to pass switches
# to the shell, but secure-su doesn't allow the --.  One could set
# POSIXLY_CORRECT to prevent this poor getopt_long() behavior, but then
# the sub-command would have that in its environment.  In disgust I
# gave up and switched to using Perl.

daemon_run() {
perl -we '
$user = shift;
$group = shift;
if ($group =~ /\s+/)
{
foreach $a (split(/\s+/, $group))
{
defined($gid = getgrnam $a)
  or die Cannot find gid for group $a\n;
if (!defined $fgid) {
$fgid = $gid;
}
$tmp .= $gid ;
}
chop($tmp);
}
else {
defined($fgid = getgrnam $group)
  or die Cannot find gid for group $group\n;
$tmp = $fgid $fgid;
}
$) = $tmp; 
$( = $fgid;
#   if ($( ne $gid $gid || $) ne $gid $gid) {
if ($( ne $tmp || $) ne $tmp) { 
die Error setting group ids, real/effective is now $(/$)\n;
}
defined($uid = getpwnam $user)
or die Cannot find uid for user $user\n;
$ = $uid;
$ = $uid;
if ($ != $uid || $ != $uid) {
die Error setting user ids, real/effective is now $/$\n;
}
exec @ARGV or die Error running $ARGV[0]: $!\n;
' $user $group $@ ||
die return $? setting ids and running: $@
}

[ $# = 1 ] || usage wrong number of args (got $# expected 1), args are: $@

action=$1
set -- --pidfile $pid --startas $daemon -- $args

stop_mon() {
running_mon_pid=`cat $pid 2/dev/null` || true
daemon_is_running() {
[ -f $pid -a /proc/$running_mon_pid/exe -ef /usr/bin/perl ]
}

start-stop-daemon --stop --oknodo $@
daemon_is_running || return 0
sleep 1
daemon_is_running || return 0

# Wait for the daemon to exit before continuing, so that a subsequent
# start doesn't fail if it happens too soon.

echo -n  [waiting for mon (pid $running_mon_pid) to exit...
n=0
while daemon_is_running
do
n=`expr $n + 1`
[ $n = 60 ]  die giving up, mon still hasn't exited
echo -n .
sleep 1
done
echo -n ]
}

case x-$action in
x-start)
echo -n Starting $desc: $name
daemon_run start-stop-daemon --pidfile $pid --start $@