當遇到大量檔案或目錄無法存取時,逐一手動修改權限極不現實。本文提供一個 PHP 網頁工具,透過呼叫 Windows cacls 指令,實現勾選目錄、選擇權限等級、指定用戶,一鍵批量生成批次檔進行授權。
.bat 批次指令,複製執行即可套用權限getDir()function getDir($dir = '') {
$dir = empty($dir) ? getcwd() : $dir;
$dirArray = [];
if ($handle = opendir($dir)) {
$i = 0;
while (false !== ($file = readdir($handle))) {
if ($file !== '.' && $file !== '..' && strpos($file, '.') === false) {
$dirArray[$i++] = $file;
}
}
closedir($handle);
}
return $dirArray;
}
if (!empty($_POST)) {
$dirs = $_POST['directory'];
$perm = trim($_POST['Perm']);
$user = trim($_POST['User']);
$base = getcwd();
echo '<pre>@echo off<br/>';
foreach ($dirs as $d) {
echo "echo Y|cacls {$base}\\{$d} /T /E /C /G {$user}:{$perm} <br/>";
}
echo 'pause</pre>';
}
輸出的批次指令範例:
echo Y|cacls C:\www\site\admin /T /E /C /G IUSR_SERVER:F
IUSR、Everyone)fix_perm.batexec、shell_exec 等函數(或手動執行生成的 bat)cacls 為舊版工具,Windows Server 2008 以上建議改用 icacls/T),謹慎操作生產環境