我想将员工对用户帐户的访问限制在每天的工作时间内。
周一至周五(8:00-17:00)
周六(8:00-13:00)
这个怎么做?!
命令行和 GUI 应用程序受到广泛欢迎
答案1
这是我在评论中链接的原始脚本的改进版本。此脚本使用 ubuntu 附带的所有工具,即at
(用于任务调度)、,date
因此gnome-session-quit
无需额外安装软件。可以从文件~/.config/autostart
或/etc/xdg/autostart
在文件中调用此脚本.desktop
。
date
将确定当前小时数以及星期几(数字)。然后,case 结构决定将哪个参数提供给logthemout
函数;该参数是当天的下班时间。对于周一至周五,该参数是 17:00,对于周六,该参数是 13:00。logthemout 函数将依次检查当前时间是否在工作时间范围内(if 语句带有逻辑“或”)。如果是,用户将收到适当的通知,告知他们将在特定时间注销。如果工作时间不在该范围内,用户将被注销。从技术上讲,发生的事情是用户登录,但脚本立即将其注销。此脚本的缺点是脚本依赖于系统时间。如果用户有能力改变系统时间,他们就有能力绕过脚本。否则,这应该有效。
#!/bin/bash
set -x
HOUR=$(date +%H)
DAYOFWEEK=$(date +%u)
function logthemout
{
if [[ $HOUR -gt $1 || $HOUR -lt 8 ]]; then
gnome-session-quit --no-prompt
else
notify-send "AUTO-LOGOUT AT $1 pm"
echo "gnome-session-quit --no-prompt" | at $1:00
fi
}
case $DAYOFWEEK in
1|2|3|4|5) logthemout 17;;
6) logthemout 13;;
7) gnome-session-quit --no-prompt ;;
esac
澄清:
通常如果你想在 GUI 登录上运行某些操作,您必须创建类似的内容/home/username/.config/autostart/mystartup-prog.desktop
,其格式应类似于:
[Desktop Entry]
Type=Application
Name=<Name of application as displayed>
Exec=<command to execute>
Icon=<full path to icon>
Comment=<optinal comments>
X-GNOME-Autostart-enabled=true
如果您有很多工人,这可能会效率低下,所以更好的方法是在其中有一个这样的条目/etc/xdg/autostart/mystartup-prog.desktop
。
答案2
由于您是经验丰富的用户,我建议您使用pam_时间:
pam_time PAM 模块不会对用户进行身份验证,而是限制在一天中的不同时间、特定日期或通过各种终端线路对系统和/或特定应用程序的访问。可以配置此模块以根据用户的姓名、一天中的时间、星期几、他们申请的服务以及他们发出请求的终端来拒绝(个人)用户的访问。
答案3
我认为 TimeKpr 可以胜任。以下是链接https://launchpad.net/timekpr