LINUX.ORG.RU

logon/ Logout


0

0

Здравствуйте!
Подскажите, пожалуйста, как в Linux программным способом определить, что был выполнен Logon и Logout? Предполагается, что есть некоторый демон, который должен реагировать на данные события.
Спасибо!


Ответ на: комментарий от cvv

ещё кажись utempter какоето отношение имеет к этому делу

cvv ★★★★★
()
Ответ на: комментарий от pavelp

utempter к Login и к Logout, вроде бы, никакого отношения не имеет.

pavelp
() автор топика
Ответ на: комментарий от stassats

Переделать login и поставлять его вместе с моей программой?
Еще кто-нибудь знает какие возможности?

pavelp
() автор топика

Можно попробовать использовать возможности man wtmp (man utmp):

The utmp file allows one to discover information about who is currently using the system.

kondor ★★★
()
Ответ на: комментарий от pavelp

> но не отловить тот момент, когда произошло разлогирование или логирование.

Читать раз в секнду?

Ximen ★★★★
()

Написать свой модуль для pam, который будет посылать сообщения кому надо.

ero-sennin ★★
()
Ответ на: комментарий от pavelp

> он позволяет узнать, но не отловить тот момент, когда произошло разлогирование или логирование.

> Предполагается, что есть некоторый демон, который должен реагировать на данные события.

Ну так проверяй каждые, скажем, N минут после получения состояний: if (Billy.isLogged() && !prevState.isLogged(Billy)) -> Billy залогинился. Аналогично с logout.

Хотя, если есть стандартные средства, то мне было бы тоже интересно о них узнать, а не изобретать велосипед, как сделано это выше :).

kondor ★★★
()
Ответ на: комментарий от cvv

+1 к pam

Однако вот что: все равно при login выполняются скрипты, равно как и при logoff. Кто мешает их переписать так, чтобы оно хоть обоповещалось - непонятно.

annoynimous ★★★★★
()
Ответ на: комментарий от annoynimous

> при login выполняются скрипты

Наверное, автор вопроса был бы вам признателен ещё больше за ваш ответ, если бы вы указали конкретные скрипты.. я так думаю.

anonymous
()
Ответ на: комментарий от pavelp

>он позволяет узнать, но не отловить тот момент, когда произошло разлогирование или логирование.

Для этого есть knotify & inotify.

Sectoid ★★★★★
()

С ходу видно два способа:
1) следить за wtmp/lastlog при помощи *notify и анализировать все изменения
2) написать либу для pam и прописать ее в /etc/pam.d - самый универсальный метод

Deleted
()
Ответ на: комментарий от pavelp

Это системный вызов, позволяющий узнать о событии на файловой системе. http://linux.die.net/man/7/inotify и еще http://linux.die.net/man/2/fcntl.

Вам нужно определиться, каким образом нужно отслеживать login/logout --- "асинхронным" или "синхронным". В первом случае ваша программа определяет факт login'а, и производит нужные действи, но процесс login'а не останавливается. В этом случае нет особой разницы, следить за log-файлом через *notify или проверять его раз в секунду. Все равно нельзя четко сказть, когда ваша программа выполнит неободимые действия по отношению к моменту login'а.

Если же нужен "синхронный", то есть процесс login'а должен приостонавливаться, пока ваша программа не сделает нужные действия, то пишите модуль PAM...

mky ★★★★★
()
Ответ на: комментарий от pavelp

Правильно написанные приложения используют pam не только для login'а, но и для logout'а --- вызвываются функции pam_close_session() и pam_end().

Но PAM, действительно есть не везде. И приложение, через которое пользователь "заходит"/"выходит" (например, sshd) может быть скомпилированно без поддержки PAM, хотя это встречается не так часто.

Ваши слова :

>Переделать login и поставлять его вместе с моей программой?

намекают на многоплатформенность? Все таки напишите, какого рода программу вы хотите создать и на каких платформах (дистрибутивах) она должна работать.

mky ★★★★★
()
Ответ на: комментарий от mky

Пока это не приложение, а исследование. Ясно только, что при логине и логауте необходимо будет выполнять какие-то действия, но сути, по-моему, это не меняет. Ну, а раз исследование - необходимо охватить как можно больше систем.

pavelp
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.