0
点赞
收藏
分享

微信扫一扫

Linux自动登出机制的设置

场景:实际生产过程中存在用户忘记登出会话,留下一个处于连接状态的session,那是一件非常危险的事情.

而作为一名DBA,会去每个系统检查用户是否有登出吗?要知道网络中有成百上千台机器,这根本是不现实的.

此时就需要设置让用户在本机或SSH会话上超过一定时间不活跃便自动登出的机制.以下便是如何在类Unix系统上实现此功能的步骤.

实验环境:rhel 8.4

以下介绍三种实现方法.

方法 1:

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

$ vi ~/.bashrc

$ vi ~/.bash_profile

将下面行加入其中:

TMOUT=100

说明:用户在停止动作 100 秒后自动登出.

运行下面命令让更改生效:

$ source ~/.bashrc

$ source ~/.bash_profile

现在让会话闲置100秒,会看到下面这段信息,用户会自动退出会话.

[oracle@dbserver ~]$ timed out waiting for input: auto-logout

[root@dbserver ~]#

该设置可以轻易地被用户所修改,因为~/.bashrc文件被用户自己所拥有.

要修改或者删除超时设置,只需要删掉上面添加的行,然后执行source ~/.bashrc命令让修改生效.

此外,用户也可以运行下面命令来禁止超时:

$ export TMOUT=0

或,

$ unset TMOUT

若想禁止用户修改该设置,使用方法2.

方法2:

以root用户登录,创建一个名为autologout.sh的新文件.

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

加入下面内容:

TMOUT=60

readonly TMOUT

export TMOUT

添加可执行权限:

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

现在登出或重启系统,非活动用户就会在60秒后自动登出.

说明:该修改对当前已开启的会话不会产生影响,只会对新开的session生效.

以上两种方法对本地登录的用户和远程系统上通过SSH登录的用户都有效.

下面实现只自动登出非活动的SSH会话,而不自动登出本地服务器上的会话.

方法3

编辑/etc/ssh/sshd_config文件

# vi /etc/ssh/sshd_config

添加/修改下面行:

ClientAliveInterval 60

ClientAliveCountMax 0

保存并退出该文件,重启 sshd 服务.

# systemctl restart sshd

现在,在远程系统通过ssh登录该系统,60秒后ssh会话就会自动关闭.

出现以下信息:

[oracle@dbserver ~]$

Socket error Event: 32 Error: 10053.

Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(192.168.133.120) at 12:32:49.

参考网址:https://www.jb51.net/LINUXjishu/596424.html

举报

相关推荐

0 条评论