Rhcsa samba

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Configuration détaillée d'un serveur Samba
Fichier /etc/samba/smb.conf
Voir aussi Samba · Options samba · Samba rhel7

Mise en œuvre pas à pas d'un serveur Samba : mode de sécurité, base de comptes, journaux, partages spéciaux (homes, imprimantes, netlogon, profils), rappel SELinux. Complète le glossaire de directives disponible sur Options samba.

Base

vi /etc/samba/smb.conf
workgroup = MYGROUP
server string = Samba Server Version %v
; netbios name = MYSERVER          # limité à 15 caractères
; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
; hosts allow = 127. 192.168.12. 192.168.13.

Journalisation

# un fichier de log distinct par machine cliente
log file = /var/log/samba/%m.log
# rotation après 50 Ko par fichier
max log size = 50

Mode de sécurité

security = {user|domain|ads|server|share}
Valeur Signification
user Base de comptes locale au serveur Samba
domain Authentification via un contrôleur de domaine Active Directory (standard AD)
ads Authentification via un domaine Active Directory en mode natif (Kerberos)
server Authentification déléguée à un serveur tiers qui n'est pas un AD
share Mode peer-to-peer, aucune authentification (workgroup)

Base de comptes

Gestion locale (/etc/samba) :

passdb backend = smbpasswd   # fichier plat historique
passdb backend = tdbsam      # Trivial Database Security Accounts Manager (par défaut)

Gestion via un annuaire LDAP :

passdb backend = ldapsam

Selon le mode de sécurité choisi :

; password server = <nom-du-serveur-NT>   # pour security = server ou security = domain
; realm = MON_REALM                        # pour security = ads

Options de contrôleur de domaine :

; domain master = yes
; domain logins = yes

Scripts de connexion (clients Windows)

; logon script = %m.bat        # script selon le nom de la machine
; logon script = %U.bat        # script selon l'utilisateur Unix
; logon path = \\%L\Profiles\%U

Samba peut aussi déléguer la gestion des comptes/groupes/machines à des scripts système (auto-explicatifs) :

; add user script = /usr/sbin/useradd %u -n -g users
; add group script = /usr/sbin/groupadd %g
; add machine script = /usr/sbin/adduser -n -c "Workstation (%u)" -M -d /nohome -s /bin/false %u
; delete user script = /usr/sbin/userdel %u
; delete user from group script = /usr/sbin/userdel %u %g
; delete group script = /usr/sbin/groupdel %g

Contrôle du navigateur réseau (browsing)

; local master = no
; os level = 33
; preferred master = yes

Résolution de noms

; wins support = yes
; wins server = w.x.y.z
; wins proxy = yes
; dns proxy = yes

Impression

load printers = yes
cups options = raw
printcap name = /etc/printcap   # imprimantes définies dans le fichier de configuration
printcap name = lpstat          # imprimante réseau

Attributs de système de fichiers

; map archive = no
; map hidden = no
; map read only = no
; map system = no
; store dos attributes = yes

Répertoires personnels partagés

[homes]
comment = Home Directories
browseable = no
writable = yes

Partage d'imprimantes

# avec un système d'impression BSD, inutile de définir chaque imprimante individuellement
[printers]
comment = All Printers
path = /usr/spool/samba
browseable = no
guest ok = no          # passer à "yes" pour autoriser le compte invité à imprimer
writable = no
printable = yes

Netlogon (domain logons)

; [netlogon]
; comment = Network Logon Service
; path = /var/lib/samba/netlogon
; guest ok = yes
; writable = no
; share modes = no

Profils itinérants

; [Profiles]
; path = /var/lib/samba/profiles
; browseable = no
; guest ok = yes

Répertoires de groupe

# répertoire public en lecture seule, sauf pour le groupe "staff"
;[public]
; comment = Public Stuff
; path = /home/samba
; public = yes
; writable = yes
; printable = no
; write list = +staff
; create mask = 0770
; directory mask = 2770

Rappel SELinux

chcon -R -t samba_share_t /home/samba
semanage fcontext -a -t samba_share_t /home/samba

Détail des contextes et booléens SELinux liés à Samba : voir Selinux samba.

Rejoindre un domaine

net rpc join -U root          # un seul contrôleur de domaine présent
net rpc join -S DC -U root    # plusieurs domaines

Base d'utilisateurs

username map = /etc/samba/smbusers

⚠️ Un utilisateur Samba ne peut être créé que depuis un compte Linux déjà existant :

useradd winuser1 -s /sbin/nologin
smbpasswd -a winuser1

Commande smbpasswd

Option Effet
-a utilisateur Ajoute l'utilisateur à la base
-d utilisateur Désactive l'utilisateur (coupe l'authentification réseau Microsoft)
-e utilisateur Réactive l'utilisateur (inverse de -d)
-r machine Change le mot de passe sur une machine distante (Windows ou Samba), en général avec -U
-U utilisateur Utilisateur ciblé sur la machine distante, avec -r
-x utilisateur Supprime l'utilisateur de la base

Emplacement des fichiers de comptes

  • passdb backend = smbpasswd/etc/samba/smbpasswd
  • passdb backend = tdbsam/var/lib/samba/private

Lister les utilisateurs courants :

pdbedit -L

Exemple : partage public

vi /etc/samba/smb.conf
[PublicShare]
comment = Shared Public Directory
path = /home/PublicShare
writeable = yes
browseable = yes
guest ok = yes
testparm                                            # valide la syntaxe
smbclient -L sambaserver -U utilisateur             # liste les partages exposés
mount "//sambaserver/utilisateur" /share -o username=root

Voir aussi

  • Samba — présentation générale, installation, intégration AD
  • Options samba — glossaire des directives de smb.conf
  • Samba rhel7 — spécificités RHEL7 (systemd, firewalld, montage multiuser)
  • Selinux samba — contextes, ports et booléens SELinux