Samba peut-il prendre en charge les ACL Windows complètes?

12

J'ai mis en place un hôte Samba 3 avec intégration AD et un système de fichiers compatible ACL. À l'aide d'un client Windows, je peux définir des autorisations d'utilisateurs et de groupes.

Jusqu'à présent, Samba correspond simplement aux autorisations rwx de POSIX ACL, ce qui m'empêche d'utiliser les autorisations «Modifier» ou «Contrôle total» sous Windows. J'ai également lu quelques informations sur les xattrs et le support ZFS ACL.

Quelqu'un peut-il donner un indice sur la meilleure façon d'aller au-delà des ACL POSIX pour ressembler complètement aux ACE Windows?

Fabien
la source

Réponses:

7

C'est comme ça que je l'ai toujours fait, je ne sais pas trop où je lis ça.

Pour que la plupart des options Windows ACL sur vos partages Samba soient connectées à AD, vous devez activer les ACL POSIX et XATTRS:

/dev/sda2       /samba              ext3    user_xattr,acl  1   2

Et dans votre smb.conf, vous devez activer idmapping, nt acls et le mappage d'attributs comme ceci:

idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
idmap backend = idmap_rid:<domain_netbios_name>=16777216-33554431

nt acl support = yes
inherit acls = yes

map acl inherit = yes 
map archive = no
map hidden = no
map read only = no
map system = no
store dos attributes = yes
inherit permissions = yes

Ensuite, tout ce que vous avez à faire est de définir un administrateur pour le partage et avec cet utilisateur de modifier les paramètres de sécurité à partir de Windows.

[public]
path = /share/Public
public = yes
writable = yes
printable = no
admin users = "DOMAIN\user"

Les seuls problèmes pourraient être liés aux listes de contrôle d'accès existantes (vous "reniez" la racine et transférez la propriété à votre utilisateur Windows) et aux groupes d'utilisateurs non mappés.

Pour mapper des groupes manuellement, vous devez faire quelque chose comme ceci:

net groupmap delete ntgroup="Domain Admins"
net groupmap delete ntgroup="Domain Users"
net groupmap delete ntgroup="Domain Guests"

net groupmap add ntgroup="Domain Admins" rid=512 unixgroup=root
net groupmap add ntgroup="Domain Users" rid=513 unixgroup=users 
net groupmap add ntgroup="Domain Guests" rid=514 unixgroup=nobody 

pour les groupes de sécurité intégrés.

Et puis pour tous vos groupes:

groupadd mygroup
net groupmap delete ntgroup="mygroup"   
net groupmap add ntgroup="DOMAIN\mygroup" rid=1000  unixgroup=mygroup   type=d
Bojan Markovic
la source
2
Je changerais admin userspour acl group controlet ensemble force group = +DOMAIN\Admin-group, de cette façon vous pouvez avoir plusieurs avec des autorisations d'administrateur.
Hubert Kario
4

Si vous n'avez pas besoin des ACL POSIX sur les fichiers pour être réellement utilisables (par exemple, lorsque les utilisateurs ne peuvent pas se connecter à votre contrôleur Samba localement), vous pouvez avoir des ACL NT complètes en utilisant vfs:

[global]
  stocker les attributs dos = oui
[partager]
  objets vfs = acl_xattr
Hubert Kario
la source
1

Vous devrez faire deux choses.

Tout d'abord, votre système de fichiers doit prendre en charge les ACL. Voici un exemple de ligne dans un fichier fstab qui active ACL, la vôtre sera bien sûr différente:

/dev/mapper/VolGroup00-SambaVol /samba ext3 defaults,acl 0 0

Une fois que vous avez fait cela (et remonté ou redémarré), vous souhaiterez activer nt acl dans votre fichier smb.conf:

[share1]
   path = /samba/share1
   nt acl support = yes
   writeable = yes

Une fois que vous avez fait les deux et que vous avez redémarré Samba, vous devez disposer des ACL appropriées.

Patrick Tescher
la source