限制允许用户登录的时间


9

我们有几个基于Ubuntu 12.04构建的Backbox 3.13系统。我的一个青少年不了解这种叫做“睡眠”的东西的概念,并且倾向于在计算机上玩。我试图限制该动作。我们确实尝试了保姆工作了几天。然后,即使设置仍然存在,它仍然允许所说的青少年访问其用户帐户和Internet。

经过研究,我决定尝试进行修改/etc/security/time.conf。显然,我没有正确执行此操作,因为无论我对文件输入了哪些命令,我​​们仍然可以登录到她的用户帐户。我们不希望她在晚上9点到凌晨6点之间可以访问。我们仍然需要我始终可以访问计算机。这是我尝试过的几种语法:

1. login;*;username;A12100-0600
2. login;*;username;!A12100-0600
3. login;*;username;!A12100-0600
   login;*;my username;A10000-2400
4. login;*;!username;A12100-0600

我在这里试图弄清楚如何做到这一点。我敢肯定,这很简单,我很想念,或者我输入不正确。任何援助将不胜感激。


1
尝试login;*;daughter;A10600-2100。那应该只允许在6 AM到9 PM之间登录。如果那不起作用,那么也许*;*;daughter;A10600-2100。如果可行,您还希望有一份cron工作在晚上9点终止您女儿的课程,因为这只会阻止新课程的开始。还有一些细节在这里
沃里克

不幸的是,这没有用。我尝试登录; *;女儿; A10600-1900测试解决方案无济于事。我也试过 ; 女儿A10600-1900没有阳性结果。这应该可以,但是不能。是因为Unity系统吗?
2014年

2
您配置pam使用了pam_time吗?如果没有,你需要account required pam_time.so在这两个/etc/pam.d/gdm/etc/pam.d/login刚刚下面的auth条目。
沃里克

我将这些行添加到/ gdm和/ login文件中,然后将信息重新输入到配置文件中。我们仍然没有为此感到高兴。我现在正在Google搜索,以确保将行输入到/ gdm文件上的正确位置。
2014年

根据ask.fedoraproject.org/en/question/7260/…的说法(很长的URL),我应该通过输入新行来终止命令。我用#号注释掉该行,对吗?它还说,所需的帐户pam_time.so放在/ gdm文件的末尾。我肯定知道一件事。一旦解决了这个问题,我就不会再忘记这么快了!
2014年

Answers:


1

1.编辑/etc/pam.d/common-auth并添加以下行: account required pam_time.so

2.编辑/etc/security/time.conf并添加限制: *;*;username;Al0800-2200

该示例确实允许每天上午8点至晚上10点之间全天使用支持pam的软件登录。


0

您是在这里做,还是在使用Ls而不是Ls?

时间限制应显示为“大写A,小L ”,然后是时间...


嗨,Nigge。我已经尝试了两种方式,因为我看到了同时显示Al和A1的文档。两种方法均无效。我花了点时间试图找出原因。
user81117 2014年

抱歉,这不是造成您问题的原因。还要检查另一件事,以确保:您的系统是否使用其他DM?查看/ etc / X11 / default-display-manager ...
1

系统正在使用Light DM。我认为在安装GDM时,我将其设置为Light DM。
2014年

0

以下对我有用的作品:

*;*;child1|child2|child3;Wk0445-1958|Sa0445-2300|Su0445-1958

以下行/etc/pam.d/common-account可能是我添加或未注释的内容。

account required  pam_time.so

我还有一个cron作业,该作业在8:00 PM检查是否有一个孩子已登录,如果有,则将其注销...实际注销他们的部分如下:

echo 'logging off - Following children are still logged in...'
for n in $active_children ; do echo "  " $n ; done
festival --tts <<EOT
Is is bedtime. Good bye and good night.
EOT
for n in $active_children
do
    killall -HUP -u $n
done
sleep 15
for n in $active_children
do
    killall      -u $n
done
echo "[`date`] - done"

0

一种更通用的方法是使用cron锁定和解锁帐户。这消除了窗口管理器的特定要求以及与之相关的任何变量。这仅适用于独立计算机,不适用于连接到中央身份验证服务器的台式机/笔记本电脑/平板电脑。

0 21 * * * /usr/bin/passwd -l childsUserName 0 6 * * * /usr/bin/passwd -u childsUserName'

注意:您可能需要为“ passwd”命令调整路径。用“哪个”确定正确的路径。

在我的CentOS 6机器上:

which passwd

/usr/bin/passwd


我认为这行不通。如果未针对本地密码数据库(/etc/shadow)执行验证,该怎么办?passwd -l在这种情况下甚至可能什么都不做。如果机器关闭或cron作业由于其他原因而无法运行怎么办?然后,该帐户可能处于不需要的状态。
jayhendren 2015年

我不知道任何不对本地密码数据库进行身份验证的UNIX或Linux系统,除非它已连接到中央身份验证服务器。
Ragansi

我先前的评论过早地被删掉了。没意识到点击进入就发表了评论。无论如何。如果机器关闭,则cron肯定会使系统处于不良状态。您可以使用cron调用一个检查时间的小脚本,然后相应地锁定或解锁。每5分钟运行一次,甚至在cron中运行@reboot。
Ragansi'2

“除非已连接到中央身份验证服务器”。这就是我的意思。
jayhendren 2015年

在这种情况下,您的中央身份验证服务器将(或应该...)具有执行上述锁定功能的功能。在那种情况下,除非(超出范围)配置了某些内容(打算使用中央身份验证),否则您将不需要(也不需要)在本地计算机上执行用户帐户锁定。
拉甘西(Ragansi)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.