1 分钟阅读 次阅读

下面的脚本可以用于验证程序是否以普通用户身份启动:

#!/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

留下评论