【问题标题】:Directory permissions for Cygwin SSH (Windows 7)Cygwin SSH (Windows 7) 的目录权限
【发布时间】:2016-06-27 14:41:27
【问题描述】:

我是 Linux 的粉丝,但由于 Linux 中的英特尔无线驱动程序不好,我不得不切换到 Windows 7。我已经在 Windows 中安装了 Cygwin,并想配置 SSH 以远程连接到我的笔记本电脑。

我用谷歌搜索发现information for installing openssh server on Win 7,但是运行ssh-host-config时出现以下错误:

bala@bala-PC ~ $ ssh-主机配置 是的 *** 信息:创建默认 /etc/ssh_config 文件 *** 查询:覆盖现有的 /etc/sshd_config 文件? (是/否)是 *** 信息:创建默认 /etc/sshd_config 文件 *** 信息:自 OpenSSH 3.3 起,权限分离默认设置为 yes。 *** 信息:但是,这需要一个名为“sshd”的非特权帐户。 *** 信息:有关权限分离的更多信息,请阅读 /usr/share/doc/openssh/READ ME.privsep。 *** 查询:是否应该使用权限分离? (是/否) 否 *** 信息:更新 /etc/sshd_config 文件 *** 警告:以下功能需要管理员权限! *** 查询:您想将 sshd 安装为服务吗? *** 查询:(如果已作为服务安装,请说“否”)(是/否)是 *** 查询:为守护进程输入 CYGWIN 的值:[] *** 信息:在 Windows Server 2003、Windows Vista 及更高版本上, *** 信息:SYSTEM 帐户无法设置其他用户的 ID——一种能力 *** 信息:sshd 需要。您需要拥有或创建特权 *** 信息:帐户。该脚本将帮助您做到这一点。 *** 警告:所有者和管理员需要 *** 警告:要有 .w。 /var/run 的权限。 *** 警告:以下是当前权限和 ACLS: *** 警告:drwxr-xr-x 1 巴拉无 0 2010-01-17 22:34 /var/run *** 警告:# 文件:/var/run *** 警告:# 所有者:bala *** 警告:# 组:无 *** 警告:用户::rwx *** 警告:组::r-x *** 警告:其他:r-x *** 警告:掩码:rwx *** 警告: *** 警告:请更改用户和/或组所有权, *** 警告:/var/run 的权限或 ACL。 *** 错误:/var/run 目录有问题。退出。

此文件夹的权限显示为只读(仅适用于此文件夹),以灰色勾选。我试图取消选中,但再次打开属性后,该框再次被选中。有没有办法改变这个文件夹的权限?

【问题讨论】:

  • 跟window UAC有关系吗?如果您使用管理员运行 Cygwin,会发生这种情况吗?
  • 我实际上在我的机器上禁用了 UAC。即使使用“以管理员身份运行”也会发生这种情况
  • 这应该在超级用户上吗?它与编程无关。
  • 我实际上是一名开发人员,而不是管理员。
  • 以防万一其他人在寻找故障排除技巧时遇到这个古老的 cygwin + sshd 问题:您可能应该寻找其他地方。对“查询:是否应该使用特权分离?(是/否)否”(以及将 sshd 作为服务运行为“是”)回答“否”意味着任何尝试进行这项工作都可能是徒劳的。第一:我不知道你为什么不使用权限分离;其次,如果你不这样做,我猜这个选项不会在不同的 Windows 版本/配置中得到很好的测试/支持/记录。

标签: windows-7 permissions ssh cygwin openssh


【解决方案1】:

很抱歉解开这么老的帖子,但是当我在谷歌上搜索这个特定问题时总是会出现这个问题。

几个月后,我终于找到了解决办法。当我设置 cygwin 时,我没有在 cygwin 中正确创建我的用户和组帐户。执行此操作的主要方法是运行:

mkpasswd -l > /etc/passwd
mkgroup -l > /etc/group

如果您使用域用户和密码登录,您可以这样做:

mkpasswd -l -d > /etc/passwd 
mkgroup -l -d > /etc/group

或者,如果您拥有像我这样的庞大网络,您可能并不真正想要这样。另一种方法是只使用您的本地用户和组以及您当前登录的任何用户:

mkpasswd -l > /etc/passwd
mkpasswd -c >> /etc/passwd
mkgroup -l > /etc/group
mkgroup -c >> /etc/group

完成此操作后,我终于能够正确运行 ssh-host-config 来创建服务。

【讨论】:

  • 嗨,马修,我尝试了这些选项,但仍然不允许我提供“空白密码”
  • 此建议自 Cygwin 1.7.35 起已过时,其中获取用户名/组信息的默认方式是来自本地 Windows 数据库,SAM 或 AD,具体取决于您的系统是否在 Windows 域中或不。除非您非常需要能够通过 /etc 文件覆盖 SAM/AD,否则您现在根本不应该拥有这些文件。见Chapter 3 in in the Cygwin User's Guide
【解决方案2】:

我在 Windows 7 x64 和 sshd 上运行 cygwin 1.7。我不记得我在运行 sshd_config 时遇到过这个错误,但我只是查看了我的 /var/run 目录,它设置为 777。

在 cygwin shell 中试试这个chmod 777 /var/run

