使用脚本确定并导出脚本的启动用户
下面的脚本可以用于验证程序是否以普通用户身份启动:
#!/bin/bash
# 用户身份验证日志脚本
# 文件名:user_identity_logger.sh
# 日志文件路径(用户主目录下)
LOG_FILE="$HOME/user_identity_log.log"
# 创建日志目录(如果不存在)
mkdir -p "$(dirname "$LOG_FILE")"
# 获取当前时间
current_time=$(date "+%Y-%m-%d %H:%M:%S")
# 获取用户信息
user_name=$(whoami)
user_id=$(id -u)
effective_user=$(id -un)
effective_id=$(id -u)
# 获取环境变量信息
display_env=${DISPLAY:-"未设置"}
xdg_current_desktop=${XDG_CURRENT_DESKTOP:-"未设置"}
xdg_session_type=${XDG_SESSION_TYPE:-"未设置"}
# 获取父进程信息
parent_pid=$(ps -o ppid= -p $$)
parent_cmd=$(ps -o cmd= -p $parent_pid)
# 写入日志
{
echo "==============================================="
echo "[$current_time] 启动身份验证日志"
echo "-----------------------------------------------"
echo "1. 用户信息:"
echo " - 用户名: $user_name"
echo " - 用户ID: $user_id"
echo " - 有效用户名: $effective_user"
echo " - 有效用户ID: $effective_id"
echo ""
echo "2. 环境信息:"
echo " - DISPLAY: $display_env"
echo " - XDG_CURRENT_DESKTOP: $xdg_current_desktop"
echo " - XDG_SESSION_TYPE: $xdg_session_type"
echo ""
echo "3. 启动信息:"
echo " - 脚本路径: $0"
echo " - 父进程ID: $parent_pid"
echo " - 父进程命令: $parent_cmd"
echo ""
echo "4. 身份验证结果:"
# 检查是否为root用户
if [ "$user_id" -eq 0 ]; then
echo " ⚠️ 警告: 检测到以ROOT用户身份运行!"
else
echo " ✅ 正常: 以普通用户身份运行 (UID=$user_id)"
fi
# 检查是否具有图形环境
if [[ "$display_env" == "未设置" ]]; then
echo " ⚠️ 警告: 未检测到图形环境 (DISPLAY未设置)"
else
echo " ✅ 正常: 检测到图形环境 (DISPLAY=$display_env)"
fi
echo "==============================================="
echo ""
} >> "$LOG_FILE"
# 保持脚本运行(用于测试自启动)
echo "身份验证日志已写入: $LOG_FILE"
echo "按Ctrl+C退出此脚本..."
while true; do sleep 1; done
使用说明
1. 创建脚本
vim ~/user_identity_logger.sh
粘贴上面的脚本内容,保存并退出
2. 赋予执行权限
chmod +x ~/user_identity_logger.sh
3. 测试运行
~/user_identity_logger.sh
4. 查看日志
cat ~/user_identity_log.log
留下评论