2014-10-31 134 views
0

我的組織有一個實際的組策略,它只允許可執行程序駐留在Program Files(或Program Files X86)目錄下。顯然,這些目錄不能被普通用戶寫入。我有權訪問本地管理員權限,所以如果需要我可以在那裏安裝。但當然,把整個cygwin樹放在那裏是沒有意義的,因爲用戶需要能夠寫入/ home,/ tmp等。我想我可能可以用鏈接做些事情,也許安裝到c:\ cygwin,然後移動Program Files下的/ bin目錄並創建一個硬鏈接?在限制性IT策略下安裝cygwin的最佳策略是什麼?

有沒有人遇到類似的情況,想出一個優雅的解決方案?這是Win 7 Enterprise。

+0

類似的問題和答案在http://stackoverflow.com/questions/3343988/accessing-a-cygwin-symlink-from-windows。我不確定這是否是最好的,但anwser得分6. – 2014-10-31 02:35:17

+0

@HarryJohnston:你究竟是什麼意思?你是否期望用戶空間'cygwin1.dll'提供真正的安全性或其他? Cygwin只能使用它在平臺上找到的機制。例如,Cygwin文件可以通過NTFS ACL進行保護,操作系統內核將強制執行這些文件。 – 2014-10-31 03:45:59

+0

實際上,它沒花很長時間才發現:「從版本1.5.13開始,Cygwin開發人員並沒有意識到cygwin dll中的任何功能,它們允許用戶獲得特權或訪問他們沒有的對象Windows下的權利「。所以問題不再存在。 – 2014-10-31 04:07:47

回答

1

此前Cygwin的34年1月7日,解決這些問題需要箍跳的公平位,¹但現在它很簡單:

  1. 如果您還沒有安裝Cygwin的好,不要so.²

    如果您已經安裝Cygwin,並且在1.7.34之前開始使用Cygwin的版本,請將/etc/passwd/etc/group移開,然後升級到當前版本。

  2. 啓動Cygwin終端。

  3. 打開Cygwin的​​在你喜歡的文本editor.⁴添加一行:

    db_home: /%H 
    

這就是它!當您下次重新啓動Cygwin時,它會將您的Windows配置文件目錄視爲您的Cygwin主目錄。5這意味着您將有有用的子文件夾,如DesktopDownloads作爲子文件夾,它與OS X和很多桌面Linuxes工作。

有些人可能不希望這兩個目錄被視爲等價物。您可以選擇任何您喜歡的路徑方案。例如,您可以將其更改爲/cygdrive/c/Users/%U/cygwin以將Cygwin主文件夾放入Windows配置文件目錄的cygwin子目錄中。

Cygwin的這個新功能非常強大,並且can do a lot more than I show here。例如,如果您願意,您可以通過AD更改Cygwin用戶主目錄。有關詳情,請參閱該文檔。

您可能還想重新排列Cygwin路徑方案的一些其他元素。您可以通過編輯Cygwin's /etc/fstab文件來完成此操作。你可能想移動/tmp/usr/tmp,並/var/tmp以非管理員用戶可以寫入到一個目錄,一兩件事:

c:/tmp /tmp  ntfs auto 0 0 
c:/tmp /usr/tmp ntfs auto 0 0 
c:/tmp /var/tmp ntfs auto 0 0 

這將讓你安裝(及更高版本的更新)的Cygwin作爲管理員,同時還讓無特權的用戶運行Cygwin。這使得Cygwin更像Linux或Unix。由於Cygwin軟件包倉庫中的大多數軟件都來自該世界,因此您可以依靠它在這樣的方案下正確運行。


腳註:

  1. first version of this answer告訴你如何做一個等價的東西與舊版本的Cygwin。

  2. Cygwin不關心你安裝它的位置,所以如果默認不適合你,請隨時更改它。一些想法:

    • C:\Program Files\Cygwin
    • C:\Users\jeremy\Cygwin
    • D:\cygwin

    的Cygwin會記住你的選擇,在後續的更新。

  3. 如果您不移動這些文件,它們會干擾我們上面構建的解決方案。 Cygwin的這部分足夠複雜,應該得到a whole section in the Cygwin user manual。暗示。 :)

  4. Cygwin默認安裝精簡版的Vim文本編輯器。

    如果您不喜歡vi,Cygwin軟件包存儲庫中還有許多其他文本編輯器。

    如果vi,我建議安裝完整版的Vim,再加入alias vi=vim~/.bashrc

    您還可以使用本地Windows GUI文本編輯器。 Cygwin的​​解析器似乎可以應對DOS行尾。

  5. Cygwin DLL從%HOMEDRIVE%%HOMEPATH%環境變量構建此路徑,然後將其轉換爲POSIX形式。