没有读访问权限的写访问权限


15

用户是否可能具有对文件的写访问权而无法读取它?这怎么可能?

我尝试了以下命令:

debianbox@debian:~/posix/io$ touch filetest
debianbox@debian:~/posix/io$ ls -l filetest
-rw-r--r-- 1 debianbox debianbox 0 14 oct.  03:10 filetest

debianbox@debian:~/posix/io$ echo "Hello World" > filetest
debianbox@debian:~/posix/io$ cat filetest
Hello World

debianbox@debian:~/posix/io$ chmod u-r filetest
debianbox@debian:~/posix/io$ cat filetest
cat: filetest: Permission forbidden

debianbox@debian:~/posix/io$

如您在这里看到的,我对该文件具有写但没有读访问权限。这怎么可能?这被视为错误吗?如果没有,这在什么情况下有用?

Answers:


18

这不是错误,而是功能TM(同样,这是通用unix方法对迁移的结果)。

除了来自收件箱般的在目录中的情况下(如BillThor描述)的行为,只写访问是必要的在一些特殊(伪)文件/proc/sys。此类文件用于设置某些驱动程序或内核属性或触发系统操作。您无法阅读它们,因为它们仅用于单向信令-您只能向它们回显一些文本/数据。要查找此类文件,您可以使用

find /proc/[^0-9]* /sys -perm /222 ! -perm /444

请注意,由于这些文件用于高级系统配置(潜在危险),因此仅root具有对它们的写权限(在大多数情况下)。


21

允许写访问而没有读访问的主要原因是,它简化了内核内部和用户程序中的权限管理。有两种权限,一种用于读取,一种用于写入,并且它们是独立管理的。这不是错误,因为已记录的行为与实际行为一致,并且没有充分的理由要求采取其他行为。

具有写入权限而没有读取权限对常规文件没有多大意义。对于各种特殊文件确实有意义。

  • 一些系统允许仅追加文件。例如,这对于日志文件很有用。允许许多用户创建日志条目,但不允许他们擦除或覆盖现有条目(因此:具有写权限,但只能附加属性),也不允许他们读取其他人的条目(因此:无)是很有意义的。阅读权限)。
  • 程序可以被允许写入命名管道而无需被读取。
  • 一些设备是只写的。例如,连接到扬声器但没有麦克风的声音输出设备应具有写入权限,但没有读取权限。
  • 在各种特殊的文件系统中,读取或写入文件会立即生效,而不是检索或向存储中添加数据。例如,在Linux下,有多个文件/proc/sys它们允许用户空间程序通过写入特定文件将命令发送到内核。如果该命令不提供任何反馈,则将特殊文件设置为只写。

2

不,这不是错误。但是,我认为它通常不适用于文件。

我最经常看到的是对保管箱目录的只写访问。用户可以将文件添加到目录中,但是看不到存在哪些文件。

对于常规文本文件,只写访问将适合于保管箱类型访问。

为自己设置只写访问权限不是很有用,但不允许这样做会使权限代码复杂化。

编辑:Dropbox文件不太可能有用。但是,这对于非root用户日志可能很有用,因为它将使覆盖日志条目更加困难。如果您可以读取文件,则可以更轻松地确定在何处写入替换日志条目。但是,我不知道有人这样设置日志。通常使用远程日志记录来防止对日志条目进行本地修改。

设置允许权限组合的规则,可能会导致防止无法预料的有用权限。在组或世界级别上,许多组合比所有者级别更有意义。阻止所有者访问的任何尝试都可以轻松地覆盖。但是,它们对于迫使清醒的人可能有用。


实际上,“投递箱文件”几乎没有意义。它只能用于写入一些数据,即使它在某个时候具有可读性,其内容也不会真正显示发生了什么事情,因为它可能先前已被擦除或删除。
rozcietrzewiacz 2011年
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.