如何在 Linux 中自动注销一段时间后的非活动用户

这个简短的教程解释了在 Linux 和类 Unix 系统中在特定时间段后自动注销非活动用户的三种不同方法。

想象一下这个场景。 您正在管理一个共享服务器,该服务器经常被网络中所有系统的许多用户访问。

有些用户可能会忘记注销他的会话并让会话保持打开状态。 让用户会话保持打开状态是危险的,一些用户可能会故意滥用它。

您是否会手动检查每个系统以验证用户是否已注销? 这不是必要的! 此外,如果您的网络中有数百台机器,这将是一项非常耗时的任务。

相反,您可以让用户在特定时间不活动后从本地或 SSH 会话中自动注销。

在 Linux 中自动注销非活动用户

我们可以通过三种方式在一定时间后自动注销非活动用户会话。 让我们看看第一种方法。

方法一:

编辑 ~/.bashrc 或者 ~/.bash_profile 文件:

$ nano ~/.bashrc

或者,

$ nano ~/.bash_profile

在末尾添加以下行:

TMOUT=100

在 Linux 中配置用户超时值

这使用户在 100 秒不活动后自动注销。 您可以根据自己的方便定义此值。 按 ESC 并输入 :wq 保存文件并 close 它。

通过运行以下命令应用更改:

$ source ~/.bashrc

或者,

$ source ~/.bash_profile

现在,让会话空闲 100 秒。 闲置 100 秒后,您将看到以下消息,并且用户将自动从会话中注销。

timed out waiting for input: auto-logout
Connection to 192.168.122.181 closed.

在 Linux 中自动注销非活动用户

用户可以轻松修改此设置。 因为, ~/.bashrc 文件归用户本人所有。

要修改或删除超时设置,只需删除上面添加的行并通过运行以下命令应用更改:

$ source ~/.bashrc

或者,用户可以通过运行以下命令来禁用此功能:

$ export TMOUT=0

或者,

$ unset TMOUT

由于超时设置存储在用户拥有的 ~/.bashrc 文件,他/她可以通过简单地删除该行轻松绕过它。 如果您想阻止用户更改设置,请按照第二种方法。

方法二:

登录为 root 用户。

创建一个名为的新文件 "autologout.sh".

# vi /etc/profile.d/autologout.sh

添加以下行:

TMOUT=100
readonly TMOUT
export TMOUT

Save 和 close 文件。

使用命令使其成为可执行文件:

# chmod +x /etc/profile.d/autologout.sh

注销或重新启动系统以使更改生效。

非活动用户将在 100 秒后自动注销。 普通用户即使想保持登录状态也无法更改此设置。 它们将在 100 秒后被抛出。

这两种方法适用于本地会话和远程会话,即本地登录用户或通过 SSH 从远程系统登录的用户。

在下一个方法中,我们将看到如何只自动注销非活动的 SSH 会话,而不是本地会话。

方法三:

在这种方法中,我们只会让 SSH 会话用户在特定时间不活动后退出。

编辑 /etc/ssh/sshd_config 文件:

$ sudo vi /etc/ssh/sshd_config

添加/修改以下行:

ClientAliveInterval 100
ClientAliveCountMax 0

ESC 键和类型 :wq 保存和 close 这个文件。 重新启动 sshd 服务以使更改生效。

$ sudo systemctl restart sshd

现在,从远程系统 ssh 到这个系统。 100 秒后,ssh 会话将自动关闭,您将看到以下消息:

$ Connection to 192.168.122.181 closed by remote host.
Connection to 192.168.122.181 closed.

从现在开始,任何通过 SSH 从远程系统访问该系统的人都将在 100 秒不活动后自动注销。