【问题标题】:Unix File Permissions - Does Write Imply Read?Unix 文件权限 - 写入是否意味着读取?
【发布时间】:2013-07-18 18:57:07
【问题描述】:

如果一个文件只有写权限,如果用户不能读取文件,他怎么能行使他的编辑权限呢?

在 Unix 中“写”是否意味着“读”?

【问题讨论】:

  • 并非如此。您可以测试它对文件执行chmod 722,然后分配给另一个用户。你可以echo "hello" > file,但不能cat file
  • 嗯。有趣的是,它创造了一种用户可以盲目进行编辑而看不到结果的情况。这是我正在寻找的答案类型。谢谢。
  • 是的。理想情况下,权限应该像俄罗斯套娃一样,不读则不写,但可以执行极端情况。我想不出这种情况是可行的。
  • 我不得不在谷歌上搜索一张图片并思考一下你的类比。不错!

标签: unix file-permissions


【解决方案1】:

Unix/Linux 中的读、写、执行权限是独立的。没有读权限也可以有写权限。对于 binary 文件,您可能已经看到未授予读取权限,但执行权限使您能够执行它。另一方面,需要解释的 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

【讨论】:

    【解决方案2】:

    在类 unix 系统中,一个文件可以是很多东西。例如,它可能是一个管道,用户可以向其中提交数据,但不能从中接收数据。所以不,写权限并不意味着读。

    另一个例子可能是一个目录,用户可以在其中存放数据(可能会破坏现有数据),但不能读取其他人存放的内容。

    【讨论】:

    • 我不确定只写目录:写入文件需要测试它的存在(当打开文件进行写入时,系统会隐式检查它的存在),所以我如果您想在其中写入,会认为该目录至少应该是chmod +wx,您实际上是否使用只写目录进行了测试(我可能是错的)?
    【解决方案3】:
    1. 你可能是盲人,但仍然可以写作:

      $ touch a
      $ chmod 0200 a
      $ ls -ln a
      --w-------- 1 1000 1000 4 Jul 19 15:13 a
      $ cat a
      cat: a: 权限被拒绝
      $ echo "秘密信息" >> a
      $ chmod 0400 a
      $ cat a
      秘密消息

    2. 不 :)

    【讨论】:

    • 您可以在代码行前面使用四个空格来进行格式化。不需要br
    • 好的。谢谢你。我会考虑到这一点。
    【解决方案4】:

    1) 只写意味着只写 - 所以,没办法这样做
    2) 没有

    【讨论】:

    • 感谢您的回复。
    • @ElwoodHopkins - 我回答了第一个问题(在主题行上),然后重新阅读了问题并进行了编辑以回答问题正文中的两个问题
    猜你喜欢
    • 2010-12-27
    • 2017-11-21
    • 2018-07-12
    • 2019-05-28
    • 2014-02-20
    • 2016-12-20
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    相关资源
    最近更新 更多