GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment installer et configurer samba sur RHEL 8 / CentOS 8

Samba fournit des logiciels serveur et client pour permettre le partage de fichiers entre les machines Linux et Windows. L'installer et le configurer sur RHEL 8 / CentOS 8 est assez simple. Continuez à lire pour savoir comment partager un répertoire avec samba et comment lui appliquer le contexte SELinux approprié.

Dans ce didacticiel, vous apprendrez :

  • Comment installer Samba sur RHEL8
  • Comment activer et démarrer les démons smb et nmb
  • Comment créer un partage Samba
  • Comment configurer le pare-feu pour autoriser l'accès au partage Samba
  • Comment configurer le bon contexte SELinux pour que Samba fonctionne correctement

Partages Samba sur RHEL 8 / CentOS 8

Configuration logicielle requise et conventions utilisées

Configuration logicielle requise et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version du logiciel utilisée
Système Red Hat Enterprise Linux 8
Logiciel Packages Samba, coreutils et policycoreutils-python-utils
Autre Autorisation d'exécuter la commande avec les privilèges root.
Conventions # - nécessite que les commandes linux données soient exécutées avec les privilèges root soit directement en tant qu'utilisateur root, soit en utilisant sudo commande
$ – nécessite que les commandes linux données soient exécutées en tant qu'utilisateur normal non privilégié

Présentation de Samba

Samba, comme indiqué sur la page d'accueil du projet, est un logiciel open source, publié sous la GPL licence, qui nous permet de partager des fichiers et des services d'impression en utilisant le SMB/CIFS protocole.

Le projet fournit à la fois un logiciel serveur et un logiciel client pour permettre l'interopérabilité avec les machines Windows, ce qui représente la solution idéale dans les environnements mixtes. Dans ce didacticiel, nous verrons comment installer Samba sur Red Hat Enterprise Linux 8, comment configurer un partage Samba, comment configurer le pare-feu pour autoriser l'accès aux ressources partagées et comment appliquer le contexte SELinux approprié.

Installation

La première chose que nous devons faire est d'installer samba sur notre machine. Le package et les bibliothèques nécessaires sont disponibles dans les référentiels officiels RHEL 8 / CentOS 8, nous pouvons donc les installer simplement en utilisant yum ou dnf. Dans cette version de RHEL/CentOS, la première commande n'est qu'un "lien" vers la seconde :

$ sudo dnf install samba samba-client

Le package samba-client n'est pas strictement nécessaire, mais les utilitaires qu'il fournit peuvent être utiles. Une fois les packages installés, nous devons démarrer et activer le smb et le nmb démons au démarrage. Le premier est le démon qui s'occupe d'effectuer les transferts proprement dits et les opérations de partage, tandis que le second effectue le NetBIOS résolutions de noms, permettant aux ressources d'apparaître lors de la navigation sur le réseau sous Windows. Nous pouvons maintenant activer et démarrer les deux services systemd avec une seule commande :

$ sudo systemctl enable --now {smb,nmb}

Configuration du pare-feu

La prochaine étape est la configuration du pare-feu. Nous devons ouvrir les ports appropriés, afin que les ressources partagées par samba soient accessibles depuis d'autres machines. Le logiciel de gestion de pare-feu par défaut sur RHEL 8 / CentOS 8 est firewalld.

Heureusement pour nous, il n'est pas nécessaire d'ouvrir les ports manuellement :il suffit d'ajouter le service « samba » à notre zone. Un "service" est juste une abstraction qui nous permet d'autoriser le trafic via tous les ports nécessaires à un service, en référençant le nom du service, au lieu d'avoir à configurer (et à mémoriser) chaque port utilisé par celui-ci. Dans le cas où nous voulons recueillir des informations sur un "service", nous pouvons exécuter :

$ sudo firewall-cmd --info-service samba
samba
  ports: 137/udp 138/udp 139/tcp 445/tcp
  protocols:
  source-ports:
  modules: netbios-ns
  destination:

D'après la sortie de la commande, nous voyons que le service autorisera le trafic via les ports 173/udp, 138/udp, 139/tcp et 445/tcp. Pour ajouter définitivement le service à la zone par défaut, nous pouvons exécuter :

$ sudo firewall-cmd --permanent --add-service=samba

Lors de l'exécution de la commande, nous avons utilisé le --permanent switch afin de rendre notre changement persistant. Nous avons également supposé le default zone à utiliser. Si nous voulions spécifier une autre zone sur laquelle l'action doit être appliquée, nous aurions utilisé le --zone option, et a fourni le nom de la zone comme argument (par exemple –zone=external). Comme notre changement est défini comme permanent, pour qu'il devienne effectif, nous devons recharger la configuration du pare-feu :

