我正在构建一小组实用bash
函数和别名,它们将存在于特殊/root
分区中。我注意到,每当我touch aFile
或时vim aFile
,结果都是aFile
具有权限的-rw-r--r--
。
如果您的目标是运行一些 shell 脚本,那么这是非常不可取的,而这正是我所认为的全部意义所在/root
。
我的/root
目录权限为dr-xr-x---
,我umask
的为0022
。据我了解,我应该期望新文件为0755
... 但事实并非如此。
- 为什么?
- 这是默认的吗?
- 如何使新文件可执行?
答案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 的手册页将提供比我在这里需要的更多的信息。