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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.