为什么我不能进入一个用户不是所有者组的目录

mdo*_*fe1 6 permissions directory

我在我的服务器上专门为外部应用程序创建了一个用户。我希望应用程序能够通过 ssh 进入用户帐户并通过 cd 进入一个目录。但是,当我尝试这样做时,它一直说许可被拒绝。我将文件夹的权限设置为“访问”,认为这可以解决问题。

这是文件夹权限的屏幕截图:

在此处输入图片说明

是什么赋予了?

Kaz*_*lfe 7

您的父文件夹也必须可读(在某种意义上)。

例如,我有一个文件test夹,test2里面有另一个文件夹。权限如下:

drwxrwx---   3 kazwolfe kazwolfe     4096 Dec 30 13:18 test/
drwxrwxr-x   2 kazwolfe nogroup      4096 Dec 30 13:18 test/test2
Run Code Online (Sandbox Code Playgroud)

如您所见,nobody用户( 的成员nogroup)具有 的权限test/test2,但无法cd进入:

cd: test/test2: Permission denied
Run Code Online (Sandbox Code Playgroud)

为什么?简而言之,因为nobody用户无权读取test. 因此,test即使他们有权限,他们也无法访问 的任何子目录或子文件!

为了解决这个问题,我需要确保chmod a+x test设置了任何父文件夹上的执行位 ( ),以便我可以遍历所需的文件夹:

??[13:35:22]?[nobody@ArcticWolf]
???> ~ $ cd test
??[13:35:24]?[nobody@ArcticWolf]
???> test $ ll
ls: cannot open directory '.': Permission denied
??[?]?[13:35:27]?[nobody@ArcticWolf]
???> test $ cd test2
??[13:35:31]?[nobody@ArcticWolf]
???> test2 $ touch hello
??[13:35:34]?[nobody@ArcticWolf]
???> test2 $ ll
total 8
drwxrwxr-x 2 kazwolfe nogroup  4096 Dec 30 13:35 ./
drwxrwx--x 3 kazwolfe kazwolfe 4096 Dec 30 13:22 ../
-rw-r--r-- 1 nobody   nogroup     0 Dec 30 13:35 hello
Run Code Online (Sandbox Code Playgroud)

请注意,在文件夹上设置执行位允许用户访问他们有权访问的文件夹内的任何内容,并且知道存在。有关文件夹权限的更深入视图,请参阅U&L 上的此答案