本文目录导读:

批量修改目录权限可以通过多种脚本实现,以下是几种常见的脚本方法:
Bash Shell 脚本(Linux/Unix)
使用 find 命令批量修改
#!/bin/bash
# 修改指定目录下的所有目录权限为 755
find /path/to/directory -type d -exec chmod 755 {} \;
# 修改指定目录下的所有文件权限为 644
find /path/to/directory -type f -exec chmod 644 {} \;
递归修改目录权限
#!/bin/bash
target_dir="/path/to/directory"
# 只修改目录权限(不修改文件)
find "$target_dir" -type d -exec chmod 755 {} \;
# 同时修改目录和文件权限
find "$target_dir" -type d -exec chmod 755 {} \;
find "$target_dir" -type f -exec chmod 644 {} \;
echo "目录权限修改完成!"
使用 chmod 的 -R 参数(不区分文件和目录)
#!/bin/bash # 递归修改所有文件和目录权限为 755 chmod -R 755 /path/to/directory # 如果需要区分文件权限 chmod -R u+rwX,go+rX /path/to/directory # 这个命令会保持目录可执行,但不给文件执行权限
Python 脚本
#!/usr/bin/env python3
import os
import stat
import sys
def batch_chmod(path, dir_mode=0o755, file_mode=0o644):
"""
批量修改目录和文件权限
:param path: 目标路径
:param dir_mode: 目录权限(默认755)
:param file_mode: 文件权限(默认644)
"""
try:
for root, dirs, files in os.walk(path):
# 修改目录权限
for d in dirs:
dir_path = os.path.join(root, d)
os.chmod(dir_path, dir_mode)
print(f"修改目录权限: {dir_path} -> {oct(dir_mode)}")
# 修改文件权限
for f in files:
file_path = os.path.join(root, f)
os.chmod(file_path, file_mode)
print(f"修改文件权限: {file_path} -> {oct(file_mode)}")
print("权限修改完成!")
except Exception as e:
print(f"错误: {e}")
if __name__ == "__main__":
if len(sys.argv) < 2:
print("用法: python script.py /目标目录路径")
sys.exit(1)
target_path = sys.argv[1]
batch_chmod(target_path)
Windows PowerShell 脚本
# PowerShell 脚本:批量修改目录权限
$targetPath = "C:\TargetDirectory"
# 递归获取所有目录和文件
Get-ChildItem -Path $targetPath -Recurse | ForEach-Object {
if ($_.PSIsContainer) {
# 修改目录权限
$_.Attributes = 'Directory'
# 设置完整权限(这里需要设置具体的 ACL)
$acl = Get-Acl $_.FullName
$permission = "Everyone","FullControl","Allow"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission
$acl.SetAccessRule($accessRule)
Set-Acl $_.FullName $acl
Write-Host "已修改目录: $($_.FullName)"
} else {
# 修改文件权限(示例:只读权限)
$_.Attributes = 'ReadOnly'
Write-Host "已修改文件: $($_.FullName)"
}
}
实用的组合脚本
#!/bin/bash
# 交互式批量修改目录权限脚本
echo "=== 批量目录权限修改工具 ==="
# 获取目标路径
read -p "请输入目标目录路径: " target_dir
if [ ! -d "$target_dir" ]; then
echo "错误:目录不存在!"
exit 1
fi
# 选择权限模式
echo "请选择权限模式:"
echo "1) 目录 755,文件 644(推荐)"
echo "2) 目录 777,文件 666(开放权限)"
echo "3) 目录 700,文件 600(私有权限)"
echo "4) 自定义权限"
read -p "请选择 (1-4): " choice
case $choice in
1)
dir_perm=755
file_perm=644
;;
2)
dir_perm=777
file_perm=666
;;
3)
dir_perm=700
file_perm=600
;;
4)
read -p "输入目录权限 (如 755): " dir_perm
read -p "输入文件权限 (如 644): " file_perm
;;
*)
echo "无效选择!"
exit 1
;;
esac
# 确认执行
echo "即将修改 $target_dir 下的所有目录权限为 $dir_perm,文件权限为 $file_perm"
read -p "确认执行?(y/n): " confirm
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
find "$target_dir" -type d -exec chmod "$dir_perm" {} \;
find "$target_dir" -type f -exec chmod "$file_perm" {} \;
echo "✅ 权限修改完成!"
else
echo "❌ 操作已取消"
fi
使用说明
- 保存脚本:将上述脚本保存为
.sh(Linux)或.py(Python)文件 - 添加执行权限(Linux):
chmod +x script.sh
- 运行脚本:
./script.sh /目标目录路径
注意事项
- ⚠️ 修改系统目录权限可能导致系统不稳定
- 💾 建议先备份重要数据
- 🔒 避免将目录权限设置为 777(完全开放)
- 📂 确保有足够的权限执行修改操作(可能需要 sudo)
选择哪种脚本取决于你的操作系统和具体需求,Linux/Unix 环境下建议使用 Bash 脚本,Windows 环境使用 PowerShell 或 Python 脚本。