本文目录导读:

我来介绍几种批量授权文件的脚本方法,涵盖不同场景:
Linux/Unix 环境下的 Shell 脚本
批量修改文件权限
#!/bin/bash
# 批量授权脚本 - 根据文件类型设置不同权限
# 设置目录下所有 .sh 文件为可执行
find /path/to/directory -name "*.sh" -exec chmod +x {} \;
# 批量设置所有普通文件为 644,目录为 755
find /path/to/directory -type f -exec chmod 644 {} \;
find /path/to/directory -type d -exec chmod 755 {} \;
# 递归更改整个目录树的所有者
chown -R username:group /path/to/directory
# 批量给特定用户组授权
chgrp -R developers /path/to/project
chmod -R g+rwx /path/to/project
根据用户列表批量授权
#!/bin/bash
# 从文件读取用户列表并授权
# users.txt 格式:每行一个用户名
while read user; do
sudo usermod -aG sudo "$user"
echo "已将 $user 添加到 sudo 组"
done < /path/to/users.txt
# 批量创建并授权用户
for user in user1 user2 user3; do
useradd -m -s /bin/bash "$user"
echo "$user:初始密码" | chpasswd
chmod 700 /home/$user
done
文件和目录权限的批量管理
使用 ACL 批量授权
#!/bin/bash
# 使用 ACL 给多个用户授予特定文件和目录的权限
# 给多个用户授予特定目录的读权限
for user in alice bob charlie; do
setfacl -m u:$user:r-- /data/reports/
done
# 给多个用户授予可执行权限
for user in developer1 developer2; do
setfacl -m u:$user:rwx /var/www/html/
done
# 批量复制权限
getfacl /reference/file | setfacl --set-file=- /target/file
Windows 批处理脚本
@echo off
REM Windows 批量授权脚本
REM 批量设置文件只读属性
for %%f in (*.txt *.docx *.xlsx) do (
attrib +r "%%f"
echo 已将 %%f 设置为只读
)
REM 批量授予用户权限(需要管理员权限)
icacls C:\path\to\folder /grant "domain\user:(OI)(CI)F" /T
REM 批量处理多个目录
for %%d in (folder1 folder2 folder3) do (
icacls "C:\%%d" /grant "everyone:R" /T
)
Python 跨平台脚本
#!/usr/bin/env python3
"""
跨平台批量授权脚本
"""
import os
import sys
import stat
from pathlib import Path
def batch_chmod(base_dir, file_pattern="*", mode=0o644):
"""批量修改文件权限"""
base_path = Path(base_dir)
for file_path in base_path.rglob(file_pattern):
if file_path.is_file():
os.chmod(file_path, mode)
print(f"修改权限: {file_path} -> {oct(mode)}")
def batch_make_executable(directory):
"""批量设置可执行权限"""
for file_path in Path(directory).glob("*.sh"):
file_path.chmod(file_path.stat().st_mode | stat.S_IEXEC)
print(f"已设置为可执行: {file_path}")
def update_directory_permissions(root_dir):
"""更新目录权限"""
for root, dirs, files in os.walk(root_dir):
# 目录设置 755
for d in dirs:
os.chmod(os.path.join(root, d), 0o755)
# 文件设置 644
for f in files:
os.chmod(os.path.join(root, f), 0o644)
print(f"已处理: {root}")
if __name__ == "__main__":
# 使用示例
batch_make_executable("./scripts")
update_directory_permissions("./project")
企业级批量授权配置
#!/bin/bash
# 综合批量授权脚本示例
# 配置环境
BASE_DIR="/var/www/production"
LOG_FILE="/var/log/permission_changes.log"
log() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
# 定义授权策略
declare -A PERMISSIONS=(
["web"]="apache:apache:755:644" # dir_owner:dir_group:dir_mode:file_mode
["bin"]="root:root:755:755"
["data"]="developer:developers:770:660"
)
# 主授权函数
apply_permissions() {
local dir="$1"
local owner="$2"
local group="$3"
local dir_mode="$4"
local file_mode="$5"
if [ ! -d "$dir" ]; then
log "错误: 目录 $dir 不存在"
return 1
fi
# 递归设置文件和目录权限
find "$dir" -type d -exec chmod "$dir_mode" {} \;
find "$dir" -type f -exec chmod "$file_mode" {} \;
chown -R "$owner:$group" "$dir"
log "已应用权限: $dir ($owner:$group $dir_mode/$file_mode)"
}
# 主执行逻辑
main() {
log "开始批量授权..."
for dir in "${!PERMISSIONS[@]}"; do
IFS=':' read -r owner group dir_mode file_mode <<< "${PERMISSIONS[$dir]}"
apply_permissions "$BASE_DIR/$dir" "$owner" "$group" "$dir_mode" "$file_mode"
done
# 额外处理特殊目录(如临时上传目录)
chmod 777 "$BASE_DIR/uploads"
chmod +t "$BASE_DIR/uploads" # sticky bit
log "批量授权完成!"
}
main
PowerShell 脚本(Windows)
# 批量授权脚本
$basePath = "C:\Projects"
$users = @("用户1", "用户2", "用户3")
foreach ($user in $users) {
$path = Join-Path $basePath $user
# 创建用户目录
if (-not (Test-Path $path)) {
New-Item -ItemType Directory -Path $path -Force
}
# 设置权限
$acl = Get-Acl $path
$permission = "$env:USERDOMAIN\$user", "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($permission)
$acl.SetAccessRule($accessRule)
Set-Acl $path $acl
Write-Host "已为用户 $user 设置权限"
}
使用建议
- 备份原有的权限配置,以防误操作
- 使用 --dry-run 先预览将要执行的操作
- 记录日志,便于追踪权限变更
- 分批执行,避免一次性处理过多文件
- 测试环境先行,先在非生产环境验证
根据具体需求选择适合的脚本方法,建议根据实际的目录结构和用户组织形式进行定制。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播