为什么 /root 下新创建的文件不可执行,即使 /root 是且 umask 是 022?这是 CentOS 上的默认设置吗?

为什么 /root 下新创建的文件不可执行,即使 /root 是且 umask 是 022?这是 CentOS 上的默认设置吗?

我正在构建一小组实用bash函数和别名,它们将存在于特殊/root分区中。我注意到,每当我touch aFile或时vim aFile,结果都是aFile具有权限的-rw-r--r--

如果您的目标是运行一些 shell 脚本,那么这是非常不可取的,而这正是我所认为的全部意义所在/root

我的/root目录权限为dr-xr-x---,我umask的为0022。据我了解,我应该期望新文件为0755... 但事实并非如此。

  1. 为什么?
  2. 这是默认的吗?
  3. 如何使新文件可执行?

答案1

如果您注意到,掩码 022 在目录上产生 755(可执行标志使它们可浏览,而不是当权限八进制中不存在时不可见),从而使它们可搜索。但是,默认情况下文件不会获得此可执行位。这是 POSIX 规范中的便利性和安全性问题。

除了想要使用 /root 目录作为脚本的存储库之外,没有人希望必须明确设置其创建的各种文件,使其在整个系统中不可执行,作为目录可搜索的代价。因此,出于可用性的考虑,您遇到了默认在目录上执行,而不是在文件上执行的问题。

您的问题可以通过 ACL 轻松解决,ACL 具有权限继承功能(UNIX 权限无法实现此功能)。请仔细阅读 getfacl、setfacl 的手册页以及此处的文档:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/ch-acls.html

本质上,ACL 是一组扩展的权限控制集,可以利用它来扩展现有的 POSIX 访问功能。功能有限但普遍接受的 POSIX ACL 集可以满足您的需求。

如果您对继承不感兴趣,而只是想一次性使文件可执行,则命令“chmod”将满足您的要求。例如,chmod u+x /root/script.sh将使文件 /root/script.sh 可由其用户所有者(在这种情况下应该是 root)执行。chmod 的手册页将提供比我在这里需要的更多的信息。

相关内容