unix – 为什么组上的chmod(1)会影响ACL掩码?
我试图理解这种Unix行为(我碰巧在Ubuntu 11.10上测试):
$touch foo $setfacl -m u:nobody:rwx foo $getfacl foo # file: foo # owner: michael # group: michael user::rw- user:nobody:rwx group::rw- mask::rwx other::r-- $chmod g-rw foo $getfacl foo # file: foo # owner: michael # group: michael user::rw- user:nobody:rwx #effective:--x group::rw- #effective:--- mask::--x other::r-- 请注意,chmod(1)命令已更新ACL掩码.为什么会这样? SunOS manpage有如下说法:
我问,因为如果chmod(1)没有这种行为,对我来说会很方便.我希望通过了解它为什么会这样做,我可以更好地设计我如何设置文件系统权限.
如果chmod()没有这种行为,那对你来说不方便.
这将是非常不方便的,因为人们传统上期望在Unix上工作的东西会破坏.这种行为很好,你知道吗. 令人遗憾的是,IEEE 1003.1e从未成为标准,并于1998年被撤销.实际上,十四年后,它是一个标准,从Linux到FreeBSD到Solaris的各种操作系统实际上都在实施. IEEE 1003.1e工作草案#17有趣阅读,我推荐它.在附录B§23.3中,工作组提供了详细的八页原理,说明了POSIX ACL与旧的S_IRWXG组权限标志相关的复杂方式. (值得注意的是,十年前TRUSIX人提供了相同的分析.)我不会在这里复制所有内容.请阅读标准草案中的基本原理以获取详细信息.这是一个非常简短的précis: > SunOS手册错了.它应该读
这是您可以看到的行为,尽管当前的手册页在您的问题中说明了这一点.它也是POSIX标准草案规定的行为.如果存在CLASS_OBJ(Sun和TRUSIX的ACL_MASK术语)访问控制条目,则chmod()的组位设置它,否则它们设置GROUP_OBJ访问控制条目. >传统的Unix应用程序希望能够使用chmod(…,000)拒绝对文件,命名管道,设备或目录的所有访问.在存在ACL的情况下,如果旧的S_IRWXG映射到CLASS_OBJ,则仅关闭所有用户和组权限.如果没有这个,将旧文件权限设置为000将不会影响任何USER或GROUP条目,并且令人惊讶的是,其他用户仍然可以访问该对象.暂时将文件的权限位更改为不能使用chmod 000访问,然后将其更改回来再次是一个旧的文件锁定机制,在Unix获得咨询锁定机制之前使用,即— as you can see — people still use today. 进一步阅读 >WinfriedTrümper(1999-02-28). Summary about Posix.1e (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- angularjs – 如何使用Ionic 2框架创建登录页面,然后导致选
- Nagios+OMSA监控dell设备硬件
- kubernetes1.75 一键安装shell脚本(避坑)kubeadm版
- webservice报错 Server returned error code = 401 for URI
- 如何配置routeProvider和locationProvider在angularJS?
- git – docker错误:输入设备不是TTY.如果您使用mintty,请
- shell--4、Shell 数组
- 插入换行符,而不进入插入模式vim
- scala – SBT常用构建设置
- 【webservice】818开发webservice过程中遇到的异常