Dim*_*tri 19 permissions chmod files
用户是否有可能对文件具有写访问权限而无法读取它?这怎么可能?
我尝试了以下命令:
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$
Run Code Online (Sandbox Code Playgroud)
正如你在这里看到的,我对这个文件有写但没有读访问权限。这怎么可能?这是否被视为错误?如果不是,这在什么情况下会有用?
Gil*_*il' 23
允许写访问而没有读访问的主要原因是它简化了内核和用户程序中的权限管理。权限有两种,一种是读,一种是写,独立管理。这不是错误,因为记录的行为与实际行为一致,并且没有充分的理由要求不同的行为。
拥有没有读取权限的写入权限对于常规文件没有多大意义。它确实对各种特殊文件有意义。
/proc,并/sys允许用户空间程序写入到一个特定的文件将命令发送到内核。如果该命令不提供任何反馈,则特殊文件将变为只写。roz*_*acz 21
它不是一个错误,它是一个特性TM(而且,这只是通用 unix 权限方法的结果)。
除了来自收件箱般的在目录中的情况下(如BillThor描述)的行为,只写访问是必要的在一些特殊(伪)文件/proc和/sys。此类文件用于设置某些驱动程序或内核属性或触发系统操作。您无法读取它们,因为它们仅用于单向信号发送 - 您只能向它们回显一些文本/数据。要查找此类文件,您可以使用
find /proc/[^0-9]* /sys -perm /222 ! -perm /444
Run Code Online (Sandbox Code Playgroud)
请注意,由于这些文件用于高级系统配置(有潜在危险),因此只有root对它们的写访问权限(在大多数情况下)。