我从StackOverflow迁移了这个问题,因为它确实超出了他们一般喜欢的编程问题的范围,所以希望我能在这里find更适合的观众。
我已经在Windows Server 2008/64框中安装了Cygwin 1.7,以支持自动文件传输设置。 虽然基本安装一般按预期工作,但我有一个好奇的问题必须解决。
从Windows命令提示符通过sshlogin到服务器后,我对服务器的UNCpath执行“ls -l”,例如:
$ ls //servername
这将返回该服务器上的共享列表; 然而,一些共享列出没有“d”(目录)属性集 – Cygwin只看到他们作为常规文件。 因此,尝试切换到共享path失败,出现“不是目录”错误。 但是,反对这个共享名称的工作。
在某些情况下,共享名称和它的底层文件夹都包含一个空格,所以这是我的第一个嫌疑犯,但是同一台机器上还有其他共享,共享或文件夹名称中没有空格,performance出相同的行为。
这里是一个有代表性的ls命令的简单列表,实际的共享/服务器/所有者名称被replace为ShareNameN,servername或者UserName。 UserName是ssh用户会话的用户名。
$ ls -l //servername total 33636078380235 drwxrwxrwx+ 1 Administrators Domain Users 0 Nov 26 10:35 ShareName1 -rw-r--r-- 1 UserName Domain Users 18193726281664696 Apr 22 2009 ShareName2 -rw-r--r-- 1 UserName Domain users 18189229448232975 Aug 4 1909 Share Name3 $ ls -l //servername/ShareName2 //servername/ShareName2 $ cd //servername/ShareName2 -bash: cd: //servername/ShareName2: Not a directory $ ls //servername/"Share Name3" //servername/Share Name3 $ cd //servername/"Share Name3" -bash: cd: //servername/Share Name3: Not a directory
我已经尝试了一些引用的UNCpath名的其他排列,validation了共享和底层文件夹的权限,但到目前为止,没有运气。 用户通过实际的密码进行身份validation,而不是通过证书。
我可能会错过一些明显的东西,所以如果有人能看到我的方式的错误,我会非常感激!
编辑:我刚才观察到一个有趣的模式,可能是这个问题的一个因素
我刚刚注意到,那些表示除最近几个月以外的创builddate的那些股票(即一天中列出的时间而不是一年)也没有通过“ls”命令设置的目录属性。 所有列出时间的股票都具有设置的目录属性,并通过cd命令正常工作…
我已经确定了这个问题的原因,这要感谢好的ProcMon。 由于这些股票正在被列举,ProcMon揭示了试图打开/查询失败股票的“拒绝访问”,但是对那些有效的股票却是“成功”的。
用于ssh进入主题服务器的帐户没有读取有权访问的共享权限。 授予帐户对共享的读取权限解决了主题行为。