【问题标题】:review file permissions concept in the UNIX查看 UNIX 中的文件权限概念
【发布时间】:2012-09-27 02:40:23
【问题描述】:

umask 设置为 022,创建文件权限为 -rw- r-- r-- 即 644。 我用这种方式制作了一个文件

echo date > date.sh
./date.sh

运行代码后我会得到错误权限被拒绝但如果我使用 sh 命令调用文件

sh date.sh

它有效。

我最近开始练习 UNIX,想知道为什么会这样。

【问题讨论】:

  • 没有为任何用户设置-x 可执行位,这就是为什么你不能这样称呼它./date.sh。如果没有 shebang 行,Unix 将不知道它是什么类型的可执行文件,即#!/bin/sh
  • @squiguy:虽然 shebang 绝对是个好习惯,但实际上并不是必须运行 shell 脚本。
  • @David 我想我只是习惯了 Perl!但是,是的,你是对的。

标签: unix ubuntu


【解决方案1】:

您没有设置可执行位,因此 UNIX 不会运行该文件。但是,sh 实用程序是可执行的,并且无论其权限如何,都可以执行date.sh 的内容。

您可以将文件设置为可执行文件:$ chmod +x date.sh

观察date.sh$ ls -l 的权限,你会发现它现在对所有人都可以执行(-rwxrwxr-x)。

【讨论】:

  • 你是对的,那么如果我可以使用“sh”命令执行没有-x的文件,那有什么意义呢?如果文件权限设置为 644,那么它应该是一个不可执行的文件。这部分让我很困惑
  • 嗯,“不可执行”并不意味着无法执行文件的内容。有无数种方法可以执行给定的命令集,这些命令不仅仅是执行包含它们的文件。但是,您会注意到/bin/sh 有自己的一组权限。如果用户对sh 或其他系统二进制文件没有执行权限,他们将无法运行您的文件……除非您明确授予他们权限。文件权限的用途太多需要在这里解释,但相信我——可执行位很有帮助。我建议你多读书!
猜你喜欢
  • 1970-01-01
  • 2018-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 2018-08-10
相关资源
最近更新 更多