The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Samba, вопросы интеграции Unix и Windows (Учет работы пользователей, логи)
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Когда выполняются скрипты root preexec и root postexec?, DRVTiny (ok), 21-Сен-06, (0) [смотреть все]

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


1. "Когда выполняются скрипты root preexec и root postexec?"  +/
Сообщение от EnPCT (?), 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?"  +/
Сообщение от DRVTinyemail (ok), 27-Сен-06, 09:23 
>Как зделать веник при помощи сапога?
>Ну-ка быстро скажите мне сколько будет трисвиньивквадратеминусовца.
>Почему вы не хотите потратить пол-часа на разбор того-то, что бы ответить
>"почему"?

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

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

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

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

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

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

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

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

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

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

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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