我使用快递imap。 当邮件客户端创build一个新的文件夹时,它将以640的权限在文件系统上创build。 我需要它可以由组或660写入。我目前有/ etc / courier / imapd IMAP_UMASK = 007,但这还不够。
我不知道还有什么要尝试的。 有任何想法吗? 我正在使用Ubuntu的服务器12.04。
编辑:我加了50pt的赏金。 为了一个可以接受的答案,我需要一个方法来使它在一个标准回购包中工作。 如果我自己下载源代码并进行编译,它将不会自动保持最新的安全修复程序。
如果我找不到更好的答案,我将添加代码到pipe理脚本中,以调用另一个sudo批准的脚本来在每次更改之前chmod -R整个目录。 但是这是一种黑客行为。
那么下面这个东西是不会用邮件服务器,但是如果在任何情况下,你可以传播默认的文件夹权限通过下面显示的setfacl方法如下所示。
在任何情况下,你想改变fopen的工作方式,我会使用ld-preload,并打开660而不是600.被接pipe的function将例如umask,chown,mkdir,打开。
umask(0) = 077 mkdir("/home/test/Maildir/.INBOX.test", 0700) = 0 chown("/home/test/Maildir/.INBOX.test", 4294967295, 4294967295) = 0 open("/home/test/Maildir/.INBOX.test/maildirfolder", O_WRONLY|O_CREAT, 0600) = 15 mkdir("/home/test/Maildir/.INBOX.test/cur", 0700) = 0
您可能想要使用setfacl和getfacl。 setfacl -md:g :: rw aaa设置文件夹的默认权限(所以它就像inheritance了),组(默认的组,这里两个:)之间没有指定)将具有读写权限。
[test@test ~]$ setfacl -md:g::rwx aaa [test@test ~]$ getfacl aaa # file: aaa # owner: test # group: test user::rwx group::--- other::--- default:user::rwx default:group::rwx default:other::--- [test@test~]$ mkdir aaa/zzz [test@test ~]$ getfacl aaa/zzz # file: aaa/zzz # owner: test # group: test user::rwx group::rwx other::--- default:user::rwx default:group::rwx default:other::--- [test@test ~]$ ls -l aaa total 4 drwxrwx---+ 2 test test 4096 Jun 30 12:22 zzz [test@test ~]$ umask 0077 [test@test ~]$