当我通过 SSH 登录到 Win2008SP2(不是 R2)服务器时,遇到了一个奇怪的目录权限问题。当我在服务器上打开本地 cygwin shell 时,我可以执行以下操作:
myUser@myServer ~
$ cd /cygdrive/c/Windows/System32/inetsrv/
myUser@myServer /cygdrive/c/Windows/System32/inetsrv
$ cd config
myUser@myServer /cygdrive/c/Windows/System32/inetsrv/config
$
使用本地 cygwin shell 访问“config”目录没有任何问题。“myUser”也拥有访问该目录所需的所有权限。事实上,“myUser”是机器上的本地管理员。
通过本地 cygwin shell 列出配置文件夹的权限显示以下输出:
4 drwx------+ 1 SYSTEM SYSTEM 0 Aug 2 09:38 config
但是当我使用 SSH 客户端(在本例中是 Putty)登录服务器时,遇到了以下问题:
myUser@myServer ~
$ cd /cygdrive/c/Windows/System32/inetsrv/
myUser@myServer /cygdrive/c/Windows/System32/inetsrv
$ cd config
-bash: cd: config: Permission denied
它也没有通过 SSH 列出正确的权限:
0 drwxr-x--- 1 ???????? ???????? 0 Aug 2 09:38 config
当我使用任务管理器(通过远程桌面连接)查看服务器上正在运行的进程时,它显示所有 bash.exe 进程都在“myUser”帐户下运行,所以我不明白为什么我无法通过 SSH 访问该特定目录,但在本地 cygwin shell 中访问它却没有问题。
我使用的是 OpenSSH 5.9p1-1。我不确定 Cygwin 的版本是什么...我使用了 Cygwin 的最新 setup.exe(版本 2.738),但似乎找不到任何其他与 Cygwin 相关的版本号。
但我怀疑它与 SSH/Cygwin 有关,因为当我通过 SSH(使用相同的 OpenSSH/Cygwin 版本)从 Win2008SP2 服务器连接到本地 Win7 机器时,我可以毫无问题地访问 /cygdrive/c/Windows/System32/inetsrv/config 文件夹。
有人知道这个问题可能是什么吗?
答案1
原来是因为服务器上的 ssh 服务以本地“sshd_server”用户身份运行。尽管我以具有足够权限的域用户身份登录,但由于服务以 sshd_user 运行,访问目录被阻止(原因我不清楚)。
解决方案是在具有足够权限访问文件夹的域帐户下运行 ssh 服务,然后它就成功了。不过,我对这个解决方案并不完全满意,很想听听大家的意见