HOME

调整su命令超时时间

一、引言

在Linux系统中,su 命令用于切换用户会话,并且可以使用 -s 参数指定目标用户的SHELL环境。然而,在某些情况下,可能需要调整 su 命令的超时设置以适应不同的安全策略或用户操作需求。

二、默认情况下的超时限制

在大多数Linux发行版中,默认情况下,su 命令并不会强制超时退出,用户可以一直保持登录状态。但是,在某些环境下,比如企业或者需要高安全性的地方,可能希望为 su 命令设定一个合理的超时时间。

三、修改 su 命令的超时设置

要调整 su 命令的超时时间,通常可以通过自定义脚本或者配置文件来实现。具体步骤如下:

1. 使用 shell 脚本添加超时机制

可以编写一个shell脚本来处理 su 的执行,并在指定时间内没有输入任何操作后自动退出。

#!/bin/bash

# 设置超时时间(秒)
TIMEOUT=600

# 执行 su 命令并设置超时
su -c 'sleep 10 && echo "Session timed out."' $USER &> /dev/null &
PID=$!

# 等待输入或超时
read -t $TIMEOUT -p "Please enter something: "
if [ $? = 0 ]; then
    kill $PID
else
    # 超时后执行
    kill $PID && echo "Session timed out."
fi

将上述脚本保存为 su_timeout.sh,然后赋予执行权限:

chmod +x su_timeout.sh

2. 配置 PAM(Pluggable Authentication Modules)

另一种方法是通过修改PAM配置来实现超时功能。编辑 /etc/pam.d/su 文件,增加以下行以启用超时限制:

# Timeout in seconds for the su command
session required pam_unix.so timeout=600

这里的 timeout 参数设定了超时时间(秒)。注意,不同PAM模块可能有不同的配置选项。

四、注意事项

通过以上方式可以有效地调整 su 命令的超时时间设置。这样既保证了操作的安全性,又能够提升整体的操作体验。