【讨论】:

  • 我也试过这个选项。 bala@bala-PC ~ bala@bala-PC ~ $ chmod 777 /var/run bala@bala-PC ~ $ ls -l /var 总计 0 drwxr-xr-x 1 bala 无 0 2010-01-17 22:34缓存 drwxr-xr-x 1 bala 无 0 2010-01-17 22:35 cron drwxr-xr-x 1 bala 无 0 2010-01-23 11:46 空 drwxr-xr-x 1 bala 无 0 2010-01- 17 22:34 lib drwxr-xr-x 1 bala 无 0 2010-01-17 22:32 log drwxr-xr-x 1 bala 无 0 2010-01-17 22:34 运行 drwxr-xr-x 1 bala 无 0 2010-01-17 22:34 tmp -rw-r--r-- 1 巴拉无 0 2010-01-23 11:44 utmp
  • 抱歉,输出的格式似乎不正确。我也尝试过 -R 777 选项。
  • 对我有用。上面的 chmod 命令是无操作的。
【解决方案3】:

我自己在这方面遇到了很多麻烦。我发现默认安装步骤可以正常工作,前提是我:

  1. 使用“以管理员身份运行”选项以管理用户身份启动 Cygwin shell。
  2. 已禁用 UAC。
  3. 禁用实时病毒防护。

完成这些步骤后,默认安装步骤为:

  1. 从 Cygwin 安装程序安装“openssh”。
  2. 使用“以管理员身份运行”选项以管理用户身份启动 Cygwin shell。
  3. 从 Cygwin shell 运行“ssh-host-config”。
  4. 权限分离:是
  5. 新的本地帐户“sshd”:是
  6. 将 sshd 安装为服务:是
  7. CYGWIN 值:ntsec tty
  8. “cyg_server”的不同名称:否
  9. 创建新的特权用户帐户“cyg_server”:是
  10. 设置“cyg_server”密码并妥善保管
  11. net start sshd

之后,在 Windows 7 Professional 和 Home 上一切似乎都正常。

如果您的 Cygwin sshd 安装已经失败,最好完全卸载并重新开始。

如果需要,这里是 Cygwin 卸载说明:http://cygwin.com/faq/faq.html#faq.setup.uninstall-all

【讨论】:

    【解决方案4】:

    我首先必须删除损坏的安装:

    cygrunsrv --remove sshd
    rm -rf /var/log/sshd* /etc/ssh_host* /etc/sshd_config /var/empty
    

    然后生成上面提到的passwd & group:

    mkpasswd -l > /etc/passwd
    mkgroup -l > /etc/group
    

    然后我跑了:

    ssh-host-config -y
    cygrunsrv --start sshd
    

    最后“setuid failed”消息消失并且登录成功。

    【讨论】:

      【解决方案5】:

      在 cygwin shell 中,确保您是管理员:

      takeown /F "C:\cygwin" /R
      icacls "C:\cygwin" /grant Everyone:\(F\) /T
      icacls "C:\cygwin"
      chmod 777 -R "c:\cygwin"
      

      【讨论】:

      • 这对我来说也是无操作的。我认为为什么这对我们中的某些人不起作用的答案必须在于 /var/run 的 Windows 权限。 什么都没有 但是,我所做的没有任何效果。我已经删除了 /var/run 上的 all 权限,并创建了一个完全开放的权限。纳达。
      • 这适用于win7,cygwin64:setfacl -b ~/.ssh/config; chmod 0600 ~/.ssh/config;来自superuser.com/questions/348694/…
      【解决方案6】:

      在 Windows 资源管理器中,对于文件夹 /var

      属性。
      安全性。
      添加具有完全控制权的组管理员 文件夹和子文件夹。

      它对我有用。

      【讨论】:

        【解决方案7】:

        只有当我在 NTFS 类型的硬盘上安装 Cygwin 时,我才能成功运行 ssh-host-config 脚本。当我将 Cygwin 安装在 exFAT 类型的闪存驱动器上时,ssh-host-config 脚本不起作用。

        【讨论】:

          【解决方案8】:

          我遇到了同样的问题。我相信我的问题是因为我有一个自定义 /etc/fstab 文件,我在其中使用“noacl”选项安装根文件夹。以下是我解决问题的方法:

          1. 将自定义的 /etc/fstab 移开:

             mv /etc/fstab /etc/fstab.bak
            

            或者,您可以编辑 /etc/fstab 文件并删除 noacl 选项。

          2. 关闭所有 Cygwin bash 窗口和任何其他 Cygwin 进程或服务。如果您有任何 Cygwin 进程正在运行,它会使用旧的 /etc/fstab 设置来挂载。

          3. 启动一个新的 Cygwin bash 窗口。

          4. 您可能需要运行以下命令。

            chmod +r /etc/passwd
            chmod o+x /var
            chmod +w /var/run
            
          5. 双手合十,运行 ssh-host-config,它现在应该可以正常完成了。

          6. 如果您在第 1 步中移动了 /etc/fstab,现在可以将其移回:

             mv /etc/fstab.bak /etc/fstab
            
          7. 如果您在首次安装 Cygwin 后创建了新用户,请更新 /etc/passwd,否则这些用户可能无法通过 ssh 登录:

            mkpasswd -l > /etc/passwd
            
          8. 另外,转到 Windows 防火墙,并允许 C:/cygwin/usr/sbin/sshd.exe 和 C:/cygwin/usr/sbin/sftp-server.exe

          【讨论】:

            【解决方案9】:

            对于 windows 用户通过右键单击快捷方式运行“Cygwin Terminal”并以管理员身份运行....

            现在从 Cygwin 终端运行“ssh-host-config”...它肯定会工作。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2015-06-05
              • 1970-01-01
              • 2012-07-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多