만료된 사용자 계정의 화면 잠금 우회 문제 수정

만료된 사용자 계정의 화면 잠금 우회 문제 수정

나는 Salt를 통해 내 아이들의 컴퓨터에 배포할 스크립트를 만들었습니다. 스크립트는 허용된 근무 시간을 구현하고 제대로 작동하지만 제 자녀 중 한 명이 이 문제를 해결할 수 있는 방법을 찾았는데 해결 방법을 모르겠습니다.

나는 timekpr을 사용해왔지만 중앙에서 제어할 수 있는 것을 찾고 있습니다. 나는 또한 timekpr이 잠겨 있는 동안 실행 중인 작업을 계속하는 것을 방지한다는 것을 발견했습니다.

아이들의 컴퓨터는 비밀번호 없는 로그인을 위해 완전히 패치된 Xubuntu 15.04를 실행하고 있습니다(비밀번호가 있지만 알 필요는 없습니다).

스크립트가 세션을 잠그기 전에 프로그램 메뉴에서 자물쇠를 클릭하여 수동으로 화면을 잠그면 사용자 계정이 만료된 상태라도 세션을 잠금 해제할 수 있습니다. 예상되는 동작이 복원되기 전에 이 작업은 한 번만 수행할 수 있습니다.

이것은 내 스크립트입니다.

#!/bin/bash

users[0]='child1'
users[1]='child2'
users[2]='child3'

lock[0]=1930
lock[1]=1930
lock[2]=1930

unlock[0]=1300
unlock[1]=1300
unlock[2]=1300

# clean up at AT jobs that may already exist
for i in `atq | cut -f1`;
do
    if at -c $i | grep -q '^/root/userRestrictions.sh$'
    then
        atrm $i
    fi
done

currTime=`date +%k%M`

for i in {0..2}
do
    if id -u "${users[i]}" >/dev/null 2>&1; then
        # username exists
        if [ "$currTime" -ge ${unlock[i]} ] && [ "$currTime" -lt ${lock[i]} ]; then 
            # current time is between unlock and lock time

            # unlock the users account
            /usr/bin/chage -E -1 ${users[i]}

            # run this script again at the lock time
            atHour=$(( ${lock[i]} / 100 ))
            # extract minutes and pad with zeros
            atMinute=$(( ${lock[i]} % 100 ))
            atMinute=`printf %02d $atMinute`
            echo "/root/userRestrictions.sh" | at "$atHour:$atMinute"

        else
            # current time is after lock time or before unlock time

            # lock the users account
            /usr/bin/chage -E 0 ${users[i]}

            # lock screen if the user is logged in at all
            if w | cut -d " " -f1 | grep -Fxq "${users[i]}"
            then
                XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0 dm-tool lock
            fi

            # run this script again at the unlock time
            atHour=$(( ${unlock[i]} / 100 ))
            # extract minutes and pad with zeros
            atMinute=$(( ${unlock[i]} % 100))
            atMinute=`printf %02d $atMinute`
            echo "/root/userRestrictions.sh" | at "$atHour:$atMinute"
        fi
    fi
done

관련 정보