Table of Contents
Windows 10 硬碟或分隔磁區存取被拒
系統從新安裝 windows 10 後,D 槽的圖樣看起來不正常,只顯示 NTFS,點選後出現位置無法使用,無法存取 D:\,存取被拒的訊息。
解決方法1:添加目前使用者的權限
1. 開啟內容 – 安全性,顯示要有讀取權限,才能檢視物件的內容,所以按〘進階〙繼續。
2. 顯示無法顯示目前的擁有者,點選〘變更〙,進入進階安全性設定
3. 在輸入物件名稱裡輸入當前使用著名稱,然後按檢查名稱。或輸入Administrators 讓管理者群組成為擁有者。
4. 系統會自動完整使用者名稱,按〘確定〙繼續
5. 在這個視窗,先將擁有者下面的〘取代子容器與物件的擁有者〙選項打勾,最後下面〘以可從此物件繼承的權限項目取代所有字物件的權限項目〙打勾,然後點擊〘新增〙來添加本身使用著權限。
6. 點擊〘選擇一個主體〙,跟之前一樣將當前使用者加進來。套用到這個資料夾,子資料夾及檔案,基本權限〘完全控制〙打勾,〘僅套用這些權限到此容器中的物件及(或)容器〙不要打勾,這之後在解釋,然後〘確定〙。
7. 接著點選〘套用〙,可能會出現 Windows安全性訊息,是否取代權限,點〘是〙,接著讓系統跑完流程。
8. 之後會在跑出個Windows安全性訊息的確定視窗,一樣選是就行。
9. 當系統將擁有權與權限都設定完畢後,會在跳出個 Windows 安全性視窗,告知要從開硬碟才能存取。點選確定後,關閉其他視窗,這時去查看D槽應該就可以正常讀取了。
其他注意
- 若只有修改擁有者,而沒有在步驟 5加入自己的使用者權限,就算當前的使用帳號本身是系統管理員,還是會很神奇的無法存取硬碟,所以給予權限相對來說是比較重要的。
開啟內容 – 安全性,會顯示當前的使用者或群組
這時還是要按〘進階〙,然後為當前使用者添加權限,從步驟 5 做一次。
- 若步驟 6裡,〘僅套用這些權限到此容器中的物件及(或)容器〙有打勾,點選每個檔案都要確認一次永久存取的權限
解決方法2:使用 takwown 與 icacls 指令
使用takeown 指令更改擁有權
終端內輸入 takeown /? 會顯示範例
takeown 實際應用
takeown /f D: /R /A /D Y
如果要把擁有者給當前的使用者,就把/A拿掉。
takeown 語法
takeown [/s <computer> [/u [<domain>\]<username> [/p [<password>]]]] /f <filename> [/a] [/r [/d {Y|N}]]
takeown 參數
參數 | 描述 |
---|---|
/s <computer> |
指定遠端電腦的名稱或 IP 位址 (不要使用反斜線) 。 預設值為本機電腦。 此參數會套用至命令中指定的所有檔案和資料夾。 |
u [<domain>\]<username> |
使用指定之使用者帳戶的許可權來執行腳本。 預設值為 [系統許可權]。 |
/p [<[password>] |
指定 /u 參數中指定之使用者帳戶的密碼。 |
/f <filename> |
指定檔案名或目錄名稱模式。 指定模式時,您可以使用萬用字元 * 。 您也可以使用語法 <sharename>\<filename> 。 |
/a | 提供系統管理員群組的擁有權,而不是目前的使用者。 如果您未指定此選項,則會將檔案擁有權提供給目前登入電腦的使用者。 |
/r | 在指定目錄和子目錄中的所有檔案上執行遞迴作業。 |
/d {Y | N} |
抑制當目前的使用者沒有指定目錄的 [ 列出資料夾 ] 許可權,而改為使用指定的預設值時,所顯示的確認提示。 適用于 /d 選項的有效值為:
|
/? | 在命令提示字元顯示說明。 |
takeown 備註
- takeown 命令不支援使用(?和 *)混合模式 。
- 使用 takeown 刪除鎖定之後,您可能必須使用 Windows 檔案總管為自己授與您自己檔案和目錄的完整許可權,才能加以刪除。
takeown 指令資料來源:微軟網頁對 takeown 指令的解說
使用 icacls指令更改或添加權限
icacls 實際應用
終端內輸入 icacls 會顯示範例
使用 icacls 更改擁有者(此選項不會強制更改,需要強制更改請使用takeown)
icacls D: /setowner „Administrators“ /T /C
使用 icacls 指令添加權限 (運行速度很慢,不建議批量運行)
icacls D: /grant Administrators:F /T
icacls 語法
icacls <filename> [/grant[:r] <sid>:<perm>[...]] [/deny <sid>:<perm>[...]] [/remove[:g|:d]] <sid>[...]] [/t] [/c] [/l] [/q] [/setintegritylevel <Level>:<policy>[...]] icacls <directory> [/substitute <sidold> <sidnew> [...]] [/restore <aclfile> [/c] [/l] [/q]]
icacls 參數
DACL:判別存取控制清單
參數 | 描述 |
---|---|
<filename> |
指定要顯示 Dacl 的檔案。 |
<directory> |
指定要顯示 Dacl 的目錄。 |
/t | 在目前目錄及其子目錄中的所有指定檔案上執行作業。 |
/c | 即使有任何檔案錯誤,仍繼續操作。 仍會顯示錯誤訊息。 |
/l | 在符號連結(而不是其目的地)上執行運算。 |
/q | 抑制成功訊息。 |
[/save <ACLfile> 一起/c/l[/q]] |
將所有相符檔案的 Dacl 儲存到 ACLfile 中,以供稍後搭配 /restore 使用。 |
[/setowner <username> 一起/c/l[/q]] |
將所有相符檔案的擁有者變更為指定的使用者。 |
[/findsid <sid> 一起/c/l[/q]] |
尋找包含 DACL 的所有相符檔案,這些檔案會明確提及指定的安全識別碼 (SID) 。 |
[/verify [/t] [/c] [/l] [/q]] | 尋找具有不標準 Acl 的所有檔案,或長度不一致的檔案 (存取控制專案) 計數。 |
[/reset [/t] [/c] [/l] [/q]] | 以預設繼承的 Acl 取代所有相符檔案的 Acl。 |
[/grant [: r] <sid> : […]] | 授與指定的使用者存取權限。 許可權會取代先前授與的明確許可權。若未新增 : r,表示會將許可權新增至任何先前授與的明確許可權。 |
[/deny <sid> : […]] | 明確拒絕指定的使用者存取權限。 系統會為指定的許可權新增明確的 deny ACE,並移除任何明確授與中的相同許可權。 |
[/remove [:g | :d]] <sid> […]一起/c/l一起 |
從 DACL 中移除所有出現的指定 SID。 此命令也可以使用:
|
[/setintegritylevel [ (CI) (OI) ] <Level>:<Policy> […]] |
明確地將完整性 ACE 新增至所有相符的檔案。 層級可以指定為:
完整性 ACE 的繼承選項可以在層級之前,而且只會套用至目錄。 |
[/substitute <sidold> <sidnew> […]] |
以新的 SID 取代現有的 SID (sidold) (sidnew) 。 需要搭配參數使用 <directory> 。 |
/restore <ACLfile> [/c] [/l] [/q] |
將預存的 Dacl 套用 <ACLfile> 至指定目錄中的檔案。 需要搭配參數使用 <directory> 。 |
/inheritancelevel:[e | d | r] |
設定繼承層級,它可以是:
|
icacls 備註
- Sid 可以是數位或易記名稱格式。 如果您使用數值格式,請將萬用字元 * 貼到 SID 的開頭。
- 此命令會保留 ACE 專案的標準順序,如下所示:
- 明確拒絕
- 明確授與
- 繼承拒絕
- 繼承的授與
- 此
<perm>
選項是一種許可權遮罩,可使用下列其中一種形式來指定:- 一系列的簡單許可權:
- F -完整存取
- M-修改存取權
- RX -讀取和執行存取
- R -唯讀存取
- W -僅限寫入存取
- 以括弧括住的特定許可權清單(以逗號分隔):
- D -刪除
- RC -讀取控制
- WDAC -寫入 DAC
- WO -寫入擁有者
- S -同步處理
- 作為 存取系統安全性
- MA -允許的最大值
- GR -泛型讀取
- GW -一般寫入
- GE -泛型執行
- GA -一般全部
- RD -讀取資料/清單目錄
- WD -Write data/add file
- AD -附加資料/新增子目錄
- 反應 -讀取擴充屬性
- WEA -寫入擴充屬性
- X -執行/遍歷
- DC -刪除子系
- RA -讀取屬性
- WA -寫入屬性
- 繼承許可權可以在其中一個
<perm>
表單上,而且只會套用至目錄:- (OI) -物件繼承
- (CI) -容器繼承
- (IO) -僅限繼承
- (NP) -不要傳播繼承
- 一系列的簡單許可權:
icacls 指令資料來源:微軟網頁對 icacls 指令的解說
icacls查看權限拒絕存取
用icacls查看權限會發生拒絕存取的情況,這時要去微軟官網下載 Pstools,解壓縮。
用系統管理員執行終端 cmd,移至 Pstools 的資料夾後,執行
psexec -i -s cmd.exe
或64位元的
psexec64 -i -s cmd.exe
這時會另外出現一個終端視窗,在這個視窗下可以查看剛剛沒有存取權限的檔案。
資料來源:How to reset Icacls access denied permissions back to Admin.
個人經驗
方法1行得通就不需要用方法2,當時用方法1一直沒成功,才用指令玩了一段時間。方法2適合拿來修改個別檔案,用在資料夾上比較沒問題,但很多資料夾裡個別檔案在執行命令時都會存取被拒。後來發現在方法1只改擁有者沒有用,還要添加權限,硬碟就能讀取了。
windows 裡沒有權限能刪除的檔案,用 Linux Live USB 就能刪除了。
其他參考資料,這網頁有其他小技巧,只是沒用上問題就解決了,留作紀錄:Access is denied Windows 10 error [FIX]