【问题标题】:Best strategy for installing cygwin under restrictive IT policies?在限制性 IT 政策下安装 cygwin 的最佳策略?
【发布时间】:2014-10-31 01:27:48
【问题描述】:

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

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

【问题讨论】:

  • 类似的问题和答案在stackoverflow.com/questions/3343988/…。我不确定这是否是最好的,但答案是 6。
  • @HarryJohnston:你到底是什么意思?您是否期望用户空间 cygwin1.dll 提供真正的安全性或其他东西? Cygwin 只能使用它在平台上找到的机制。例如,Cygwin 文件可以通过 NTFS ACL 保护,操作系统内核将强制执行这些。
  • 其实没多久就发现了:“从 1.5.13 版本开始,Cygwin 开发人员不知道 cygwin dll 中有任何功能可以让用户获得权限或访问他们在 Windows 下无权访问的对象。”所以问题不存在了。
  • @HarryJohnston:Cygwin 1.5.13 是nearly a decade gone now。无论如何,我关于 Cygwin 纯粹是用户空间的观点是,你不能指望它强制执行诸如 read-only shared memory 之类的东西。共享内存位于所有 Cygwin 进程的内存空间中,因此 Cygwin DLL 不会强加动态链接到它的进程无法绕过的障碍。
  • @WarrenYoung:这是有道理的,不是吗?在 Windows 中,同一进程的不同部分之间从来没有任何安全性,AFAIK 对 UNIX 也是如此。我在谈论属于不同用户的进程之间的安全性。但这一切都没有实际意义,因为事实证明我的信息已经完全过时了。

标签: windows-7 cygwin group-policy


【解决方案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
    

就是这样!当您下次重新启动 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 形式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 2021-02-07
    相关资源
    最近更新 更多