期限切れのユーザーアカウントの画面ロックバイパスの問題を修正

期限切れのユーザーアカウントの画面ロックバイパスの問題を修正

私はSaltを通して私の子供のコンピュータに配布するスクリプトを作成しました。スクリプトは許可された勤務時間を実装して正常に動作しますが、私の子供の1人がこの問題を解決する方法を見つけましたが、解決策がわかりません。

私は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

関連情報