The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

注意 Windows 對於檔案複製與搬移的 NTFS 權限變化 [重要]

之前在客戶那邊發生過好幾次檔案權限不足的問題,每次客戶拿到我們提供的更新檔,他都會先將檔案先複製到「桌面」,然後才會「搬移」到 C:\inetpub\wwwroot 網站目錄,結果每次更新檔案都會發生權限不足的問題,且他每次更版都要手動調整那些複製進去的檔案的檔案權限,這都是起因於 NTFS 權限在檔案被複製搬移時雖時都有可能發生權限的變更,此基本且重要的觀念不可不知!

將檔案從一個目錄「複製」到另一個目錄時 ( Ctrl + C , Ctrl + V )

由於「複製」檔案時,視同在「新目錄」下「建立新檔案」,所以複製檔案時原本該檔案的 NTFS 權限並不會帶過去,而複製過去的檔案會直接繼承該目標目錄的存取權限。

例如:我要將 C:\DirA\test.txt 複製到 C:\DirB\test.txt 時,C:\DirB\test.txt 的權限就會變成是繼承 C:\DirB 目錄的 NTFS 權限!

將檔案從一個目錄「搬移」到另一個目錄時 ( Ctrl + X , Ctrl + V )

在「搬移」檔案時,情況稍稍複雜一些,共有兩種狀況:

1. 在相同磁碟之間搬移檔案 ( 例如從 C:\DirA 複製到 C:\DirB )

  • 這種情況下,檔案被搬移過去��,檔案的 NTFS 權限會被完整保留
  • 這種相同磁碟搬移檔案的過程就好像在同一個目錄下將檔案「重新命名」一樣,而在作業系統中實際上也真的只是做重新命名的動作而已!

2. 在不同的磁碟之間搬移檔案( 例如從 C:\ 複製到 D:\ )

  • 這種情況與「複製」檔案是一樣的,檔案必須先在目的磁碟建立新檔,然後再將來源檔案刪除!
  • 換個角度想,如果你有一個 50GB 的大檔案,如果從 C:\DirA 目錄搬移到 C:\DirB 目錄,也許只要 1 秒的時間,但是若你將這個 50GB 的大檔案,從 C:\ 目錄搬移到 D:\ 目錄,可能會花上 10 分鐘之久。

額外補充一個不算觀念的觀念(算常識)

  • 如果你將檔案搬移或複製到非 NTFS 的檔案磁區 (例如: FAT, FAT32, … ),那麼所有的 NTFS 權限也將會全部遺失。
  • 如果你的檔案從非 NTFS 的檔案磁區複製或搬移到 NTFS 的檔案磁區 (FAT, FAT32, … ),那麼這些檔案會直接繼承目的目錄的權限。
  • 簡言之:FAT, FAT32 沒有權限概念!
  • 所以,如果你的 USB 隨身碟不是 NTFS 權限的話(大部分都不是),那麼也就不用那麼考慮權限變更的問題。

這一個簡單的小觀念可能會對網站部署造成大影響,因此不可不知!