$ sudo firewall-cmd --reload

Nous pouvons vérifier que le service "samba" fait maintenant partie de notre zone, en lançant :

$ sudo firewall-cmd --list-services
cockpit dhcpv6-client http samba ssh

Encore une fois, si aucune zone n'est spécifiée, la commande est appliquée à la zone par défaut.

Configuration d'un répertoire partagé accessible par les invités

Disons que nous voulons partager un répertoire via samba, et nous voulons laisser libre accès à ce répertoire aux utilisateurs invités, sans qu'ils aient à fournir un mot de passe. Pour obtenir le résultat souhaité, nous devons apporter quelques modifications au /etc/samba/smb.conf fichier, et ajoutez une « strophe » pour notre partage. Ouvrez le fichier avec votre éditeur préféré, et dans le [global] section, ajoutez le texte en surbrillance :

[global]
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
        map to guest = bad user

Le map to guest = bad user l'instruction, mappera les tentatives de connexion avec de mauvais noms d'utilisateur à l'utilisateur invité par défaut, qui, par défaut, est nobody . Ceci est nécessaire pour permettre un accès anonyme sans avoir à fournir de mot de passe.

Après ce changement, nous devons ajouter une nouvelle strophe dédiée à notre partage à la fin du fichier. Nous nommerons la ressource partagée « linuxconfig » :

[linuxconfig]
        path = /mnt/shared
        guest only = yes

Avec la configuration ci-dessus, nous avons déclaré que nous voulions partager le contenu du /mnt/shared répertoire, sans besoin d'authentification de l'utilisateur. Cette configuration est évidemment risquée et n'est présentée ici qu'à titre d'exemple :dans un scénario réel, vous pouvez au moins refuser l'accès en écriture aux invités (vous pouvez le faire en ajoutant le writeable = no instruction). Pour que les modifications soient effectives, nous devons redémarrer les démons :

$ sudo systemctl restart {smb,nmb}

Configurer un partage accessible uniquement aux utilisateurs enregistrés

Pour protéger l'accès à une ressource avec une invite de connexion, lorsque samba s'exécute en tant que serveur autonome, nous devons ajouter un utilisateur existant à la base de données samba. Les informations d'identification de cet utilisateur seront nécessaires pour accéder au répertoire partagé. Pour des raisons de sécurité, il est recommandé de créer un utilisateur dédié à la tâche, en omettant la création de son répertoire personnel, et en lui attribuant un faux shell :

$ sudo adduser -M sambauser -s /sbin/nologin

Le -M l'option passée à la commande est la forme courte de --no-create-home , ce qui est assez explicite ; le -s option, à la place, spécifions un shell, dans ce cas un shell volontairement invalide :/sbin/nologin . À ce stade, l'utilisateur n'a même pas besoin de définir un mot de passe sur notre système.

Une fois l'utilisateur créé, nous devons l'ajouter à la base de données samba :nous pouvons effectuer l'opération en utilisant le smbpasswd commande :

$ sudo smbpasswd -a sambauser
New SMB password:
Retype new SMB password:
Added user sambauser.

Après avoir exécuté la commande, nous sommes invités à attribuer un mot de passe à l'utilisateur, ainsi qu'à le confirmer :ce mot de passe ne sera valide que dans le contexte samba, n'a rien à voir avec le compte d'utilisateur sur notre système. Pour restreindre le partage que nous avons créé précédemment, nous devons apporter une petite modification dans la section dédiée :

[linuxconfig]
        path = /mnt/shared
        guest ok = no

Nous pouvons vérifier que notre configuration est valide, en utilisant le testparm commande :

$ testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Processing section "[linuxconfig]"
Loaded services file OK.
Server role: ROLE_STANDALONE

Encore une fois, nous devons redémarrer le smb et nmb démons pour que nos modifications soient effectives. Le répertoire partagé ne sera désormais accessible qu'après avoir fourni les informations d'identification correctes.

Configurer SELinux pour samba

SELinux est souvent vu comme une complication, et tout de suite désactivé. Ce n'est pas nécessaire :nous devons seulement apprendre à le configurer et profiter de l'amélioration de la sécurité qu'il apporte. Pour que notre partage samba fonctionne lorsque SELinux est en mode "application", nous devons attribuer le contexte approprié à notre répertoire et à nos fichiers partagés :

