Я нашел решение для создания скрипта, который сканирует на пользователей.
это мой /etc/rc.local скрипт:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/usr/bin/detect_login
exit 0
и это скрипт detect_login:
#!/usr/bin/python2.7
# -*- coding: utf-8 -*-
import os, time
Buffer_list=[]
while True:
users=os.popen('''who | cut -d' ' -f1 | sort | uniq''')
users=users.read()
Current_List=users.split('\n')
Current_List=filter(None,Current_List)
if Current_List:
if Current_List != Buffer_list:
if len(Current_List) > len(Buffer_list):
#HERE YOU ADD THE COMMANDS, inside the triple quotes.
# add each command in a new line
# i let you an example for turning the brightness down..
os.system('''/usr/bin/xdotool key XF86MonBrightnessDown''')
Buffer_list=Current_List
time.sleep(0.5)
Я советую запустить один раз скрипт как root, чтобы проверить, что он работает нормально, потому что если есть одна ошибка, то rc.local остановится. (Глупыми ошибками могут быть, например, пробелы с отступом, это часто случается при копировании питоновских скриптов с форумов stackexchange)
. Вас может заинтересовать pam_exec
. Я использую его для открытия дополнительных портов по адресам, которые успешно прошли аутентификацию по sshd
. Мой /etc/pam.d/sshd
имеет
account optional pam_exec.so /usr/local/bin/update-whitelist
и скрипт updateate-whitelist
выглядит как
#!/bin/sh
set -e
# Called from PAM when logging in via SSH.
# Adds current client to SSH whitelist.
WHITELIST=/proc/net/xt_recent/WHITELIST
test -n "$PAM_RHOST"
test -f "$WHITELIST"
# Handle PAM_RHOST as hostname or IPv4 dotted-quad
if echo "$PAM_RHOST" | /bin/grep -P -q '^\d+\.\d+\.\d+\.\d+$'
then echo "+$PAM_RHOST" >"$WHITELIST"
else /usr/bin/host "$PAM_RHOST" | /bin/sed -n -e 's/.* has address /+/p' >"$WHITELIST"
fi
(У меня есть iptables
правила, которые используют xt_recent
с WHITELIST
).
Также может представлять интерес libpam-script
, который может выполнить произвольную команду в рамках аутентификации или запуска сессии:
$ aptitude show libpam-script
Package: libpam-script
Version: 1.1.4-1
Priority: extra
Section: universe/admin
Description: PAM module which allows executing a script
This module will allow you to execute scripts during authorization, password
changes and sessions. This is very handy if your current security application
has no PAM support but is accessible with perl or other scripts.
Homepage: http://sourceforge.net/projects/pam-script
Я на самом деле не использовал это, но это может быть стоить изучения.