我正在尝试在/ tmp目录中创建一个文件(在Linux UBUNTU 7.10上工作),该文件具有任何用户的读/写/执行访问权限.所以我使用"open(fileName,O_CREAT | O_RDWR,0777)"函数在user1帐户中创建文件(来自C程序),我希望user2能够写入特定文件.但是,当我检查/ tmp目录(使用ls -l)时,我看到我没有user2的写访问权限(考虑到user1创建它的事实,我有user1的写访问权限,但是user2,被认为是成为"其他人"没有任何访问权限.我试图在open函数中使用模式0766(以及模式的7和6的这种组合),这样我可以获得user2的写访问权限,但我仍然没有所需的访问权限.
您必须将umask设置为000. umask上的位将从您选择的权限中删除,默认的umask通常为022或002.
请注意,默认ACL和SELinux标签之类的内容也可能会影响文件的可读性和可写性.使用getfacl查看ACL和ls -Z以查看SELinux标签; 对于SELinux,您还必须知道哪些策略处于活动状态以及它们具有哪些效果.在权限之后,ls -l上也可以看到ACL的存在作为+字符.