cygwin檔案許可權控制
Cygwin是一款在Microsoft Windows中模擬Linux環境的軟體,其目的是通過在Cygwin環境下重新編譯原始碼,使得原Linux系統的軟體可以移植到Microsoft Windows上。同時,Cygwin也提供了大量成熟、強大的Unix命令列工具,供Windows使用者使用。
Cygwin一樣模擬了Linux的許可權管理體系,這也沒有什麼不好的,但是跟Microsoft Windows的預設許可權管理卻有些不對付。舉個例子,看看下面這個截圖,這是我很久以前在Cygwin中建立的一個檔案的許可權表,它有兩個無法識別的使用者(兩個帶問號的),其實它們是我重灌系統以前的使用者,那一串數字是它們的“身份證號碼”。儘管我的使用者名稱從未更改過,但是對計算機來說它們是完全不同的,因為它們的身份ID不一樣。而我計算機上的使用者列表中並沒有這兩個身份證號,所以它們被歸入了“無法識別”的類別。問題在於我當前的使用者名稱並不在許可權表中,而Everyone使用者只有讀取檔案的許可權,因此我無法更改檔案內容或者刪除檔案。這個問題的解決方法是先取得檔案的所有權(Ownership),再賦予自己“完全控制”的許可權。
一個檔案好辦,多個檔案那可真是要命。徹底的解決方法是,在安裝好Cygwin以後,禁止Cygwin採用POSIX體系的許可權管理。這在Cygwin 1.7和1.5版中是通過不同的方式設定的。
一、Cygwin 1.5 的設定
在Cygwin 1.5 版中,Cygwin通過全域性環境變數CYGWIN的值來判斷是否使用POSIX體系的許可權管理。
設定全域性環境變數的方法是:
1. Windows XP:
1.1 進入“控制面板”,雙擊其中的“系統”條目,點選“高階”表單,點選“環境變數”按鈕。
1.2 在“環境變數”對話窗中,點選位於最下面的“新建”按鈕。
1.3 在“新建環境變數”對話窗中,變數名處輸入 CYGWIN,變數值處輸入 NONTSEC。
2. Windows Vista
2.1 進入“控制面板”,點選“系統與維護”,點選“系統”。或者在開始選單處的“我的電腦”右鍵,點選“系統屬性”。
2.2 在左邊的任務面板中,點選“高階系統屬性”。在隨之彈出的對話窗中點選“環境變數”。
2.3 在“環境變數”對話窗中,點選位於最下面的“新建”按鈕。
2.4 在“新建環境變數”對話窗中,變數名處輸入 CYGWIN,變數值處輸入 NONTSEC。
二、Cygwin 1.7 版的設定
Cygwin 1.7 版改用 /etc/fstab 檔案來控制權限設定。所以用編輯器開啟 c:\cygwin\etc\fstab 檔案,在裡面新增這一行:
none / cygdrive binary,user,noacl,posix=0 0 0
儲存檔案,整個設定就完成了。如果你有興趣把Cygwin做成便攜版,那麼可以去看看這篇文章。
最後,讓我們看看在如上設定之後,在Cygwin中建立的新檔案的預設許可權:
你看,Everyone使用者擁有對檔案的完全控制權限,而這正是Microsoft Windows預設的許可權。