涉及 ssh、Cygwin、Windows 7 和 .sh 文件的奇怪权限错误

涉及 ssh、Cygwin、Windows 7 和 .sh 文件的奇怪权限错误

我是 Cygwin 和 ssh 的新手,在处理文件权限时遇到了问题。在计算机 WORKER1 上,我尝试通过 ssh 进入计算机 WORKER2,然后从那里在 WORKER1 上运行 .sh 文件。从下面的输出中我可以看出,ls -l 显示应该有权限执行所有操作(我知道这些权限不好,但我疯狂地试图弄清楚为什么我会收到此权限错误)。

root@Worker1 ~
$ ssh WORKER2
Last login: Tue Jan 31 10:51:54 2012 from worker1

root@Worker2 ~
$ cd //WORKER1/Users/Public/pMatlab/MatlabMPI/Examples/MatMPI

root@Worker2 //WORKER1/Users/Public/pMatlab/MatlabMPI/Examples/MatMPI
$ sh Dos_Commands.WORKER2.1.sh
sh: Dos_Commands.WORKER2.1.sh: Permission denied

root@Worker2 //WORKER1/Users/Public/pMatlab/MatlabMPI/Examples/MatMPI
$ ls -l
total 28
-rwxrwxrwx+ 1 Administrators None   2 Jan 31 11:01 Dos_Commands.WORKER1.0
-rwxrwxrwx+ 1 Administrators None 127 Jan 31 11:01 Dos_Commands.WORKER2.1
-rwxrwxrwx+ 1 Administrators None 250 Jan 31 11:01 Dos_Commands.bat
-rwxrwxrwx+ 1 Administrators None 636 Jan 31 11:01 MPI_COMM_WORLD.mat
-rwxrwxrwx+ 1 Administrators None  97 Jan 31 11:01 MatMPIdefs1.m
-rwxrwxrwx+ 1 Administrators None 199 Jan 31 11:01 p0_p0_t10000_buffer.ma
-rwxrwxrwx+ 1 Administrators None 199 Jan 31 11:01 p0_p1_t10000_buffer.ma
-rwxrwxrwx+ 1 Administrators None   0 Jan 31 11:01 p0_p1_t10000_lock.mat

两台计算机都运行 Windows 7 64 位,我在每台计算机上都运行了最新版本的 Cygwin 和 OpenSSH。WORKER2 上运行的 sshd 也是来自 Cygwin 的。安装 sshd 时,我能够使其正常运行的唯一方法是在运行 ssh-host-config 时对特权分离回答“否”,对作为服务安装回答“是”。我使用的是公钥 RSA 身份验证。我尝试将 //WORKER1/Users/Public/pMatlab/ 安装为网络驱动器并以此方式访问它,但这也无济于事。有人知道可能出了什么问题吗?谢谢!

编辑:我忘了说,我的 Windows 网络共享设置允许我所看到的所有内容。此外,我的公共文件夹及其中的文件夹似乎都设置为只读(在右键单击->属性菜单中),但其中的文件并非如此。尝试在属性菜单中更改此设置没有任何作用 - 当我关闭只读时,当我重新打开属性菜单时,它又重新打开了。我尝试通过在 cmd.exe 中运行 attrib -r C:\Users\Public 来更改此设置,但这也没有任何作用。

最后,当我在本地运行 .sh 文件时,当我尝试从计算机 WORKER2 上的 Windows GUI 访问它时,或者当我从 WORKER2 ssh 到它本身然后尝试访问它时,我都没有收到权限被拒绝的错误。仅当我从 WORKER1 ssh 到 WORKER2 然后尝试从那里访问 WORKER1 上的文件时,才会出现权限错误。

最终编辑:问题已解决。原来文件夹已加密!不知道为什么。出于某种原因,它就是这样从 zip 文件中出来的。

答案1

欢迎来到 1989 年美妙的新 Unix 世界!

那些好心的 TRUSIX 人员——就在今年——为命令定义了一个扩展,以便在权限信息并非故事的全部ls时以视觉方式指示。该扩展是权限标志后面的一个字符。如您所见,您的输出到处都是字符。这意味着您的文件有这些新奇的rwxrwxrwx+ls+自主访问控制列表TRUSIX 人对此非常兴奋。因此,您对文件的访问权限是不是您必然可以从这九个权限标志中推断出什么。

为了弥补旧式 Unix 工具在面对新式 ACL 时的这些局限性,TRUSIX 人员还想出了几个新命令,getaclsetacl。前者用于查看这些 ACL。我听到有人抱怨说,人们可能更喜欢getfaclsetfacl作为名称。有传言称,微软和 IBM 的 OS/2 版本 3 正在规划中,最终可能会使用命名的命令来查看 ACL caclsxcacls这些命令将甚至更好而不是getfacl他们的“新技术”操作系统,因为他们不会通过 3 位 Unix 镜头来呈现它们,而是它们在所有方面的真实情况标准和特定权利 drctpoxfew两个帐户机器名称 荣耀。

在 20 世纪 90 年代,每个人都必定会成为 Unix 世界中的一员,而这个想法必将像野火一样迅速流行起来。很有可能,20 年后,9 位权限将显得过时,ACL 将成为常态,而即使是那些仍然关注九个权限标志的老古董也会知道它们。 ☺

进一步阅读

相关内容