[Samba] permissions, and maybe a violation of the least surprise principle

Jeremy Allison jra at samba.org
Mon Nov 8 17:14:50 UTC 2021


On Mon, Nov 08, 2021 at 09:38:18AM -0600, Patrick Goetz via samba wrote:
>I'm down to the last step of my current re-implementation of Samba, 
>namely getting the permissions to work right.
>
>Here is the share section (+ some general) from my smb.conf file:
>
>
>   winbind refresh tickets = Yes
>   vfs objects = acl_xattr
>
>[share]
>   comment = Share Directory
>   path = /data/share
>   guest ok = no
>   browseable = yes
>   writeable = yes
>   create mask = 0770
>   directory mask = 0770
>   # inherit permissions = yes
>   follow symlinks = yes
>
>
>
>Here are the filesystem permissions on the directory:
>
>root at data2:/data# ls -ld share
>drwxrws---+ 3 root ea-staff 4096 Nov  6 16:31 share
>
>root at data2:/data# getfacl share
># file: share
># owner: root
># group: ea-staff
># flags: -s-
>user::rwx
>group::rwx
>other::---
>default:user::rwx
>default:group::rwx
>default:group:ea-staff:rwx
>default:mask::rwx
>default:other::---
>
>
>Notice that the setgid bit is set, with group = (security group) ea-staff
>
>So, I login on a Windows machine as a member of the ea-staff group, 
>and save a document to the share:
>
>root at data2:/data/share# ls -l top*
>-rwxrwx---+ 1 dhales domain users 227 Nov  8 09:12 
>top-secret_document_only_staff_should_see.rtf
>
>
>Notice that the setgid bit on the parent folder was ignored, and the 
>primary group assignment to the file is Domain Users.  Worse, anyone 
>in Domain Users has access to write this file, although I suppose the 
>lack of other  "x" permission on the parent folder might prevent 
>access.
>
>I think I read that if you are using Windows ACLs, then the Windows 
>ACLs are checked and honored first; however this seems like a 
>violation of the least surprise principle, since I'm getting user 
>rights  elevations (namely Domain Users read/write access) that I 
>don't want.
>
>These Wiki pages talk about using POSIX and Windows ACLs respectively:
>
>  https://wiki.samba.org/index.php/Setting_up_a_Share_Using_POSIX_ACLs
>  https://wiki.samba.org/index.php/Setting_up_a_Share_Using_Windows_ACLs
>
> but I can't figure out how to tell the system I would prefer to base 
>ACLs on POSIX rather than Windows ACLs.
>
>
>Now, for the "it gets worse" category.  There is an awful lot of 
>misinformation about configuring a Home share, perhaps because the 
>Windows people seem to see this as something you use for backup only. 
>The Home folder Wiki page also suggests that you can use GPO drive 
>mapping for this rather than setting it in the user's Profile. Looking 
>online I see Windows admins stating that one should *not* use GPO file 
>sharing to configure the home directory and that only the user's 
>Profile tab should be used for this.  In any case, Folder Redirection 
>does not appear to work unless you set up a home directory under 
>Profile.
>
>Otherwise, using /home for this purpose appears to work fine and means 
>the user will have immediate access to all their files when they ssh 
>into the linux fileserver.  However:
>
>[home]
>   comment = Home Directories
>   path = /data/home
>   guest ok = no
>   browseable = no
>   writeable = yes
>   create mask = 0700
>   directory mask = 0700
>   follow symlinks = yes
>
>root at data2:/data# ls -ld home
>drwxr-xr-x+ 8 root root 4096 Nov  6 08:27 home
>root at data2:/data# getfacl home
># file: home
># owner: root
># group: root
>user::rwx
>group::r-x
>group:domain\040admins:rwx	#effective:r-x
>mask::r-x
>other::r-x
>
>
>/home is a bind mount to /data/home
>
>
>The same user logs in on a W10 client and saves a file to his 
>Documents folder:
>
>root at data2:~# cd /home/dhales/Documents/
>root at data2:/home/dhales/Documents# ls -l my*
>-rwxrwx---+ 1 dhales domain users 222 Nov  8 09:25 my-super-secret-file.rtf
>
>
>So looks like the create mask is being ignored as well?
>
>I spend a lot of time adjusting permissions for users.  Most of them 
>can't figure out how to do this themselves, and letting a user loose 
>in the Windows ACL zoo seems like a recipe for disaster anyway.
>
>Consequently I'd prefer to manage POSIX ACLs via the filesystem and 
>ssh and then have the Windows ACL's approximated from that. Is there a 
>way to do this?
>
>It also seems to me that the filesystem permissions should *never* be 
>bypassed under any circumstances.
>
>Final question if anyone in the know has read this far. By default the 
>Windows ACLs are stored in a TDB database on the fileserver's 
>filesystem?

No, that's not true. The Windows ACLs are stored by default
in EA's attached to the file.

> What happens to these permissions if I migrate the data 
>(say, via rsync) to another server? Seems like all the Windows ACLs 
>will be lost unless I transfer the relevant database as well.

So long as rsync transfers EA's then all will work.



More information about the samba mailing list