我正在尝试以自动化方式在多台 Windows Server 2003 机器上设置 OpenSSH。我的目标是能够使用安装在网络驱动器上的单个版本的 Cygwin 来完成此操作,而不是在每台机器上手动安装它。
我可以正常安装 cygwin,但是当我尝试运行 ssh-host-config 时开始遇到问题。
$ ssh-host-config
bash: /usr/bin/ssh-host-config: Permission denied
好吧,没什么大不了的。我把 /usr/bin 中的所有内容都 chmod 555。
$ ssh-host-config
/usr/share/csih/cygwin-service-installation-helper.sh: line 689: /usr/bin/awk: cannot execute binary file
这是我被困住的地方。正在运行
petters@BTSOTTSTBAL507 /usr/bin
$ awk
bash: /usr/bin/awk: cannot execute binary file
以下是 awk 的内容:
!<symlink>gawk.exe
值得注意的是,我可以正常运行 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
换句话说,所有权数据被搞乱了。
我的印象是 cygwin 1.7.x 是可移植的,但可能不是?任何帮助都值得感激!
答案1
您面临 2 个问题。
首先是 Cygwin 的权限和所有权的 posix-y 视图与 Windows 之间的区别。您需要阅读在 Cygwin 中使用 Windows 安全性。????????
显示 是因为这些文件的所有者是本地计算机上未定义的用户。如果您在域中,您可能可以运行mkpasswd
和mkgroup
并使用输出来创建适当的/etc/passwd
和/etc/groups
。但是,它们将仅包含创建它们的主机的特定于计算机的帐户。
这恰好引出了第二个问题:
Cygwin 将其大部分配置设置保存在 或 下/etc
。因此,/etc
跨多台主机共享非常困难。同样,大多数 Cygwin 进程将假设/tmp
并且/var
也是特定于机器的。
你可能c:\cygwin\etc
通过在每台机器上创建本地目录(例如: 、c:\cygwin\tmp
和)来实现这一点。c:\cygwin\var
您需要用预期的文件和目录填充 etc 和 var。然后您需要创建一个 /etc/fstab,将所有这些文件和目录整合到一个完整的文件系统中。您需要阅读映射路径名了解更多信息。
还要记住,只要您的网络驱动器不可用,任何正在运行的 Cygwin 进程都可能会挂起、崩溃或出现异常行为。