The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Когда выполняются скрипты root preexec и root postexec?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Samba, вопросы интеграции Unix и Windows (Public)
Изначальное сообщение [Проследить за развитием треда]

"Когда выполняются скрипты root preexec и root postexec?"  
Сообщение от DRVTiny email(ok) on 21-Сен-06, 18:31 
Написал скрипт, который должен при вхолде пользователя в домен писать пару вида ПОЛЬЗОВАТЕЛЬ@ХОСТ в файл /var/log/samba/WhoIsIn, а при выходе - удалять её оттуда или же удалять сам файл. Параллельно пишется небольшой лог.
Теперь вижу следующую картину:
При входе пользователя в логе появляется 3-4 записи о входе (столько раз запускался скрипт), при выходе и, к сожалению, даже не только при выходе - ещё 3-4 записи о выходе в этот же лог пишутся.
Вопрос: почему скрипт root preexec/postexec запускается, мягко говоря, слишком часто?
Собственно скрипт приводится ниже (вызывается по имени hndlDomainUserEnter для preexec и hndlDomainUserOut для postexec, с hndlDomainUserEnter на hndlDomainUserOut создана симв. ссылка)
----------
#!/bin/bash
slf="${0##*/hndlDomainUser}"
. /etc/sysconfig/functions/cmn
. /etc/sysconfig/functions/rxdef
echo "Event: $slf Who: $@" >> /var/log/samba/dummylog
rxIP="$rxIP_ADDR"
rxmIP=
rxHOST='[A-Z][A-Z0-9_-]*[A-Z0-9]'
rxmHOST='I'
rxUSR='([A-Z]+|[A-Z]{,2}[a-z]+)[0-9]*'
rxmUSR=
while [ $# -ne 0 ]; do
key="$1"; shift
[ $# -gt 0 ] || exit 1
case "$key" in
i|-i|--ip-addr)   id=IP ;;
u|-u|--user-name) id=USR ;;
h|-h|--host)      id=HOST ;;
esac
set_aliases "$id" rx rxm flAlreadyUsed
chk_fl $flAlreadyUsed && exit 1
[ "`echo \"$1\" | eval \"sed -nr 's%^${!rx}$%MATCH%p${!rxm}'\"`" = "MATCH" ] || exit 1
eval val${id}=\"$1\"; shift
done
fileWhoIsIn="/var/log/samba/WhoIsIn"
#[ -w "$fileWhoIsIn" ] || exit 1
case "$slf" in
Enter)
  if [ -f "$fileWhoIsIn" ] ; then
   grep -qE "^${valUSR}@${valHOST}$" $fileWhoIsIn && exit 1
   echo "$valUSR@$valHOST" >> $fileWhoIsIn
  else
   cat >"$fileWhoIsIn" <<-EOF
# List of users, who has entered the samba domain
# File format: <start of string>USERNAME@HOST<end of string>
# See description of parameters prerootexec and postrootexec in man smb.conf
# This file was created by script $0
$valUSR@$valHOST
EOF
  fi
;;
Out)
  grep -qE "^${valUSR}@${valHOST}$" "$fileWhoIsIn" || exit 1
  fileTMP="`mktemp`"
  if [ -z "`grep -vP \"^(\s*(#.*)?|${valUSR}@${valHOST})$\" \"$fileWhoIsIn\"`" ]; then
   rm -f "$fileWhoIsIn"
  else
   grep -vE "^${valUSR}@${valHOST}$" "$fileWhoIsIn" > "$fileTMP"
   mv -f "$fileTMP" "$fileWhoIsIn"
  fi
;;
*)
  exit 1
;;
esac
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Когда выполняются скрипты root preexec и root postexec?"  
Сообщение от EnPCT on 27-Сен-06, 04:09 
>Написал скрипт, который должен при вхолде пользователя в домен писать пару вида
>ПОЛЬЗОВАТЕЛЬ@ХОСТ в файл /var/log/samba/WhoIsIn, а при выходе - удалять её оттуда
>или же удалять сам файл. Параллельно пишется небольшой лог.
>Теперь вижу следующую картину:
>При входе пользователя в логе появляется 3-4 записи о входе (столько раз
>запускался скрипт), при выходе и, к сожалению, даже не только при
>выходе - ещё 3-4 записи о выходе в этот же лог
>пишутся.
>Вопрос: почему скрипт root preexec/postexec запускается, мягко говоря, слишком часто?
>Собственно скрипт приводится ниже (вызывается по имени hndlDomainUserEnter для preexec и hndlDomainUserOut
>для postexec, с hndlDomainUserEnter на hndlDomainUserOut создана симв. ссылка)
>----------
>#!/bin/bash
>slf="${0##*/hndlDomainUser}"
>. /etc/sysconfig/functions/cmn
>. /etc/sysconfig/functions/rxdef
>echo "Event: $slf Who: $@" >> /var/log/samba/dummylog
>rxIP="$rxIP_ADDR"
>rxmIP=
>rxHOST='[A-Z][A-Z0-9_-]*[A-Z0-9]'
>rxmHOST='I'
>rxUSR='([A-Z]+|[A-Z]{,2}[a-z]+)[0-9]*'
>rxmUSR=
>while [ $# -ne 0 ]; do
> key="$1"; shift
> [ $# -gt 0 ] || exit 1
> case "$key" in
> i|-i|--ip-addr)   id=IP ;;
> u|-u|--user-name) id=USR ;;
> h|-h|--host)      id=HOST ;;
> esac
> set_aliases "$id" rx rxm flAlreadyUsed
> chk_fl $flAlreadyUsed && exit 1
> [ "`echo \"$1\" | eval \"sed -nr 's%^${!rx}$%MATCH%p${!rxm}'\"`" = "MATCH" ]
>|| exit 1
> eval val${id}=\"$1\"; shift
>done
>fileWhoIsIn="/var/log/samba/WhoIsIn"
>#[ -w "$fileWhoIsIn" ] || exit 1
>case "$slf" in
> Enter)
>  if [ -f "$fileWhoIsIn" ] ; then
>   grep -qE "^${valUSR}@${valHOST}$" $fileWhoIsIn && exit 1
>   echo "$valUSR@$valHOST" >> $fileWhoIsIn
>  else
>   cat >"$fileWhoIsIn" <<-EOF
># List of users, who has entered the samba domain
># File format: <start of string>USERNAME@HOST<end of string>
># See description of parameters prerootexec and postrootexec in man smb.conf
># This file was created by script $0
>$valUSR@$valHOST
>EOF
>  fi
> ;;
> Out)
>  grep -qE "^${valUSR}@${valHOST}$" "$fileWhoIsIn" || exit 1
>  fileTMP="`mktemp`"
>  if [ -z "`grep -vP \"^(\s*(#.*)?|${valUSR}@${valHOST})$\" \"$fileWhoIsIn\"`" ]; then
>   rm -f "$fileWhoIsIn"
>  else
>   grep -vE "^${valUSR}@${valHOST}$" "$fileWhoIsIn" > "$fileTMP"
>   mv -f "$fileTMP" "$fileWhoIsIn"
>  fi
> ;;
> *)
>  exit 1
> ;;
>esac

