Выполните корневую команду после того, как пользователь запустит сессию

Я не верю, что вы можете гнездиться командами с расширением брекетов. Похоже, что она способна содержать только буквы. Однако вы должны уметь использовать [11831]eval[11832], чтобы получить то, что вам нужно. [12181]Пример[12182]Если вы [11833]eval[11834] все же [11835]echo[11836]:[12183]Ваш пример[12184]показывает расширенную[12185]вашу измененную команду[12186]
2
07.07.2016, 16:00
2 ответа

Я нашел решение для создания скрипта, который сканирует на пользователей.

это мой /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)

.
1
27.01.2020, 22:22

Вас может заинтересовать 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

Я на самом деле не использовал это, но это может быть стоить изучения.

0
27.01.2020, 22:22

Теги

Похожие вопросы