Dossier partagé sgid – NFS et Samba
Configuration de NFS (Serveur: De Linux à Linux) :
Sur la machine serveur :
apt-get install nfs-kernel-server
Éditer le fichier /etc/exports
nano /etc/exports
ajouter les lignes suivantes :
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
/media/nas1 192.168.0.0/24(rw,sync,no_subtree_check,all_squash,anonuid=1000,anongid=150)
/media/nas2 192.168.0.0/24(rw,sync,no_subtree_check,all_squash,anonuid=1000,anongid=150)
/media/nas3 192.168.0.0/24(rw,sync,no_subtree_check,all_squash,anonuid=1000,anongid=150)
/home/nas 192.168.0.0/24(rw,sync,no_subtree_check,all_squash,anonuid=1000,anongid=1000)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
On peut mettre chaque adresse ip: 192.168.0.10(rw,sync,no_subtree_check) 192.168.0.11(rw,sync,no_subtree_check) ou si on mets *.reseau.maison à la place de l’adresse ip, tous les ordinateurs du réseau pourront se brancher. Vous pouvez remplacer * par l’un des formats de nom d’hôte. La formulation du nom d’hôte devrait être la plus précise possible pour éviter que des systèmes indésirables puissent accéder aux points de montage NFS.
Note: il n’est pas possible de partager en NFS des disques NTFS (Windows)
service nfs-kernel-server restart
Sur les ordinateurs clients: qui souhaite avoir accès aux données du host1
apt-get install nfs-common
Pour un montage manuel du partage nfs sur un client tapez la commande suivante:
mount nas1.reseau.maison:/media/nas1 /media/nas1
Une autre façon de monter un partage NFS à partir d’une autre machine est d’ajouter une ligne au fichier /etc/fstab. La ligne doit comporter le nom d’hôte du serveur NFS, le répertoire du serveur qui doit être partagé, et le répertoire de la machine locale où le partage NFS doit être monté.
nano /etc/fstab
# /etc/fstab: static file system information. # # Use 'blkid -o value -s UUID' to print the universally unique identifier # for a device; this may be used with UUID= as a more robust way to name # devices that works even if disks are added and removed. See fstab(5). # # proc /proc proc nodev,noexec,nosuid 0 0 # / was on /dev/sda1 during installation UUID=3ec5f74e-4543-4b5a-b831-5108c5c6e59b / ext4 discard,errors=remount-ro 0 1 # swap was on /dev/sda5 during installation UUID=af607e00-2c8a-4a83-9247-a4eb3890328f none swap sw 0 0
#Partage nfs de nas1 (partout sauf nas1) 192.168.0.12:/media/nas1 /media/nas1 nfs nfsvers=3,bg,rw,hard,intr,proto=tcp 192.168.0.12:/media/nas2 /media/nas2 nfs nfsvers=3,bg,rw,hard,intr,proto=tcp 192.168.0.12:/media/nas3 /media/nas3 nfs nfsvers=3,bg,rw,hard,intr,proto=tcp 192.168.0.12:/home/nas /media/nas_home nfs nfsvers=3,bg,rw,hard,intr,proto=tcp
Une ligne vide doit terminer le fichier /etc/fstab sinon il y aura une erreur
Le répertoire /media/nas1 du point de montage doit exister. Il ne devrait y avoir ni fichiers ni sous-répertoires dans le répertoire /media/nas1
Configuration de base pour Samba (Serveur: De Linux à Windows) :
Il faut s’assurer que le groupe sambashare utilise le même gid sur toutes les machines du réseau.
Sur ubuntu le groupe sambashare par défaut à l’gid 111 alors que sur solydxk le groupe 111 est pour pulseaudio:
pulse-access:x:111:
Il faut donc changer le gid de sambashare sur ubuntu. J’ai choisis 150 qui n’est pas utilisé
S.V.P. noter que le UID de tous les fichiers qui sont dans le répertoire personnel (home) d’un usager seront changés automatiquement dès que les usermod et groupmod seront lancées. Toutefois, les fichiers situés ailleurs que dans le dossier personnel (home) doivent être changés manuellement avec les commandes respectives « find / -group » pour le GID et find / -user pour l’UID.
Pour attribuer un nouveau GID au groupe nommé sambashare, entrer:
sudo groupmod -g 150 sambashare
sudo find / -group 111 -exec chgrp -h sambashare {} \;
Sur Solydxk le groupe sambashare par défaut à l’gid 1001
Pour attribuer un nouveau GID au groupe nommé sambashare, entrer:
sudo groupmod -g 150 sambashare
sudo find / -group 1001 -exec chgrp -h sambashare {} \;
Si il faut changer l’uid 1000 >> 1001 pour un usager alors utiliser les commandes suivantes
sudo usermod -u 1001 olivier
sudo find / -user 1000 -exec chown -h olivier {} \;
Si vous voulez partager des répertoires de votre ordinateur sous Linux et qu’ils soient accessibles depuis des ordinateurs sous Windows, il vous faut installer le paquet samba avec la commande apt-get.
apt-get install samba
nas a déjà son compte utilisateur créé lors de l’installation, mais pour que chacun des autres utilisateurs puisse s’authentifier, il faut créer des utilisateurs sans home et sans accès au shell.
useradd -s /bin/false -d /dev/null -g sambashare virtuel
useradd -s /bin/false -d /dev/null -g sambashare lafontaj
useradd -s /bin/false -d /dev/null -g sambashare francis
useradd -s /bin/false -d /dev/null -g sambashare olivier
Afin de mettre en place le contrôle d’accès aux fichiers, il faut ajouter chacun des user au groupe sambashare :
groupadd sambashare
adduser nas sambashare
adduser virtuel sambashare
adduser lafontaj sambashare
adduser francis sambashare
adduser olivier sambashare
adduser squeezeboxserver sambashare
Changer le propriétaire des répertoires à partager :
chown :sambashare -R /media/nas1
chown :sambashare -R /media/nas2
chown :sambashare -R /media/nas3
Définir les permissions de groupe sur les répertoires :
chmod 775 -R /media/nas1
chmod 775 -R /media/nas2
chmod 775 -R /media/nas3
Mettre le groupe comme propriétaire pour chaque création de fichiers :
chmod g+s -R /media/nas1
chmod g+s -R /media/nas2
chmod g+s -R /media/nas3
Modifier le umask de création de fichiers par défaut pour créer des fichiers qui peuvent être lus par les membres du groupe :
Cette modification doit être effectuée sur le compte nas ainsi que chacune des stations de travail Linux (NFS) qui partagera avec Windows (Les postes Windows sont gérées dans le smb.conf puisque connectés par samba et le masque est contrôlé de là.)
nano /etc/login.defs
changer
umask 022 pour 002
Le paramètre est aussi modifiable dans le home (.profile) de chaque usager.
Après avoir fermé la session et s’être réauthentifié, on peut vérifier avec la commande :
umask
on doit obtenir 0002
Dernière chose à faire avant de pouvoir accéder au répertoire partagé de votre machine, il faut créer des mots de passe pour les comptes qui auront accès à ceux-ci. Samba n’utilise pas les mots de passe du système, mais a son propre fichier pour stocker ceux-ci (/etc/smbpasswd).
Pour créer les mots de passe samba pour chaque utilisateur du partage :
smbpasswd -a
(remplacer )
smbpasswd -a nas
smbpasswd -a virtuel
smbpasswd -a lafontaj
smbpasswd -a francis
smbpasswd -a olivier
New SMB password:
Retype new SMB password:
Added user username.
Paramétrage des partages du groupe de travail:
Édition de /etc/samba/smb.conf
nano /etc/samba/smb.conf
Faite une sauvegarde du fichier smb.conf en ajoutant le suffixe .old (smb.conf.old) si requis, il sera alors possible de réinstallé samba comme à l’origine.
#======================= Global Settings =======================
[global] #Ajout pour le support ACL #vfs objects = acl_xattr # map acl inherit = yes # store dos attributes = yes
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=8192 SO_SNDBUF=8192 name resolve order = bcast host
rlimit_max= 16384
## Browsing/Identification ###
workgroup = WORKGROUP server string = %h server (Samba, Ubuntu) hide files = /lost+found/.Trash*/ wins support = no dns proxy = no
#### Networking ####
#### Debugging/Accounting ####
log file = /var/log/samba/log.%m max log size = 1000 syslog = 0 panic action = /usr/share/samba/panic-action %d
####### Authentication #######
security = user valid users = nas, lafontaj, famille, francis, olivier, virtuel, @sambashare encrypt passwords = true passdb backend = tdbsam obey pam restrictions = yes
# This boolean parameter controls whether Samba attempts to sync the Unix # password with the SMB password when the encrypted SMB password in the # passdb is changed.
unix password sync = yes
# For Unix password sync to work on a Debian GNU/Linux system, the following # parameters must be set (thanks to Ian Kahan <<kahan@informatik.tu-muenchen.de> for # sending the correct chat script for the passwd program in Debian Sarge).</kahan@informatik.tu-muenchen.de>
passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
# This boolean controls whether PAM will be used for password changes # when requested by an SMB client instead of the program listed in # 'passwd program'. The default is 'no'.
# pam password change = yes
# This option controls how unsuccessful authentication attempts are mapped # to anonymous connections
map to guest = bad user
########## Domains ###########
########## Printing ##########
load printers = no printing = bsd printcap name = /dev/null disable spoolss = yes
############ Misc ############
# Allow users who've been granted usershare privileges to create # public shares, not just authenticated ones
# usershare allow guests = yes
#======================= Share Definitions =======================
#[homes] # comment = NAS - Répertoire home de nas1 # path = /home/nas # read only = Yes # write list = nas # #read list = utilisateur1, utilisateur2, @groupe12000 # create mask = 0775 # directory mask = 0770
#Partage des disques de la machine nas1 [Documents des enfants] comment = Dossier des documents des enfants sur nas1 path = /media/nas1/Documents/LesEnfants read only = yes write list = nas, lafontaj, famille, francis, olivier, virtuel, @sambashare #read list = utilisateur1, utilisateur2, @groupe12000 create mask = 0775 directory mask = 0775
[Documents des parents] comment = Dossier des documents des parents sur nas1 path = /media/nas1/Documents/LesParents read only = yes write list = nas, lafontaj, virtuel, @sambashare #read list = utilisateur1, utilisateur2, @groupe12000 create mask = 0775 directory mask = 0775
#Partage des disques de la machine nas1 [Downloads sur nas1] comment = Dossier de téléchargements sur nas1 path = /media/nas1/Download read only = yes write list = nas, lafontaj, famille, francis, olivier, virtuel, @sambashare #read list = utilisateur1, utilisateur2, @groupe12000 create mask = 0775 directory mask = 0775
#Partage des disques de la machine nas1 [nas1] comment = Disque en partage sur nas1 path = /media/nas1 read only = yes write list = nas #read list = utilisateur1, utilisateur2, @groupe12000 create mask = 0775 directory mask = 0775
[nas2] comment = Disque en partage sur nas1 path = /media/nas2 read only = Yes write list = nas, lafontaj, famille, francis, olivier, virtuel, @sambashare #read list = utilisateur1, utilisateur2, @groupe12000 create mask = 0775 directory mask = 0775
[nas3] comment = Disque en partage sur nas1 path = /media/nas3 read only = Yes write list = nas, lafontaj, famille, francis, olivier, virtuel, @sambashare #read list = utilisateur1, utilisateur2, @groupe12000 create mask = 0775 directory mask = 0775
Redémarrage de SAMBA
service nmbd restart
service smbd restart