本文目录导读:

- 文件/目录权限检查 (Linux/Unix)
- 用户/组权限检查 (Linux/Unix)
- Web应用权限检查 (Nginx/Apache)
- 数据库权限检查 (MySQL示例)
- 综合实战脚本:启动前权限检查
- 使用建议
权限检查脚本的写法取决于你要检查什么类型的“权限”(文件系统权限、用户权限、数据库权限、Web应用权限等),以下从最常用的场景出发,提供几个典型脚本。
文件/目录权限检查 (Linux/Unix)
基础案例:检查脚本是否可执行
#!/bin/bash
# 需要检查的脚本路径
SCRIPT_PATH="/path/to/your_script.sh"
if [ -x "$SCRIPT_PATH" ]; then
echo "✅ 文件可执行"
else
echo "❌ 文件不可执行,请运行: chmod +x $SCRIPT_PATH"
fi
进阶案例:检查读写执行权限
#!/bin/bash
file="/path/to/somefile"
if [ -r "$file" ]; then
echo "可读"
fi
if [ -w "$file" ]; then
echo "可写"
fi
if [ -x "$file" ]; then
echo "可执行"
fi
用户/组权限检查 (Linux/Unix)
检查是否为root用户
#!/bin/bash
if [ "$(id -u)" -eq 0 ]; then
echo "✅ 当前是root用户"
else
echo "❌ 需要root权限,请使用sudo执行"
exit 1
fi
检查用户是否在某个组中
#!/bin/bash
required_group="docker"
current_user=$(whoami)
# 检查当前用户是否在所需组中
if groups "$current_user" | grep -q "\b$required_group\b"; then
echo "✅ $current_user 在组 $required_group 中"
else
echo "❌ 请将 $current_user 添加到 $required_group 组,然后重新登录"
fi
Web应用权限检查 (Nginx/Apache)
检查目录权限是否能被Web服务器写入
#!/bin/bash
web_user="www-data"
# 检查上传目录是否可写
upload_dir="/var/www/html/uploads"
if sudo -u "$web_user" touch "$upload_dir/test_write_permission" 2>/dev/null; then
echo "✅ $web_user 可以写入 $upload_dir"
rm -f "$upload_dir/test_write_permission"
else
echo "❌ $web_user 无法写入 $upload_dir"
fi
数据库权限检查 (MySQL示例)
检查MySQL用户是否有特定数据库权限
#!/bin/bash
DB_USER="your_user"
DB_PASS="your_password"
DB_NAME="your_database"
# 检查SELECT权限
result=$(mysql -u "$DB_USER" -p"$DB_PASS" -e "SHOW GRANTS FOR CURRENT_USER()" 2>/dev/null | grep -c "SELECT ON \`$DB_NAME\`")
if [ "$result" -gt 0 ]; then
echo "✅ 用户拥有 $DB_NAME 的SELECT权限"
else
echo "❌ 用户缺少 $DB_NAME 的SELECT权限,请执行: GRANT SELECT ON $DB_NAME.* TO '$DB_USER'@'host';"
fi
综合实战脚本:启动前权限检查
这是一个实际项目中常用的启动检查脚本模板:
#!/bin/bash
# ===== 配置区 =====
REQUIRED_DIRS=("/var/log/myapp" "/var/data/myapp")
REQUIRED_FILES=("/etc/myapp/config.ini")
REQUIRED_USER="myapp"
REQUIRED_GROUP="myapp"
# ==================
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m'
check_and_exit() {
local status=$1
local message=$2
if [ "$status" -ne 0 ]; then
echo -e "${RED}[FAIL]${NC} $message"
exit 1
fi
}
echo "开始权限检查..."
echo "------------------------"
# 1. 检查是否为期望用户运行
CURRENT_USER=$(whoami)
if [ "$CURRENT_USER" != "$REQUIRED_USER" ]; then
echo -e "${YELLOW}[WARN]${NC} 当前用户: $CURRENT_USER, 期望用户: $REQUIRED_USER"
fi
# 2. 检查目录是否存在且可写
for dir in "${REQUIRED_DIRS[@]}"; do
if [ ! -d "$dir" ]; then
echo -e "${RED}[FAIL]${NC} 目录不存在: $dir"
exit 1
fi
if [ ! -w "$dir" ]; then
echo -e "${RED}[FAIL]${NC} 目录不可写: $dir"
exit 1
fi
echo -e "${GREEN}[OK]${NC} 目录 $dir"
done
# 3. 检查文件是否存在且可读
for file in "${REQUIRED_FILES[@]}"; do
if [ ! -f "$file" ]; then
echo -e "${RED}[FAIL]${NC} 文件不存在: $file"
exit 1
fi
if [ ! -r "$file" ]; then
echo -e "${RED}[FAIL]${NC} 文件不可读: $file"
exit 1
fi
echo -e "${GREEN}[OK]${NC} 文件 $file"
done
# 4. 检查当前用户是否在指定组中
if ! groups "$CURRENT_USER" | grep -q "$REQUIRED_GROUP"; then
echo -e "${YELLOW}[WARN]${NC} $CURRENT_USER 不在组 $REQUIRED_GROUP 中"
fi
echo "------------------------"
echo -e "${GREEN}权限检查通过!${NC}"
使用建议
- 根据场景选择:文件系统权限用
-r/-w/-x检查,用户权限用id/groups检查 - 错误处理:关键权限检查失败时应终止脚本执行(
exit 1) - 日志记录:生产环境建议将检查结果写入日志文件
- 最小权限原则:只检查必要的权限,不要过度授权
需要针对特定场景(如Windows权限、特定应用权限)的脚本吗?可以告诉我你的具体使用环境。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播