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\etc、c:\cygwin\tmp和c:\cygwin\var。您需要使用预期的文件和目录填充 etc 和 var。然后,您需要创建一个 /etc/fstab,将所有这些内容整合到一个完整的文件系统中。您需要阅读映射路径名称以获取更多相关信息。
另请记住,只要网络驱动器不可用,任何正在运行的 Cygwin 进程都可能会挂起、崩溃或行为异常。