Windows 7 在严格的IT政策下安装cygwin的最佳策略?

Windows 7 在严格的IT政策下安装cygwin的最佳策略?,windows-7,cygwin,group-policy,Windows 7,Cygwin,Group Policy,我的组织有一个有效的组策略,只允许可执行程序驻留在Program Files(或Program Files X86)目录下。显然,普通用户无法写入这些目录。我有访问本地管理员权限,所以如果我想,我可以在那里安装东西。但是当然,把整个cygwin树放在那里是没有意义的,因为用户需要能够写到/home、/tmp等等。我想我可能可以用链接做些什么,也许可以安装到c:\cygwin,然后只移动程序文件下的/bin目录,并创建一个指向它的硬链接 有没有人遇到过类似的情况并提出了一个优雅的解决方案?这是Wi

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


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

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

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

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

  • 启动Cygwin终端

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

    db_home: /%H
    
  • 就这样!下次重新启动Cygwin时,它会将您的Windows配置文件目录视为Cygwin主目录。⁵ 这意味着您将拥有有用的子文件夹,如
    桌面
    下载
    作为子文件夹,这与OSX和许多桌面Linux的工作方式相匹配

    有些人可能不希望将这两个目录视为等效目录。您可以选择任何您喜欢的路径方案。例如,您可以将其更改为
    /cygdrive/c/Users/%U/cygwin
    ,将cygwin主文件夹放入Windows配置文件目录的
    cygwin
    子目录中

    Cygwin的这一新功能非常强大和实用。例如,如果愿意,可以通过AD更改Cygwin用户主目录。有关详细信息,请参阅该文档

    您可能还想重新排列Cygwin路径方案的一些其他元素。您可以通过编辑文件来执行此操作。您可能希望将
    /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包存储库中的大多数软件都来自这个世界,因此您可以指望它在这样的方案下正常运行


    脚注:

  • 将告诉您如何使用旧版本的Cygwin执行相同的操作

  • Cygwin不关心您在哪里安装它,因此如果默认设置不适用于您,请随意更改它。一些想法:

    • C:\ProgramFiles\Cygwin
    • C:\Users\jeremy\Cygwin
    • D:\cygwin
    Cygwin将在后续更新中记住您的选择

  • 如果不将这些文件移开,它们会干扰我们上面构建的解决方案。Cygwin的这一部分非常复杂,值得一试。提示:)

  • 默认情况下,Cygwin安装一个精简版的Vim文本编辑器

    如果您不喜欢
    vi
    ,Cygwin包存储库中还有许多其他文本编辑器

    如果您喜欢
    vi
    ,我建议安装完整版本的Vim,然后将
    别名vi=Vim
    添加到
    ~/.bashrc

    您还可以使用本机Windows GUI文本编辑器。Cygwin的
    /etc/nsswitch.conf
    解析器似乎可以处理DOS行的结尾

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


  • 类似的问题和答案也在讨论中。我不确定这是不是最好的,但安瑟的得分是6分。@HarryJohnston:你这到底是什么意思?您希望用户空间
    cygwin1.dll
    提供真正的安全性还是什么?Cygwin只能使用它在平台上找到的机制。例如,Cygwin文件可以通过NTFS ACL进行保护,操作系统内核将实施这些保护。事实上,很快就发现了这一点:“从1.5.13版开始,Cygwin开发人员不知道Cygwin dll中有任何功能允许用户获得特权或访问他们在Windows下无权访问的对象。”所以问题不再存在。@HarryJohnston:Cygwin 1.5.13是。不管怎样,我认为Cygwin纯粹是一个用户空间,你不能指望它强制执行,比如。共享内存位于Cygwin进程的所有内存空间中,因此Cygwin DLL不会设置任何障碍,使动态链接到它的进程无法绕过。@Warrenyong:这很合理,不是吗?在Windows中,同一进程的不同部分之间从来没有任何安全性,而且UNIX也是如此。我说的是属于不同用户的进程之间的安全性。但这一切都没有意义,因为事实证明我的信息已经完全过时了。