首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 批量修改 Windows 目錄權限實作教學

     編輯:PHP 相關知識

需求背景

當遇到大量檔案或目錄無法存取時,逐一手動修改權限極不現實。本文提供一個 PHP 網頁工具,透過呼叫 Windows cacls 指令,實現勾選目錄、選擇權限等級、指定用戶,一鍵批量生成批次檔進行授權。

核心功能

  • 掃描當前目錄下的所有子目錄(過濾隱藏檔與副檔名檔案)
  • 提供全選、反選、全不選互動操作
  • 支援 N(無)、R(讀取)、W(寫入)、C(修改)、F(完全控制) 五種權限等級
  • 指定 Internet 來賓帳戶或自訂用戶
  • 生成 .bat 批次指令,複製執行即可套用權限

程式碼架構

1. 目錄掃描函數 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;
}

2. 表單介面 (GET 請求)

  • 顯示當前工作目錄
  • 列出目錄核取方塊
  • 權限下拉選單、用戶輸入框
  • JavaScript 實現全選/反選/驗證邏輯

3. 處理提交 (POST 請求)

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

使用步驟

  1. 將 PHP 檔放入需管理的網站根目錄
  2. 瀏覽器開啟該檔案,勾選目標資料夾
  3. 選擇權限等級、輸入用戶名(如 IUSR、Everyone)
  4. 提交後複製生成的指令,存為 fix_perm.bat
  5. 以管理員身分在伺服器執行該批次檔

注意事項

  • PHP 需啟用 exec、shell_exec 等函數(或手動執行生成的 bat)
  • cacls 為舊版工具,Windows Server 2008 以上建議改用 icacls
  • 權限變更為遞迴套用(/T),謹慎操作生產環境
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved