我正在构建一小组实用程序bash
函数和别名,它们将存在于一个特殊的/root
分区上。我注意到,无论何时我touch aFile
或vim aFile
,结果都是aFile
权限-rw-r--r--
。
如果您的目标是运行一些 shell 脚本,这是非常不可取的,这就是我认为的重点/root
。
我的/root
目录权限是dr-xr-x---
,我umask
的是0022
。据我了解,我应该期望新文件是0755
......但它们不是。
- 为什么?
- 这是默认的吗?
- 如何使新文件可执行?
如果您注意到,掩码 022 在目录上产生 755(可执行标志使它们可浏览,而不是在八进制权限中不存在时不可见),使它们可搜索。但是,默认情况下,文件不会获得此可执行位。这是 POSIX 规范中的方便和安全问题。
除了您希望将 /root 目录用作脚本的存储库之外,没有人希望必须将其创建的各种文件显式设置为在系统中不可执行,以此作为目录可搜索的代价。因此,出于可用性的考虑,您会遇到在目录而不是文件上默认执行的问题。
您的问题可以通过 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 的手册页将提供比我需要的更多信息。