Unix文件权限-写入是否意味着读取?

6
如果一个文件只有写权限,用户如何行使编辑文件的权利,如果他无法读取文件?
在Unix中,“写”是否意味着“读”?

3
不完全正确。您可以通过对文件执行“chmod 722”,然后将其分配给另一个用户来进行测试。您将能够使用“echo“hello”>文件”命令,但无法使用“cat文件”命令。 - fedorqui
嗯,有趣的是它会导致用户盲目地进行编辑而看不到结果。这正是我想要的答案类型。谢谢。 - Elwood Hopkins
是的。理想情况下,权限应该像俄罗斯套娃一样,如果没有读取权限就没有写入权限,但在极端情况下可以执行。我无法想象这种情况何时会实用。 - fedorqui
1
我不得不谷歌一张图片,花了一分钟思考你的比喻。不错! - Elwood Hopkins
4个回答

7
  1. You may be blind and still be able to write:

     $ touch a
     $ chmod 0200 a
     $ ls -ln  a
     --w------- 1 1000 1000 4 Jul 19 15:13 a
     $ cat a
     $ cat: a: Permission denied
     $ echo "secret message" >> a
     $ chmod 0400 a
     $ cat a
     secret message
    
  2. Nope :)


您可以在代码行前面使用四个空格来格式化它们,无需使用 br - fedorqui

6
在Unix/Linux中,读、写和执行权限是相互独立的。有时可能会拥有写权限,但没有读权限。对于二进制文件来说,你可能会看到没有授予读权限,但是执行权限使你可以执行它。另一方面,一个需要被解释的shell脚本或其他文件需要读权限才能被执行。
简单地提供写权限而不具备读权限,则可以让你写入文件(也可以删除该文件),但无法阅读它。
以下内容应该是不言自明的:
$ touch foo
$ ls -l foo
-rw-rw-r-- 1 devnull devnull 0 Jul 19 12:00 foo
$ chmod -r foo
$ ls -l foo
--w--w---- 1 devnull devnull 0 Jul 19 12:00 foo
$ cat foo
cat: foo: Permission denied
$ echo hey > foo
$ ls -l foo
--w--w---- 1 devnull devnull 4 Jul 19 12:00 foo
$ cat foo
cat: foo: Permission denied
$ > foo
$ ls -l foo 
--w--w---- 1 devnull devnull 0 Jul 19 12:00 foo
$ rm -f foo 
$ ls -l foo
ls: cannot access foo: No such file or directory

5
在类Unix系统中,文件可以是很多东西。例如,它可能是一个管道,用户可以向其中提交数据,但不能从中接收数据。因此,写权限并不意味着读权限。
另一个例子可能是一个目录,用户可以向其中存储数据(可能会破坏现有数据),但不能读取其他人已经存储的数据。

我对只写目录不确定:写入文件需要测试其存在性(在打开文件进行写入时,系统将隐式检查其存在性),因此我认为如果您想要在其中写入,则该目录至少应该是chmod +wx,您是否实际上已经对只写目录进行了测试(我可能是错的)? - Suzanne Soy

1

1) write only 意思是只写,没有其他可选项
2) 不可以


感谢您在回复中提供更多信息。 - Elwood Hopkins
@ElwoodHopkins - 我回答了第一个问题(主题行),然后重新阅读了问题并编辑以回答问题正文中的两个问题。 - KevinDTimm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接