在限制性IT策略下安装cygwin的最佳策略?

时间:2014-10-31 01:27:48

标签: windows-7 cygwin group-policy

我的组织有一个有效的组策略,只允许可执行程序驻留在Program Files(或Program Files X86)目录下。显然,普通用户不能写这些目录。我可以访问本地管理员权限,因此如果需要,我可以在那里安装。但是当然将整个cygwin树放在那里是没有意义的,因为用户需要能够写入/ home,/ tmp等等。我想我可以用链接做一些事情,也许安装到c:\ cygwin,然后只移动Program Files下的/ bin目录并创建一个硬链接?

有没有人遇到类似的情况并想出一个优雅的解决方案?这是Win 7 Enterprise。

1 个答案:

答案 0 :(得分:1)

在Cygwin 1.7.34之前,解决这些问题需要相当多的箍跳,¹但现在很容易:

  1. 如果您尚未安装Cygwin,请执行此操作.²

    如果您已经安装了Cygwin,并且您在1.7.34之前开始使用Cygwin版本,请移开/etc/passwd/etc/group,然后升级到当前版本。

  2. 启动Cygwin终端。

  3. 在您喜欢的文本编辑器中打开Cygwin的/etc/nsswitch.conf。添加如下所示的行:

    db_home: /%H
    
  4. 就是这样!当您下次重新启动Cygwin时,它会将您的Windows配置文件目录视为您的Cygwin主目录。这意味着您将有一些有用的子文件夹,如DesktopDownloads作为子文件夹,匹配OS X和许多桌面Linux的工作方式。

    有些人可能不希望将这两个目录视为等效目录。您可以选择任何您喜欢的路径方案。例如,您可以将其更改为/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的/etc/nsswitch.conf解析器似乎可以处理DOS行结尾。

    5. Cygwin DLL正在从%HOMEDRIVE%%HOMEPATH%环境变量构建此路径,然后将其转换为POSIX格式。