|
|
|
@ -56,22 +56,22 @@ sub set_acl { |
|
|
|
|
my $user = shift; |
|
|
|
|
die "Missing username\n" unless ($user); |
|
|
|
|
die "Couldn't find $user"."'s home dir\n" unless (-e "/home/e-smith/files/users/$user"); |
|
|
|
|
find(\&dirperm, "/home/e-smith/files/users/$user/Maildir"); |
|
|
|
|
die "Error applying permissions to $user 's Maildir\n" unless ( |
|
|
|
|
# sharedmailbox group needs read / write access on Maildir |
|
|
|
|
system('/usr/bin/setfacl', |
|
|
|
|
'-R', |
|
|
|
|
'-m', |
|
|
|
|
'g:sharedmailbox:rwX,d:g:sharedmailbox:rwX', |
|
|
|
|
'u::rwX,g::rwX,g:sharedmailbox:rwX,d,u::rwX,d:g::rwX,d:g:sharedmailbox:rwX', |
|
|
|
|
"/home/e-smith/files/users/$user/Maildir") == 0 && |
|
|
|
|
# Grant sharedmailbox group permission to go through |
|
|
|
|
# the home dir so it can access the Maildir, but let it read |
|
|
|
|
# anything else |
|
|
|
|
# the home dir so it can access the Maildir, but don't let it read |
|
|
|
|
# anything (except the Maildir) |
|
|
|
|
system('/usr/bin/setfacl', |
|
|
|
|
'-m', |
|
|
|
|
'g:sharedmailbox:x', |
|
|
|
|
"/home/e-smith/files/users/$user") == 0 |
|
|
|
|
); |
|
|
|
|
find(\&sgid, "/home/e-smith/files/users/$user/Maildir"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
# The kernel will handle group perms when a user |
|
|
|
@ -79,7 +79,7 @@ sub set_acl { |
|
|
|
|
# This will prevent dovecot errors, see |
|
|
|
|
# http://wiki2.dovecot.org/SharedMailboxes/Permissions and |
|
|
|
|
# http://wiki2.dovecot.org/Errors/ChgrpNoPerm |
|
|
|
|
sub sgid { |
|
|
|
|
sub dirperm { |
|
|
|
|
system('/bin/chmod', |
|
|
|
|
'g+s', |
|
|
|
|
"$_") if (-d); |
|
|
|
|