在 Linux 中如何在超时后自动注销用户

如果会话空闲一段时间,自动注销功能主要用于注销用户。
在本文中,我们将在 Linux 设置中为单个用户设置不同的超时值。

要仅禁用 root 用户,请在 /etc/profile.d 中创建一个 log-out.sh 脚本
(脚本名称任意,log-out.sh 只是一个演示脚本名称)

# touch /etc/profile.d/log-out.sh
# cd /etc/profile.d
# vi log-out.sh
 #!/bin/bash
 # Log out in 2 minutes if the session is idle
 export TMOUT=120
readonly TMOUT

这里我们将变量设置为只读。 如果在指定的秒数内没有活动(这里设置了 120 秒),TMOUT 变量将终止 shell。

注销并使用新会话登录以验证新配置

[root@localhost ~]# echo $TMOUT
120

所以上面的新值设置正确,等待 2 分钟后,shell 自动将root用户注销

[root@localhost ~]# timed out waiting for input: auto-logout
[jack@localhost ~]$

注意:上述值也可以直接添加到 /etc/profile 中,但不推荐。

如何为单个用户添加不同的自动注销时间值?

现在,我想 root 用户会话在 2 分钟后自动注销,而普通用户“jack”在空闲会话 1 分钟后注销。

为此,修改 log-out.sh 脚本,如下所示

#!/bin/bash
# 如果会话空闲,在 2 分钟后注销
if [ `id -nu` == "root" ];then
   export TMOUT=120
    readonly TMOUT
 elif [ `id -nu` == "jack" ];then
    export TMOUT=60
    readonly TMOUT
 fi

注销并重新登录以验证更改是否生效

[jack@localhost ~]$echo $TMOUT
 60
[jack@localhost ~]$su 
 Password:
 Last login: Sun Sep  3 16:51:40 IST 2015 on pts/1
 [root@localhost ~]# echo $TMOUT
 120
日期:2020-06-02 22:16:54 来源:oir作者:oir