$ sudo chcon -R -t samba_share_t /mnt/shared

Dans l'exemple ci-dessus, nous avons utilisé le chcon commande avec le -t option, pour changer le TYPE section du contexte SELinux vers samba_share_t . Nous avons également utilisé le -R commutateur pour rendre la commande récursive. Cette modification survivra à un redémarrage, mais pas à un réétiquetage du système si une politique par défaut existe pour notre répertoire et nos fichiers, car dans ce cas, la configuration par défaut serait réappliquée.

Si nous voulons que notre modification survive à un événement de réétiquetage, nous devons ajouter notre règle à la stratégie. Nous pouvons le faire en utilisant le semanage commande :

$ sudo semanage fcontext -a -t samba_share_t "/mnt/shared(/.*)?"

Puisque nous avons utilisé le (/.*)? regex, la règle sera appliquée à tout le contenu du répertoire « partagé », et au répertoire lui-même. Nous pouvons vérifier que notre règle a été ajoutée à la politique en répertoriant les libellés utilisés sur notre système :

$ sudo semanage fcontext -l | grep /mnt/shared
/mnt/shared(/.*)?                                  all files          system_u:object_r:samba_share_t:s0

Nous devrions maintenant avoir une configuration de samba fonctionnelle. Pour peaufiner davantage la configuration de samba, nous devrons peut-être également manipuler les booléens SELinux. Par exemple, lors de l'ajout d'utilisateurs existants à samba, pour que leurs répertoires personnels soient partagés, nous devons activer le booléen SELinux dédié. Pour lister tous les booléens liés à la samba, nous pouvons exécuter :

$ sudo semanage boolean -l|grep samba
samba_create_home_dirs         (off  ,  off)  Allow samba to create home dirs
samba_domain_controller        (off  ,  off)  Allow samba to domain controller
samba_enable_home_dirs         (off  ,  off)  Allow samba to enable home dirs
samba_export_all_ro            (off  ,  off)  Allow samba to export all ro
samba_export_all_rw            (off  ,  off)  Allow samba to export all rw
samba_load_libgfapi            (off  ,  off)  Allow samba to load libgfapi
samba_portmapper               (off  ,  off)  Allow samba to portmapper
samba_run_unconfined           (off  ,  off)  Allow samba to run unconfined
samba_share_fusefs             (off  ,  off)  Allow samba to share fusefs
samba_share_nfs                (off  ,  off)  Allow samba to share nfs
sanlock_use_samba              (off  ,  off)  Allow sanlock to use samba
tmpreaper_use_samba            (off  ,  off)  Allow tmpreaper to use samba
use_samba_home_dirs            (off  ,  off)  Allow use to samba home dirs
virt_use_samba                 (off  ,  off)  Allow virt to use samba

Dans la sortie ci-dessus, la deuxième colonne indique la valeur actuelle du booléen, tandis que la troisième la valeur par défaut (les deux sont désactivées, dans ce cas). Le booléen que nous voulons activer, pour permettre le partage des répertoires personnels, est samba_enable_home_dirs . Nous pouvons effectuer l'opération en utilisant le setsebool commande :

$ sudo setsebool samba_enable_home_dirs=1

Conclusion

Dans ce tutoriel, nous avons vu comment installer samba sur un système RHEL 8 / CentOS 8. Nous avons également vu comment partager un répertoire, autoriser l'accès aux invités ou le restreindre aux utilisateurs authentifiés. Nous avons également vu comment configurer le pare-feu afin que le partage soit accessible depuis d'autres machines du réseau.

Enfin, nous avons vu comment effectuer les modifications nécessaires afin d'avoir une configuration de samba fonctionnelle avec SELinux en mode « application ». Si SELinux vous intéresse, vous pouvez également lire notre article sur le sujet.


Cent OS
  1. Comment installer et configurer Nginx sur CentOS 7

  2. Comment installer et configurer R sur le système Linux RHEL 8 / CentOS 8

  3. CentOS / RHEL 7 :Comment installer et configurer telnet

  4. Comment installer et configurer Samba dans CentOS / RHEL

  5. Comment installer et configurer telnet dans RHEL / CentOS 5,6

Comment installer et configurer le serveur VNC dans CentOS 7 / RHEL 7

Comment installer et configurer Samba sur CentOS 8

Comment installer Samba sur RHEL et CentOS Stream

Comment installer et configurer Jenkins sur CentOS 8 / RHEL 8

Comment installer et configurer MariaDB dans CentOS / RHEL 7

Comment installer et configurer VNC Server sur CentOS/RHEL 8