没有x权限访问目录中的文件?

狮子座

我在理解目录的执行权限的含义时遇到了一些麻烦。我是否正确理解,即使目录中的内容赋予了用户特定权限,也无法访问用户没有x权限的目录中的任何内容?

还是用户仍然可以直接访问目录中的内容,而只是无法列出目录中的内容?

(我真正要了解的是,如果没有x权限,则其他用户无法访问该目录。)

艾美·贾(Amey Jah)

目录的x位也称为搜索位。实际上,它使您能够访问文件夹内列出的文件的索引节点。因此,如果要访问/home/user/foo/bar.txt,则必须在bar.txt的每个祖先上都具有搜索访问权限

从页面报价

由于目录的使用方式与常规文件不同,因此权限的工作方式略有不同(但仅略有不同)。尝试列出目录中的文件需要该目录的读取权限,而不是其中的文件的读取权限。尝试将文件添加到目录,从目录中删除文件或重命名文件,所有操作都需要对该目录具有写许可权,但是(可能令人惊讶地)不需要其中的文件具有写许可权。执行权限不适用于目录(目录也不能是程序)。但是,该许可权位已用于其他目的的目录。

必须具有目录的执行权限才能将其cd入目录(即,使某个目录成为当前的工作目录)。

在目录上需要执行以访问其中文件的inode信息。您需要使用它来搜索目录以读取其中文件的索引节点。因此,通常将目录的执行许可权称为搜索许可权。

在许多常见情况下,需要搜索权限。考虑命令cat / home / user / foo。该命令显然需要文件foo的读取权限。但是,除非您对/,/ home和/ home / user目录具有搜索权限,否则cat无法找到foo的索引节点,因此无法读取它!您需要在每个祖先目录上具有搜索权限才能访问任何文件(或目录)的索引节点,除非您可以访问文件的索引节点,否则您将无法读取文件。

请在文件权限目录部分中阅读更多内容。

更新:狮子座提出了一个很好的问题。如果我们知道索引节点,那么我们可以从未设置x位的目录访问文件吗?我相信,我们不应该这样做。我没有通过c程序对其进行测试,而是使用了一些方便的bash命令对其进行确认。

user@user-desktop:~/test$ ls -lart
total 12
drwxr-xr-x 49 user user 4096 2011-11-30 22:37 ..
drwxr-xr-x  3 user user 4096 2011-11-30 22:37 .
drwxr-xr-x  2 user user 4096 2011-11-30 22:38 level1
user@user-desktop:~/test$ ls -lart level1/
total 12
drwxr-xr-x 3 user user 4096 2011-11-30 22:37 ..
drwxr-xr-x 2 user user 4096 2011-11-30 22:38 .
-rw-r--r-- 1 user user    8 2011-11-30 22:38 file1
user@user-desktop:~/test$ stat level1
  File: `level1'
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 808h/2056d  Inode: 95494       Links: 2
Access: (0755/drwxr-xr-x)  Uid: ( 1000/    user)   Gid: ( 1000/    user)
Access: 2011-11-30 22:46:16.576702105 +0530
Modify: 2011-11-30 22:38:12.386701913 +0530
Change: 2011-11-30 22:46:08.876702102 +0530
user@user-desktop:~/test$ stat level1/file1 
  File: `level1/file1'
  Size: 8           Blocks: 8          IO Block: 4096   regular file
Device: 808h/2056d  Inode: 60775       Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/    user)   Gid: ( 1000/    user)
Access: 2011-11-30 22:38:19.846701917 +0530
Modify: 2011-11-30 22:38:16.366701915 +0530
Change: 2011-11-30 22:38:16.366701915 +0530
user@user-desktop:~/test$ chmod -x level1
user@user-desktop:~/test$ stat level1/file1 
stat: cannot stat `level1/file1': Permission denied
user@user-desktop:~/test$ ls -lart level1/
ls: cannot access level1/..: Permission denied
ls: cannot access level1/.: Permission denied
ls: cannot access level1/file1: Permission denied
total 0
-????????? ? ? ? ?                ? file1
d????????? ? ? ? ?                ? ..
d????????? ? ? ? ?                ? .
user@user-desktop:~/test$ cat level1/file1
cat: level1/file1: Permission denied
user@user-desktop:~/test$ find . -inum 95494
./level1
user@user-desktop:~/test$ find . -inum 60775
user@user-desktop:~/test$ find ./level -inum 60775
find: `./level': No such file or directory
user@user-desktop:~/test$ find ./level1 -inum 60775

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在目录中没有设置x权限的情况下在目录中创建文件:如何?

在AFS文件系统中,为什么我无法访问某些我具有rx权限的目录,而又无法访问一些我没有rx权限的目录?

在没有根访问权限的情况下在etc目录中创建符号链接

更改没有根访问权限的用户主目录

在没有指定权限的情况下查找目录中的所有文件

如果仍然没有人可以访问/查看目录,那么设置单个文件权限有什么意义呢?

为什么我不能在具有组写访问权限的目录中创建文件?

在NFS挂载上没有权限创建的文件/目录

如果没有足够的访问权限,如何删除垃圾箱中的文件?

Linux中目录的访问权限

如何转义没有访问权限的文件夹

您当前没有访问此文件夹的权限

ls: 无法访问 '/dev/binder': Anbox 中没有这样的文件或目录

没有管理员访问权限,但需要将文件复制到Windows文件夹Windows 8.1中

目录中没有这样的文件

主目录中没有“ .cmake”文件

将组访问权限更改为目录以及所有子目录和文件

在目录中创建文件之前检查目录中的写访问权限

PHP-FPM:nginx / error.log中的“没有此类文件或目录”错误。路径或权限问题?

错误:ENOENT:没有那个文件或目录,访问

ls: 无法访问 'PATH=./': 没有那个文件或目录

在ubuntu中没有root访问权限的puppet apply命令

删除当前目录中具有000权限的文件

如果您的用户没有该目录的权限,您仍然可以访问当前目录(或根目录)吗?

如何更改目录/所有子目录中所有文件的x00权限?

无法访问“ xampp-linux-x64-1.8.3-1-installer.run”:没有这样的文件或目录

linux cmd如何删除目录所有者没有任何权限的文件夹中的所有文件,读取,写入,执行

具有+ x权限的目录,没有它的父母。什么时候有用?

在用户的计算机上,如何从用户没有访问权限的网络共享中检索文件