即使权限正确,“权限被拒绝”将CD转换为目录

Modified on: Sat, 20 Jul 2019 12:40:03 +0800

这太奇怪了。以用户'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。如果我尝试cat目录中的任何文件

,我也会被拒绝权限

如果我以root身份进入并将权限更改为700744766或任何内容,只要'user'权限是7它工作,我可以CD和LS内的目录和文件。

id g返回

uid=504(g) gid=506(g) groups=506(g)

编辑:

我已将这些权限完全复制到另一个相同的框中,没有任何问题。我可以cd到没有执行权限的目录中。

作者:,Smudge

最佳答案

目录要求设置执行位,以便您输入它。我不知道你测试了什么,但你不能进入没有执行位的目录,或者读取其中的文件:

$ 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中文件所需的所有权和权限模式的说明。

作者:,wzzrd

相关问答

添加新评论