Mise à jour le 16/10/09

Quelques tests avec samba et les acl sur une debian lenny fraîchement installée.

La machine de tests:

smbldap:/# hostname
smbldap
smbldap:/# hostname --fqdn
smbldap.smb62.smb
smbldap:/# dig soa smb62.smb

; <<>> DiG 9.5.1-P3 <<>> soa smb62.smb
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61554
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;smb62.smb.            IN    SOA

;; ANSWER SECTION:
smb62.smb.        10800    IN    SOA    srvweb.net.caen. root.net.caen. 2009100301 28800 7200 604800 86400

;; AUTHORITY SECTION:
smb62.smb.        10800    IN    NS    ns.net.caen.
smb62.smb.        10800    IN    NS    p733.net.caen.

;; ADDITIONAL SECTION:
ns.net.caen.        10800    IN    A    192.168.0.23
p733.net.caen.        10800    IN    A    192.168.0.22

;; Query time: 9 msec
;; SERVER: 192.168.0.23#53(192.168.0.23)
;; WHEN: Sat Oct  3 16:45:46 2009
;; MSG SIZE  rcvd: 151

smbldap:/#


smbldap:/etc/apt# uname -a
Linux smbldap 2.6.26-2-amd64 #1 SMP Wed Aug 19 22:33:18 UTC 2009 x86_64 GNU/Linux
smbldap:/etc/apt# cat /etc/issue.net
Debian GNU/Linux 5.0
smbldap:/etc/apt# free
             total       used       free     shared    buffers     cached
Mem:        253216     147556     105660          0       7724     112524
-/+ buffers/cache:      27308     225908
Swap:       409616          0     409616

smbldap:/etc/apt# df -hT
Sys. de fich. Type     Tail. Occ. Disp. %Occ. Monté sur
/dev/sda1     ext3    7,5G  824M  6,4G  12% /
tmpfs        tmpfs    187M     0  187M   0% /lib/init/rw
udev         tmpfs     10M  608K  9,5M   6% /dev
tmpfs        tmpfs    187M     0  187M   0% /dev/shm
/dev/sdb1     ext3   1004M   18M  936M   2% /srv


smbldap:/# cd /etc/apt
smbldap:/etc/apt# cat sources.list

deb http://192.168.0.63:3142/ftp.fr.debian.org/debian/ lenny main non-free contrib
deb-src http://192.168.0.63:3142/ftp.fr.debian.org/debian/ lenny main non-free contrib
deb http://192.168.0.63:3142/security.debian.org/ lenny/updates main contrib non-free
deb-src http://192.168.0.63:3142/security.debian.org/ lenny/updates main contrib non-free
deb http://192.168.0.63:3142/ftp.de.debian.org/backports.org/ lenny-backports main contrib non-free
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
deb http://packages.dotdeb.org lenny all

Je personnalise un peu:

smbldap:/etc/apt# apt-get update
smbldap:/etc/apt# apt-get install debian-backports-keyring
smbldap:/etc/apt# apt-get dist-upgrade
smbldap:/etc/apt# ps ax
smbldap:/etc/apt# update-rc.d -f atd remove
smbldap:/etc/apt# update-rc.d -f nfs-common remove
smbldap:/etc/apt# update-rc.d -f portmap remove
smbldap:/etc/apt# /etc/init.d/nfs-common stop
smbldap:/etc/apt# /etc/init.d/portmap stop
smbldap:/etc/apt# /etc/init.d/atd stop


Le fichier de config de samba:

smbldap:/etc/samba# cat smb.conf |egrep -v '^$|^#|\;'
[global]
   workgroup = SMB62
   server string = %h server
   wins support = yes
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   encrypt passwords = true
   passdb backend = tdbsam
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
  domain logons = yes
   logon path = \\%N\%U\profile
   logon drive = H:
   logon home = \\%N\%U
   logon script = logon.cmd
   domain master = auto
   idmap uid = 1000-20000
   idmap gid = 1000-20000
   template shell = /bin/bash
   winbind enum groups = yes
   winbind enum users = yes
[homes]
   comment = Home Directories
   browseable = no
   read only = no
   create mask = 0700
   directory mask = 0700
   valid users = %S
