【问题标题】:Don't understand why do I get a permission denied error不明白为什么我会收到权限被拒绝错误
【发布时间】:2014-06-21 12:03:04
【问题描述】:

我有一个文件 hello.c,其中包含 C 语言中的“hello world”程序。我还在 shell (UNIX) 上完成了以下操作:

$ ls > 1
$ chmod 0 1
$ cc -o hello hello.c
$ chmod 400 hello
$ ./hello > 1

我在 1 日被拒绝了许可。

为什么我在 hello 上没有收到权限被拒绝错误?

【问题讨论】:

  • 是的,但是 400 on hello 的 chmod 会阻止其执行权限。那么首先会发生什么呢?你好运行 1 的权限?
  • 证据表明了什么?
  • 调试步骤:你认为chmod 0 1 做了什么?你认为chmod 400 hello 是做什么的?
  • 证据当然表明1的权限,但是如果有命令,我怎么知道首先会发生什么?
  • 因为如果 hello 程序先运行,我应该得到 hello 的权限被拒绝错误。不是吗?

标签: shell chmod


【解决方案1】:

因为当您要求 shell 执行命令的输出重定向时,要写入的文件由 shell 打开,在调用命令之前

您的外壳将:

  1. 打开1写作
  2. “线”./hellostdout1
  3. 运行./hello

1拥有0o000的权限,所以第一次操作会失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    相关资源
    最近更新 更多