Permissions
沒有讀訪問的寫訪問
使用者是否有可能對文件具有寫訪問權限但無法讀取它?這怎麼可能?
我嘗試了以下命令:
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$
正如你在這裡看到的,我對這個文件有寫但沒有讀權限。這怎麼可能?這被認為是一個錯誤嗎?如果不是,這在什麼情況下有用?
這不是一個錯誤,它是一個特性TM(另外,這只是通用 unix 方法的結果)。
除了在目錄的情況下(如 BillThor 所描述的)類似 Dropbox 的行為外,對於一些特殊(偽)文件來說,只寫訪問是必需的
/proc
和/sys
. 此類文件用於設置某些驅動程序或核心屬性或觸發系統操作。您無法閱讀它們,因為它們僅用於單向信號 - 您只能將一些文本/數據回顯給它們。要查找此類文件,您可以使用find /proc/[^0-9]* /sys -perm /222 ! -perm /444
請注意,由於這些文件用於高級系統配置(有潛在危險),因此只有
root
對它們的寫訪問權(在大多數情況下)。
允許沒有讀訪問的寫訪問的主要原因是它簡化了核心內部和使用者程序中的權限管理。有兩種權限,一種讀,一種寫,獨立管理。這不是錯誤,因為記錄的行為與實際行為一致,並且沒有充分的理由要求不同的行為。
擁有沒有讀權限的寫權限對於正常文件沒有多大意義。對於各種特殊文件確實有意義。
- 一些系統允許僅附加文件。例如,這對日誌文件很有用。允許許多使用者創建日誌條目是有意義的,但不允許他們擦除或覆蓋現有條目(因此:寫入權限,但僅附加屬性),也不允許他們讀取其他人的條目(因此:否讀取權限)。
- 一個程序可以被允許寫入一個命名管道而不被允許從它讀取。
- 有些設備是只寫的。例如,連接揚聲器但沒有麥克風的聲音輸出設備應該具有寫入權限但沒有讀取權限。
- 有各種特殊的文件系統,其中讀取或寫入文件會立即生效,而不是檢索或將數據添加到儲存中。例如,在 Linux 下,
/proc
和下有各種文件/sys
,允許使用者空間程序通過寫入特定文件來向核心發送命令。如果該命令未提供任何回饋,則將特殊文件設為只寫。