[netlogon]
   comment = Network Logon Service
   path = /home/samba/netlogon
   guest ok = yes
   read only = yes
   share modes = no
[profiles]
   comment = Users profiles
   path = /home/samba/profiles
   guest ok = no
   browseable = no
   create mask = 0600
   directory mask = 0700
[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700
[echanges]
   comment = zone echanges
   path = /srv/commun
   read only = no
   browseable = yes
[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no
smbldap:/etc/samba#

Je fais les tests avec 2 utilisateurs: pme et patrick.menier (ce dernier ayant été créé avec adduser --force-badname).

smbldap:/etc# egrep 'pme|patrick' passwd
pme:x:1000:1001:pme,,,:/home/pme:/bin/bash
patrick.menier:x:1001:1003:,,,:/home/patrick.menier:/bin/bash

smbldap:/etc# egrep 'pme|patrick' group
ban_sral_rwx:x:1001:pme
patrick.menier:x:1003:

Ensuite j'active les acl sur le répertoire /srv/commun (défini comme nom de partage: echanges) après avoir pris soin de monter /srv avec l'option adéquate:

smbldap:~# cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/sda1       /               ext3    errors=remount-ro 0       1
/dev/sdb1       /srv    ext3    rw,acl,errors=remount-ro 0       1
/dev/sda5       none            swap    sw              0       0
/dev/hda        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0



smbldap:/# ls -ld srv
drwxr-xr-x 4 root root 4096 oct 10 11:49 srv

smbldap:/# getfacl srv
# file: srv
# owner: root
# group: root
user::rwx
group::r-x
other::r-x


smbldap:/# cd srv
smbldap:/srv# ll
total 28
drwxr-xr-x   4 root root  4096 oct 10 11:49 .
drwxr-xr-x  22 root root  4096 oct  5 18:34 ..
drwxrwxr-x  2 root root  4096 oct 10 12:42 commun
drwx------   2 root root 16384 oct 10 11:16 lost+found

smbldap:/srv# setfacl -m g:ban_sral_rwx:rwx commun/

smbldap:/srv# ll
total 28
drwxr-xr-x   4 root root  4096 oct 10 11:49 .
drwxr-xr-x  22 root root  4096 oct  5 18:34 ..
drwxrwxr-x+  2 root root  4096 oct 10 12:42 commun
drwx------   2 root root 16384 oct 10 11:16 lost+found

On voit que les acl sont activées sur le répertoire commun (présence d'un '+')

smbldap:/srv# getfacl commun
# file: commun
# owner: root
# group: root
user::rwx
group::r-x
group:ban_sral_rwx:rwx
mask::rwx
other::r-x


Passons aux tests depuis un windows:

J'ouvre une ressource sur 192.168.0.62\echanges en tant qu'utilisateur pme:

samaba acl samaba acl

Je peux créer un fichier.

Je fais la même manip avec l'utilisateur patrick.menier:

samaba acl samba acl

C'est bon. L'utilisateur n'a pas le droit d'écrire.

Je sais pour le vivre en ce moment que la gestion des droits via un clickdrome est plus aisée. N'empêche qu'un petit serveur samba est tout de même capable de gérer assez finement ceux-ci. Evidemment cela implique de jouer de la ligne de commande mais personnellement cela n'est pas un handicap.


Liens:

http://www.adella.org/spip/Gestion-des-ACLs-Access-Control.html

http://www.adella.org/spip/Samba-en-Controleur-de-Domaine.html

http://www.adella.org/spip/Serveur-de-fichiers-en-Groupe-de.html

http://www.lea-linux.org/documentations/index.php/Gestion_des_ACL



Mise à jour 16/10/09


Après moultes manips j'ai enfin réussi à établir une relation d'approbation entre un PDC Win2003  et un Serveur SAMBA. Je ne détaille pas pour l'instant les manips car c'est encoreun peu confus.

Sur les copies d'écrans suivantes, un windows s'authentifie sur l'AD tandis que l'autre s'authentifie sur le serveur SAMBA.

samba ad windows 2003 aclsamba ad windows 2003 acl