共享 Cygwin 安装

dpe*_*ers 5 windows ssh bash cygwin symlink

我正在尝试以自动化方式在一堆 Windows Server 2003 机器上设置 OpenSSH。我的目标是能够使用安装在网络驱动器上的单个版本的 Cygwin 而不是在每台机器上手动安装它。

我可以很好地安装 cygwin,但是当我尝试运行 ssh-host-config 时开始遇到问题。

$ ssh-host-config
bash: /usr/bin/ssh-host-config: Permission denied 
Run Code Online (Sandbox Code Playgroud)

好吧,没什么大不了的。我 chmod 555 一切都在 /usr/bin 中。

$ ssh-host-config
/usr/share/csih/cygwin-service-installation-helper.sh: line 689: /usr/bin/awk: cannot execute binary file
Run Code Online (Sandbox Code Playgroud)

这就是我卡住的地方。跑步

petters@BTSOTTSTBAL507 /usr/bin
$ awk
bash: /usr/bin/awk: cannot execute binary file
Run Code Online (Sandbox Code Playgroud)

下面是awk的内容:

!<symlink>gawk.exe
Run Code Online (Sandbox Code Playgroud)

请注意,我可以很好地运行 gawk.exe 并尝试使用 CYGWIN=winsymlinks 环境变量集安装 Cygwin。

我还注意到以下几点——

petters@BTSOTTSTBAL507 /usr/bin
$ ls -l
total 366592    
-rwxr-xr-x 1 ???????? ????????   54798 Feb  4 19:02 [.exe
-rwxr-xr-x 1 ???????? ????????   23566 May 18  2010 addftinfo.exe
-rwxr-xr-x 1 ???????? ????????  165806 May 18  2010 afmtodit
-rwxr-xr-x 1 ???????? ????????    1786 May 17  2010 apropos
-rwxr-xr-x 1 ???????? ????????   47118 Feb  4 19:01 arch.exe
-rwxr-xr-x 1 ???????? ????????    8206 Apr 29 00:43 ascii.exe
Run Code Online (Sandbox Code Playgroud)

换句话说,所有权数据被弄乱了。

我的印象是 cygwin 1.7.x 是可移植的,但也许不是?任何帮助表示赞赏!

小智 2

您面临 2 个问题。

首先是 Cygwin 的 posix-y 权限和所有权视图与 Windows 之间的差异。您需要阅读在 Cygwin 中使用 Windows 安全性。显示????????是因为这些文件归本地计算机上未定义的用户所有。如果您在域中,则可以运行mkpasswdandmkgroup并使用输出来创建适当的/etc/passwdand /etc/groups。但是,它们仅包含创建它们的主机的特定于计算机的帐户。

这很好地延续了第二个问题:

Cygwin 将其大部分配置设置保存在/etc. 所以/etc跨多个主机共享是非常困难的。同样,大多数 Cygwin 进程都会假设/tmp并且/var也是特定于机器的。

可以通过在每台计算机上创建本地目录来实现此目的,例如:c:\cygwin\etcc:\cygwin\tmpc:\cygwin\var。您需要使用预期的文件和目录填充 etc 和 var。然后,您需要创建一个 /etc/fstab,将所有这些内容整合到一个完整的文件系统中。您需要阅读映射路径名称以获取更多相关信息。

另请记住,只要网络驱动器不可用,任何正在运行的 Cygwin 进程都可能会挂起、崩溃或行为异常。