我安裝了 Cygwin,然後刪除了我的 Windows 7 帳戶並使用相同名稱重新建立了該帳戶。現在,我在編輯 Cygwin 資料夾中的檔案或建立新資料夾/檔案時遇到問題。我可以運行一個命令來恢復我的權限嗎?
答案1
我不得不使用帶走在 cygwin 中首先獲得所有文件的所有權。我在管理模式下執行 cygwin(右鍵)。取得 cygwin 目錄的所有權很棘手,因為賽格驅動器將連結到您的所有硬碟,因此我建議不要在 cygwin 資料夾上遞歸執行此操作。語法是:
帶走/F資料夾/R
其中 /R 是遞歸的。因此,對 cygwin 中的所有文件和資料夾執行此操作(或在 cygwin 資料夾上嘗試,但我不建議)。
之後我需要透過 Windows 資源管理器設定我的權限。右鍵單擊“cygwin”資料夾,轉到“安全性”選項卡,確保您的使用者名稱位於頂部視窗中。我還刪除了“未知”用戶,我認為這是我以前的帳戶。如果您不在其中:按一下「編輯」->「新增」-> 輸入您的姓名,然後按一下「檢查姓名」。它應該找到您認為自己是誰,然後按一下「確定」。按一下允許「完全控制」的複選框,它應該會選取所有複選框。按一下“確定”。
然後您應該仍然在安全性選項卡中,單擊“高級”->“更改權限”->突出顯示您的用戶名->“編輯”->確保選中“允許”下的所有框,並且適用於是「此資料夾、子資料夾和檔案」(不應選取該複選框)。按一次“確定”,確保選取“取代所有子物件權限...”,按一下“確定”、“確定”、“確定”。
你應該可以走了。
答案2
人的名字是無關緊要的。計算機與數字一起工作。
在這種特殊情況下,數字是安全標識符, SID。
當您建立新帳戶時,它會被賦予一個新的 SID。舊帳戶的舊SID 未被重複使用。 (這會造成安全混亂。)所有檔案和目錄都標有舊 SID 作為其創建者擁有者。他們也很可能在其 ACL 中向其創建者所有者或直接向舊 SID 授予存取權限。就這樣老的SID 是繼續擁有存取權限的東西。
因此,例如,如果您的舊帳戶具有 SID S-1-5-21-90593156-579754539-1338337383-1002
,那麼您的新帳戶將具有不同的 SID,例如S-1-5-21-90593156-579754539-1338337383-1003
。檔案和目錄向-1002
SID 授予讀取/寫入/搜尋/任何存取權限,而-1003
SID 沒有存取權限。
takeown
對於 ACL 授予創建者所有者而不是創建者所有者存取權限的情況,使用諸如此類的工具來獲取所有權是解決此問題的答案。直接地到舊的SID。只需變更建立者擁有者是誰,向建立者擁有者授予權限的 ACL 就會自動向正確的 SID 授予權限。問題是在 Windows NT 中取得所有權的權限必須由原所有者授予給預定的新主人。所有權不得(無特殊特權)被放棄,也不得未經許可而被假定。您已刪除具有舊 SID 的帳戶,因此現在沒有原始所有者授予沒錯。因此,您必須使用三次程序。首先,能夠取得任何事物所有權的帳戶(例如管理員帳戶)必須擁有所有權。然後該帳戶必須授予您的新帳戶所有權。最後,您的新帳戶必須取得管理員帳戶的所有權。
如果 ACL 直接授予對舊 SID 的存取權限,而不是透過建立者擁有者間接授予存取權限,則取得所有權就是不是對此的答案,儘管人們可能會出於其他原因想要稍後這樣做。將 ACE 中的舊 SID 替換為新 SID。您可以使用subinacl
資源工具包中的工具及其/replace
參數來完成此操作。
進一步閱讀
- 微軟公司(2004)。下載 SubInACL。下載中心。
- 微軟公司(2003-03-08)。安全描述符和存取控制清單工具和設置。技術網。
- 傑斯珀·約翰遜 (2008)。用於管理 ACL 的安全監視工具。 MSDN 雜誌。技術網。
- 傑斯珀·約翰遜 (2005-11-08)。如何在安全方面搬起石頭砸自己的腳,第 2 部分:是否使用 ACL。技術網。
- 微軟公司(2006-11-01)。 如何在 Windows NT 中將物件從一個網域遷移到另一個網域。 ID 301940。
答案3
所以我可以像 cygwin 下的管理員一樣使用 takeown 。我同意僅應遞歸更改目錄 cygwin/ 而不是 cygdrive。我唯一可以補充的是,一旦我獲得所有權,我就能夠以管理員身份發出 unix 命令來更改權限
修改 744 *
變更權限,以便擁有者俱有 rwx,而其他人具有唯讀權限。因此,無需對 Windows 端進行修改。