Как зделать веник при помощи сапога?
Ну-ка быстро скажите мне сколько будет трисвиньивквадратеминусовца.
Почему вы не хотите потратить пол-часа на разбор того-то, что бы ответить "почему"?

--
Хороший проктолог сразу скажет, откуда руки растут.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Когда выполняются скрипты root preexec и root postexec?"  
Сообщение от DRVTiny email(ok) on 27-Сен-06, 09:23 
>Как зделать веник при помощи сапога?
>Ну-ка быстро скажите мне сколько будет трисвиньивквадратеминусовца.
>Почему вы не хотите потратить пол-часа на разбор того-то, что бы ответить
>"почему"?

Потому что на этот вопрос НЕТ простого ответа, да и сложного, похоже, тоже нет. Потому что Samba сделана, извиняюсь, через Ж... и не позволяет назначить обработчик для элементарного события выхода пользователя из сеанса (обработчик на вход поставить нетрудно). Я не знаю, возможно, это проблема протокола SMB в целом (сомнительно), но тем не менее факт остаётся фактом: отследить выход из сеанса невозможно в принципе, в лучшем случае можно периодически проверять, не вышел ли уже пользователь, зарегистрировавшийся с такого-то хоста.
Вообще по всем признакам я - единственный человек во всём рунете, который в данный вопрос пытался глубоко вникать. Так что лдействительно, какой смысл спрашивать что-то у людей, знающих меньше тебя самого, которым кроме пива и дум3 ничего не интересно, ничего не нужно.

P.S. Тем, кто всё-таки заинтересуется данной проблемой и столкнётся с полным равнодушием местных "кул хацкеров" (не знающих ничего, кроме своих любимых апачей, впн'ов, роутеров и т.д.), советую просмотреть следующий топик: http://www.linux.org.ru/jump-message.jsp?msgid=1587213&lastmod=1159333444000

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Когда выполняются скрипты root preexec и root postexec?"  
Сообщение от Алексей Тамаревский email on 10-Окт-06, 14:17 
Когда мне это надо было сделать (год назад), я написал малюююсенький скрипт, который использовал возможности preexec. И все ;)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Когда выполняются скрипты root preexec и root postexec?"  
Сообщение от DRVTiny email(ok) on 14-Окт-06, 10:41 
>Когда мне это надо было сделать (год назад), я написал малюююсенький скрипт,
>который использовал возможности preexec. И все ;)

Да ну! Похоже, Вы просто гениальны, потому что даже собственно разработчики Samba не знают, как стандартными средствами самой Samb'ы отследить выход пользователя из сеанса на стороне сервера. Или мы с Вами о разных вещах говорим.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Когда выполняются скрипты root preexec и root postexec?"  
Сообщение от ZM_Michael (ok) on 23-Окт-06, 22:02 
а smbstatus -p не отображает случаем содержимое вашего файла ?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Когда выполняются скрипты root preexec и root postexec?"  
Сообщение от DRVTiny email(ok) on 24-Окт-06, 17:51 
>а smbstatus -p не отображает случаем содержимое вашего файла ?
Отображает. Файл мне нужен просто для отладки, конечная цель - давать компьютерам домена доступ в инет при заходе пользователя с доменной учётной записью (возможно, с проверкой по спискам контроля доступа) и отключение инета при выходе. Первая часть  (разблокирование IP) реализуется абсолютно элементарно, а вот со второй часть серьёзные проблемы. Нужно писать что-то вроде клиент-серверного приложения на Perl, клиентская часть которого выполняется на рабочей станции, запускаясь как logoff-скрипт, а серверная - на контроллере домена. Конечно, можно извращаться с net use в logoff-скрипте и установкой обработчика preexec на специальную шару для логофа, но это будет уже просто клинический случай, поскольку сделать так, чтобы эта шара подключалась ТОЛЬКО при выходе пользователя и отключалась ТОЛЬКО при входе (другого пользователя или повторном входе того, который до этого вышел), практически нереально.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру