这个简短的教程解释了在 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 秒不活动后自动注销。