LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2555|回复: 11

怎样控制登录和上网时间?

[复制链接]
发表于 2009-9-10 21:06:36 | 显示全部楼层 |阅读模式
我使用debian lenny,给儿子建了个普通用户,可以上网。
我想建立个脚本,控制他每天的开机和上网时间,比如,
周末开机2小时,上网1小时,平时开机半小时,超出时间后系统给出提示信息,断开网络或者延时10分钟后自动关机。

哪位高手能给个提示?最好能有个脚本
发表于 2009-9-10 23:49:24 | 显示全部楼层
两小时后关机?
rc.local 里面调用一个后台脚本,脚本里面直接shutdown -h +120 就可以了吧。
回复 支持 反对

使用道具 举报

发表于 2009-9-11 00:10:29 | 显示全部楼层
Post by poet;2025820
两小时后关机?
rc.local 里面调用一个后台脚本,脚本里面直接shutdown -h +120 就可以了吧。

没用吧,你 shutdown,人家再开就是了
回复 支持 反对

使用道具 举报

发表于 2009-9-11 00:29:40 | 显示全部楼层
思路1:写脚本分析 auth.log,由 cron 定期执行

思路2:写简单语句如 date >> xxxx.log 放入 ~/.bashrc 及 ~/.bash_logout 以记录使用时间,另写脚本进行分析由 cron 定期执行

问题1:如果直接拔掉电源,logout 时间就会缺失,从而无法控制
解决方案:在电脑电源部分做物理访问保护 (扔鸡蛋)

问题2:开机后物理破坏电脑,logout 时间就会缺失,从而无法控制
解决方案:对电脑整机(开机按钮除外)做物理访问保护 (扔西红柿)

备注:问题1及问题2引发的后果只会使控制更严格而不是宽松,所以可以忽略
回复 支持 反对

使用道具 举报

发表于 2009-9-11 12:57:01 | 显示全部楼层
使用cron, 每天0点开始解禁你儿子的帐户.
这个可以用usermod -s /bin/bash 实现.

系统开机后, 以root身份启动一个脚本, 检查你儿子是否已经登陆(可以用who检查). 如果登陆, 累积时间, 并写入一个记录文件. 然后休眠一分钟, 继续检查并记录. 如果发现你儿子登陆时间超时, 调用aplay播放你预先录好的一段话.. 然后kill掉所有你儿子所有的进程(可以用pgrp -u), 同时禁止你儿子登陆 (用usermod -s /bin/false)

直到第二天, cron解禁为止. cron解禁的同时也要清零时间记录文件.

这样应该可以满足要求..
只是希望你儿子张大后不要恨我, 呵呵
回复 支持 反对

使用道具 举报

发表于 2009-9-12 11:05:48 | 显示全部楼层
剑兄的方法是否系统要长开?起码截止与解禁期间都要着机?
回复 支持 反对

使用道具 举报

发表于 2009-9-12 11:27:12 | 显示全部楼层
Post by d00m3d;2026200
剑兄的方法是否系统要长开?起码截止与解禁期间都要着机?


问的好, 确实是一个漏洞

解决的方法不复杂, 关键是那个记录文件, 不光记录累积时间, 再加上日期.
每次开机时, 检查一下当前日期和记录文件里的日期, 如果不一致, 且dcron没在0点运行, 就解禁账户. 这可以解决 0 点机器没打开的情况.

随时关机也没关系, 因为累积时间没分钟记录一次, 下次开机接着计时.

其实.. Cron可以省去, 只要脚本写的够好, 开机后自动运行, 根据条件和日期判断解禁还是禁止
回复 支持 反对

使用道具 举报

发表于 2009-9-12 12:53:59 | 显示全部楼层
控制登录算是 审计 一类的功能。
http://packages.debian.org/sid/timeoutd 控制使用时间
http://packages.debian.org/sid/acct 配置后,可记录用户执行的命令
 http://packages.debian.org/sid/sac 类似 acct
控制网络使用算是 管理 一类的功能。
iptables 可以设置特定时间段启用网络,支持年月日星期。
squid 可以根据时间、用户限制网络使用。

PS:作为一懒人,要实现一个功能,首先要考虑是否有软件包提供解决方案,不合适 或 没有的情况下,才有必要自己动手。
另,千万别小瞧现在的小孩子,最好还是别用这样的强制方式,社交"攻击"应该更管用,也排除机器上一个安全隐患。
回复 支持 反对

使用道具 举报

发表于 2009-9-12 14:32:42 | 显示全部楼层
timeoutd是正解.
看来有空要要有熟悉一下所有Gentoo系/Debian系/的软件包, 至少直到它们的用途.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-18 17:28:11 | 显示全部楼层
谢谢各位的帮助!
等我写个脚本后再发上来,请大家指正
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表