编辑:

编辑:

这太奇怪了。以用户“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 身份进入并将权限更改为700、或任何内容,只要“用户”权限为 7,它就可以工作,并且我可以通过 CD 和 LS 访问目录和其中的文件744766

id g返回

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

编辑:

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

答案1

目录将要需要设置执行位才能进入。我不知道你测试了什么,但你不能进入一个没有执行位的目录,或者读取其中的文件:

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

答案2

目录需要执行权限才能cd进入。这是预期的行为。

chmod +x /path/to/dir/

答案3

为了使用 ls 或 cd 进入目录,您需要执行权限。如果您没有这些权限,您就无法真正检查内容并查看其中文件的权限,因此如果您无法 cat 它们,则很可能文件权限本身就是错误的。

目录权限 700 和文件权限 644 对我来说是完全可以接受的设置。

答案4

目录需要设置 x 位(对于目录,该位被视为搜索位)才能打开。因此我使用树,这样我就可以只设置文件夹,避免将所有文件设置为可执行文件的噩梦(树的选项是 -d List directories only.):

sudo tree -faid here_goes_your_directory xargs -L1 -I{} sudo chmod 755  "{}"

警告!!!您应该考虑到这一点:

  • 在根目录或系统目录上递归使用 chmod 或 chown/将破坏您的操作系统(实际上,在目录或系统目录上进行的任何递归操作/都是危险的)

  • 像那样设置批量权限不是一个好的安全做法

相关内容