只有写权限的文件夹是没有用的吧?


10

在Linux上工作了多年之后,我发现自己有一些空闲时间,因此我决定重温一些基础知识。因此,我重新阅读了有关权限的内容(无需检查源代码),以及有关文件夹的特殊情况,并提出了一种新的(至少对我来说...)考虑文件夹权限的方法(针对特定用户/组/其他):我想象一个文件夹有两个表,就像这样:

filename | inode    
foo      | 111  
bar      | 222 

权限意味着可以阅读(列表)表的左栏中,写入权限对应于添加和删除条目表,和执行权限对应于能够从文件名到inode的转换; 即,您可以访问文件夹的内容。

我做了一些实验,结果都与我的“世界观”保持一致,但似乎无法避免一个结论:拥有权限的文件夹d-w-------完全没有用。详细说明:您无法列出其内容,无法读取其中存在的任何文件(因为无法将名称转换为inode),不能删除或重命名或添加文件,因为这又意味着翻译,甚至不能添加硬链接(因为我想这是指添加名称和索引节点号,这意味着您将知道两者,这又又使您怀疑,这违反了取消执行权限的目的) 。当然,如果有内部的一个这样的文件夹的文件,那么你就不能删除该文件夹或者,因为你不能删除其内容。

所以...我想问两个问题:

  1. 我的这个比喻是正确的,还是大错了?
  2. 不管以前的答案,有没有任何地方具有权限的文件夹描述是合适的情况呢?

3
可能不是每个组合都有用。例如,在英语中,我们有单词,这些单词是由字母组成的,并非所有组合都组成有效的单词。例如aoeuidhtns
ctrl-alt-

这样您不能创建文件吗?您请求文件系统空间和inode,并在目录表中写入name和inode之后。您应该只有一个问题,即在同一目录中有两个具有相同名称但不同inode的文件...
Hastur 2014年

@Hastur:我也这么认为,但是等到mkdir foo ; chmod 200 foo ; touch foo/bar我得到touch: cannot touch ‘foo/bar’: Permission denied。即使foo / bar已经存在,也会发生这种情况。我正在bash(Arch Linux)中进行测试。
2014年

我的错是我以为您是从源代码系统重写的...我们不能在同一目录中包含 两个名称相同的文件,因此逻辑上不允许创建该文件。
Hastur 2014年

是的,它没有用。索引节点的解析度也需要“ x”和“ r”,因此在目录中,即使单个“ rw”也没有用。
peterh-恢复莫妮卡2014年

Answers:


3

您的理解非常正确。一种更好的方式去思考执行权限的是,它可以让你做的事情,在该目录中的文件或目录名(不仅仅是阅读本身的名称等)。这些事情大多数涉及将名称转换为索引节点,但是还包括创建新名称和删除现有名称。

因此,没有执行该目录的写权限就毫无用处,因为如果您无法访问其中的文件,则实际上无法写入任何内容。


1
  1. 我的这个比喻是正确的,还是大错了?

我认为这是正确的,您需要wx权限才能写入文件夹。

  1. 与先前的答案无关,是否存在具有上述权限的文件夹合适的情况?

您可能有一个在文件夹中写入信息的进程,而另一个进程正在使用它,但是您需要防止写入器读取该位置存储的其他信息。

前面描述的情况在自动速度执行装置中很有用。该部门必须通过验证程序,州官员必须将掺假的可能性降到最低。某些自动速度执行装置具有外部sd存储卡,系统在其中存储违规寄存器。但是它也可以存储一个“魔术”配置文件,该文件会非法更改已验证单元的行为。因此,写入违规寄存器的过程必须不能从sd存储卡读取任何内容。

这是一个示例,首先只写,然后再使用wx使其工作:

挂载设备

root@leon:/media# mount -o umask=527,uid=enforcer,gid=ftp /dev/sdb1 /media/pen/
root@leon:/media# ls /media/pen/ -la
total 44
d-w-r-x--- 10 enforcer ftp  4096 Dec 31  1969 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..

然后与用户强制执行程序尝试编写一个新文件

enforcer@leon:~$ touch /media/pen/hola
touch: cannot touch ‘/media/pen/hola’: Permission denied

用wx卸载并重新安装

root@leon:/media# umount /dev/sdb1
root@leon:/media# mount -o umask=427,uid=enforcer,gid=ftp /dev/sdb1 /media/pen/
root@leon:/home/jjorge# ls /media/pen/ -la
total 44
d-wxr-x--- 10 enforcer wim  4096 Dec 31  1969 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..

再试一次

enforcer@leon:~$ touch /media/pen/hola
enforcer@leon:~$ ls /media/pen/
ls: cannot open directory /media/pen/: Permission denied
enforcer@leon:~$ cat /media/pen/hola
cat: /media/pen/hola: Permission denied

ftp@leon:/home/jjorge$ ls /media/pen/ -la
total 44
d-wxr-x--- 10 enforcer ftp  4096 Oct 20 10:20 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..
--wxr-x---  1 enforcer wim     0 Oct 20 10:20 hola

使用此配置,您现在可以编写

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.