这太奇怪了.以用户’g’登录到
Linux(RHEL)框,执行ls -lah演示
drwxrwxrwx 6 g g 4.0K Jun 23 13:27 . drwxrw-r-x 6 root root 4.0K Jun 23 13:15 .. -rwxrw---- 1 g g 678 Jun 23 13:26 .bash_history -rwxrw---- 1 g g 33 Jun 23 13:15 .bash_logout -rwxrw---- 1 g g 176 Jun 23 13:15 .bash_profile -rwxrw---- 1 g g 124 Jun 23 13:15 .bashrc drw-r----- 2 g g 4.0K Jun 23 13:25 .ssh
因此组’g’/中的用户’g’应该/能够读取和写入.ssh目录但是如果我做ls -lah .ssh /我得到ls:.ssh /:Permission denied.如果我尝试捕获目录中的任何文件,我也会被拒绝权限
如果我以root用户身份进入并将权限更改为700,744,766或任何内容,只要“用户”权限为7就可以正常工作,我可以对其中的目录和文件进行CD和LS.
id g返回
uid=504(g) gid=506(g) groups=506(g)
编辑:
我已将这些权限完全复制到另一个相同的框中,没有任何问题.我可以cd到没有执行权限的目录.
解决方法
该目录将需要设置执行位,以便您输入它.我不知道你测试了什么,但你不能在没有执行位的情况下进入目录,或者读取其中的文件:
$mkdir foo $echo "baz" > foo/bar $chmod 660 foo $cd foo bash: cd: foo: Permission denied $cat foo/bar cat: foo/bar: Permission denied
也就是说,除非您的进程具有CAP_DAC_OVERRIDE POSIX功能集(如root),它允许您输入没有设置可执行位的目录,即iirc.
基本上,你应该试着让你的.ssh目录保存在700,其中的所有内容保存在600,只是为了安全起见. ssh手册页为每个文件提供了关于〜/ .ssh中文件所需的所有权和权限模式的说明.