本文目录导读:

我来帮你编写一个自动设置文件夹权限的脚本,根据不同操作系统提供多个版本。
Windows PowerShell 脚本
# 设置文件夹权限脚本
param(
[string]$FolderPath = "C:\SharedFolder",
[string]$UserName = "Domain Users",
[string]$Permission = "Read", # FullControl, Modify, Read, Write
[switch]$InheritPermission,
[switch]$RemoveExistingPermissions
)
function Set-FolderPermissions {
param(
[string]$Path,
[string]$User,
[string]$PermissionType,
[bool]$Inherit,
[bool]$RemoveExisting
)
# 检查文件夹是否存在
if (-not (Test-Path $Path)) {
Write-Host "创建文件夹: $Path" -ForegroundColor Yellow
New-Item -ItemType Directory -Path $Path -Force | Out-Null
}
# 获取当前权限
$acl = Get-Acl -Path $Path
# 如果需要移除现有权限
if ($RemoveExisting) {
$acl.Access | ForEach-Object {
$acl.RemoveAccessRule($_)
}
}
# 创建访问规则
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule(
$User,
$PermissionType,
$([System.Security.AccessControl.InheritanceFlags]::ContainerInherit -bor
[System.Security.AccessControl.InheritanceFlags]::ObjectInherit),
[System.Security.AccessControl.PropagationFlags]::None,
[System.Security.AccessControl.AccessControlType]::Allow
)
# 添加访问规则
$acl.AddAccessRule($accessRule)
# 设置权限
try {
Set-Acl -Path $Path -AclObject $acl
Write-Host "成功设置权限!" -ForegroundColor Green
Write-Host "文件夹: $Path" -ForegroundColor Cyan
Write-Host "用户: $User" -ForegroundColor Cyan
Write-Host "权限: $PermissionType" -ForegroundColor Cyan
}
catch {
Write-Error "设置权限失败: $_"
}
# 显示当前权限
Write-Host "`n当前文件夹权限:" -ForegroundColor Yellow
Get-Acl -Path $Path | Select-Object -ExpandProperty Access | Format-Table
}
# 执行权限设置
Set-FolderPermissions -Path $FolderPath -User $UserName -PermissionType $Permission -Inherit $InheritPermission.IsPresent -RemoveExisting $RemoveExistingPermissions.IsPresent
Linux Bash 脚本
#!/bin/bash
# 文件夹权限设置脚本
# 默认配置
FOLDER_PATH="/path/to/folder" # 修改为你的文件夹路径
USER_NAME="user_name" # 修改为用户名
GROUP_NAME="group_name" # 修改为用户组
PERMISSION="755" # 权限模式:755(rwxr-xr-x), 700(rwx------)
OWNER_USER="webserver_user" # 所有者用户,如www-data, nginx
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
# 显示使用方法
show_usage() {
echo "使用方法: $0 -p <文件夹路径> [选项]"
echo ""
echo "选项:"
echo " -p <路径> 文件夹路径 (必需)"
echo " -u <用户> 设置用户权限"
echo " -g <组> 设置组权限"
echo " -m <权限模式> 设置权限模式 (如 755, 700)"
echo " -o <所有者> 设置文件夹所有者"
echo " -r 递归设置子文件夹"
echo " -h 显示帮助信息"
echo ""
echo "示例:"
echo " $0 -p /var/www/html -u john -g www-data -m 755 -o www-data -r"
exit 0
}
# 检查是否为root用户
check_root() {
if [ "$(id -u)" != "0" ]; then
echo -e "${RED}错误: 此脚本需要root权限!${NC}"
echo "请使用 sudo 运行此脚本"
exit 1
fi
}
# 设置文件夹权限
set_folder_permissions() {
local path="$1"
local user="$2"
local group="$3"
local perm="$4"
local owner="$5"
local recursive="$6"
# 检查文件夹是否存在
if [ ! -d "$path" ]; then
echo -e "${YELLOW}创建文件夹: $path${NC}"
mkdir -p "$path"
if [ $? -ne 0 ]; then
echo -e "${RED}创建文件夹失败!${NC}"
exit 1
fi
fi
# 递归或非递归设置
if [ "$recursive" = true ]; then
chmod_opt="-R"
chown_opt="-R"
else
chmod_opt=""
chown_opt=""
fi
# 设置所有者
if [ -n "$owner" ]; then
if echo "$owner" | grep -q ":"; then
# 格式: user:group
chown $chown_opt "$owner" "$path"
else
# 只设置用户
chown $chown_opt "$owner:$owner" "$path"
fi
echo -e "${GREEN}设置所有者: $owner${NC}"
fi
# 设置组
if [ -n "$group" ] && [ -z "$owner" ]; then
chgrp $chown_opt "$group" "$path"
echo -e "${GREEN}设置组: $group${NC}"
fi
# 设置用户权限
if [ -n "$user" ]; then
# 设置ACL权限
if command -v setfacl &> /dev/null; then
if [ "$recursive" = true ]; then
setfacl -R -m "u:$user:rwx" "$path"
setfacl -R -m "d:u:$user:rwx" "$path"
else
setfacl -m "u:$user:rwx" "$path"
fi
echo -e "${GREEN}使用ACL设置用户 $user 权限${NC}"
else
echo -e "${YELLOW}未安装ACL工具,使用传统权限设置${NC}"
fi
fi
# 设置权限模式
if [ -n "$perm" ]; then
chmod $chmod_opt "$perm" "$path"
echo -e "${GREEN}设置权限模式: $perm${NC}"
fi
# 显示结果
echo -e "${CYAN}文件夹: $path${NC}"
if [ "$recursive" = true ]; then
ls -la "$path"
else
ls -la "$path" | head -2
fi
}
# 主函数
main() {
# 检查root权限
check_root
# 如果无参数,显示帮助
if [ $# -eq 0 ]; then
show_usage
fi
# 解析参数
local path=""
local user=""
local group=""
local perm=""
local owner=""
local recursive=false
while getopts "p:u:g:m:o:rh" opt; do
case $opt in
p)
path="$OPTARG"
;;
u)
user="$OPTARG"
;;
g)
group="$OPTARG"
;;
m)
perm="$OPTARG"
;;
o)
owner="$OPTARG"
;;
r)
recursive=true
;;
h)
show_usage
;;
\?)
echo -e "${RED}无效选项: -$OPTARG${NC}" >&2
show_usage
;;
esac
done
# 检查必需参数
if [ -z "$path" ]; then
echo -e "${RED}错误: 必需指定文件夹路径 (-p)${NC}"
show_usage
fi
# 设置权限
set_folder_permissions "$path" "$user" "$group" "$perm" "$owner" "$recursive"
# 显示权限摘要
echo ""
echo -e "${YELLOW}权限设置完成!${NC}"
echo "路径: $path"
echo "用户: ${user:-未设置}"
echo "组: ${group:-未设置}"
echo "权限模式: ${perm:-未更改}"
echo "所有者: ${owner:-未更改}"
echo "递归: $recursive"
}
# 执行主函数
main "$@"
Windows 批处理脚本 (CMD)
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
:: 设置文件夹权限批处理脚本
:: 默认配置
set "FOLDER_PATH=C:\SharedFolder"
set "USER_NAME=Everyone"
set "PERMISSION=F" REM F=完全控制, R=读取, M=修改, W=写入
echo ========================================
echo 文件夹权限设置工具
echo ========================================
echo.
:: 检查文件夹
if not exist "%FOLDER_PATH%" (
echo [信息] 创建文件夹: %FOLDER_PATH%
mkdir "%FOLDER_PATH%"
if !errorlevel! neq 0 (
echo [错误] 创建文件夹失败!
pause
exit /b 1
)
)
:: 移除现有权限
echo [信息] 移除现有权限...
icacls "%FOLDER_PATH%" /grant "SYSTEM:(OI)(CI)F" /T
icacls "%FOLDER_PATH%" /grant "BUILTIN\Administrators:(OI)(CI)F" /T
icacls "%FOLDER_PATH%" /reset /T
:: 设置新权限
echo [信息] 设置用户权限...
icacls "%FOLDER_PATH%" /grant "%USER_NAME%:(OI)(CI)%PERMISSION%" /T
:: 验证权限
echo.
echo [信息] 当前文件夹权限:
icacls "%FOLDER_PATH%"
:: 完成
echo.
echo ========================================
echo 权限设置完成!
echo ========================================
echo 文件夹: %FOLDER_PATH%
echo 用户: %USER_NAME%
echo 权限: %PERMISSION%
echo.
pause
使用示例
Windows PowerShell:
# 基本使用 .\Set-FolderPermissions.ps1 -FolderPath "D:\Shared" -UserName "Everyone" -Permission "Read" # 递归设置子文件夹 .\Set-FolderPermissions.ps1 -FolderPath "D:\Project" -UserName "Domain Users" -Permission "Modify"
Linux:
# 设置权限和所有者 sudo ./folder_permissions.sh -p /var/www/html -u www-data -g www-data -m 755 -o www-data -r # 使用ACL设置 sudo ./folder_permissions.sh -p /shared/folder -u john -m 770
Windows CMD:
:: 设置完全控制权限 folder_permissions.bat :: 或直接使用icacls icacls "D:\MyFolder" /grant "Users:(OI)(CI)R" /T
这些脚本提供了灵活的方式来设置文件夹权限,选择适合你操作系统的版本,并根据实际需求调整参数。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播