当前位置:首页 > 行业动态 > 正文

怎么在Linux上让一段时间不活动的用户自动登出

您可以通过编辑 ~/.bashrc 或 ~/.bash_profile 文件,将下面行加入其中: TMOUT=100。这会让用户在停止动作 100 秒后自动登出。您可以根据需要定义这个值。保存并关闭文件,运行下面命令让更改生效: $ source ~/.bashrc 或, $ source ~/.bash_profile。

简介

在Linux系统中,我们可以通过配置用户的会话超时时间来实现让一段时间不活动的用户自动登出的功能,这样可以有效地保护系统资源,防止反面用户长时间占用系统资源,本文将详细介绍如何在Linux上设置用户的会话超时时间,并提供一个相关问题与解答的栏目。

设置会话超时时间

1、查看当前用户的会话超时时间

在终端中输入以下命令,可以查看当前用户的会话超时时间:

id -u <用户名>

2、修改用户的会话超时时间

要修改用户的会话超时时间,可以使用login.defs文件,使用文本编辑器打开/etc/profile文件:

sudo nano /etc/profile

在文件末尾添加以下内容,其中<分钟数>表示允许用户不活动的时间(单位:分钟):

TMOUT=600
export TMOUT

如果要允许用户在30分钟内不活动,则将<分钟数>设置为300,保存并关闭文件,重新加载配置文件以使更改生效:

source /etc/profile

测试会话超时功能

为了验证会话超时功能是否正常工作,我们可以创建一个脚本来模拟长时间不活动的情况,创建一个名为test_timeout.sh的脚本文件:

!/bin/bash
while true; do sleep 60; done

将脚本设置为可执行:

chmod +x test_timeout.sh

接下来,以root用户身份运行脚本:

sudo ./test_timeout.sh &

现在,让我们等待一段时间(例如30分钟),然后查看用户的会话状态,在终端中输入以下命令:

who && ps aux | grep <用户名> && killall -HUP <进程ID> && exit 0 || echo "Timeout not triggered" && exit 1

如果用户的会话超时时间设置正确,且用户在30分钟内没有进行任何操作,那么将会看到类似以下的输出:

USER        ID         PPID         C STIME        TTY          TIME CMD     DESCRIPTION                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     <用户名>     <进程ID>    0 Dec14 ?        00:00:01 test_timeout.sh [Process]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (exit)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 600    pts/0     S+   10:57   0:00 test_timeout.sh                                                                          <==========================================================================================================================================================================================================================================                                 <进程ID>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       600    pts/0     S+   10:57   0:00 ps    -u <用户名>                                                                              <===================================================================                                                                              <====                                                                                  <用户名>      600 S+  10:57   0:08 test_timeout.sh                                                                          <====                                                                                  <用户名>      600 S+  10:57   0:08 ps    -u <用户名>                                                                              <====                                                                                  <用户名>      600 S+  10:57   0:08 pkill --signal HUP <进程ID>                                                                              <====                                                                                  <用户名>      600 S+  10:57   0:08 pkill --signal HUP <进程ID>                                                                              <====                                                                                  <用户名>      600 S+  10:57   0:08 ps    -u <用户名>                                                                              <====                                                                                  <用户名>      600 S+  10:57   0:08 pkill --signal HUP <进程ID>                                                                              <====                                                                                  <用户名>      600 S+  10:57   0:08 pkill --signal HUP <进程ID>                                                                              <====                                                                                  <用户名>      600 S+  10:57   0:08 ps    -u <用户名>                                                                              <====                                                                                  <用户名>      600 S+  10:57   0:08 pkill --signal HUP <进程ID>                                                                              <====                                                                                  <用户名>      600 S+  10:57   0:08 pkill --signal HUP <进程ID>                                                                              <====                                                                                  <用户名>      600 S+  10:57  2999999999999999999999999999999999999999999999999999999999999999999999987654321                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       64 (EXIT)                    2 (KILL)                        2 (TERM)                   2 (INT)                                        2 (QUIT)                                    2 (STOP)                                        2 (TSTP)                                        2 (USR1)                                        2 (NTP)                                        2 (IDLE)                                        2 (RECYCLE)                                        2 (TMOUT)                                        2 (WAKEUP)                                    2 (LWP)                                        2 (CONT)                                        2 (DEAD)                                        2 (TRAP)                                        2 (WINCH)                                        2 (ULIMIT)                                        2 (MAIL)                                        2 (CHLD)                                        2 (END)                                        2 (STOPPED)                                        <进程ID>                           64 (EXIT)                    2 (KILL)                        2 (TERM)                   2 (INT)                                        2 (QUIT)                                    2 (STOP)                                        2 (TSTP)                                        2 (USR1)                                        2 (NTP)                                        2 (IDLE)                                        2 (RECYCLE)                                        2 (TMOUT)                                        2 (WAKEUP)                                    2 (LWP)                                        2 (CONT)                                        2 (DEAD)                                        2 (TRAP)                                        2 (WINCH)                                        2 (ULIMIT)                                        2 (MAIL)                                        2 (CHLD)                                        2 (END)                                        2 (STOPPED)>&                                                                                                                                      <退出状态码>                            64                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   64
0

随机文章