Samba : utilisez Samba pour fournir un système de fichiers partagé aux clients distants

écrire devant


  • Partagez quelques notes de construction pour les PME
  • Organisation des examens
  • Si vous ne comprenez pas suffisamment, aidez-moi à le corriger.

Il n’y a qu’une seule véritable responsabilité pour chacun : se retrouver. Ensuite, tenez-vous-en à cela dans votre cœur pour le reste de votre vie, de tout cœur, et ne vous arrêtez jamais. Tous les autres chemins sont incomplets, fuites humaines, retours lâches aux idéaux populaires, dérives, peurs intérieures - Hermann Hesse, "Demian"


Une brève introduction à la PME

SMB协议Développé à l'origine Microsoft开发, il est ensuite devenu le protocole de partage de fichiers le plus couramment utilisé sur les réseaux Windows. Le protocole SMB peut également être utilisé pour le partage de fichiers avec les systèmes Unix ou Linux. Grâce au progiciel Samba, les systèmes Unix et Linux peuvent fournir des services de partage de fichiers en tant que serveurs SMB, permettant aux systèmes Windows d'accéder aux fichiers et imprimantes partagés.

NFSIl permet aux machines Unix et Linux de communiquer ou aux machines Windows de communiquer. SMB peut permettre aux machines Windows de communiquer avec les machines Unix ou Linux.

En utilisation réelle, il SMB协议est plus couramment Windows操作系统utilisé dans 文件共享协议, ce qui permet Windows系统de partager des fichiers et des imprimantes entre .

Samba

SambaSMBC'est un logiciel gratuit qui implémente le protocole sur un système Linux . 局域网上共享文件和打印机C'est un protocole de communication composé de programmes serveur et client.

Les fonctions suivantes peuvent être réalisées :

  • 文件共享: Samba peut partager des fichiers et des répertoires sur les systèmes Linux/UNIX avec Windows, macOS et d'autres clients prenant en charge le protocole SMB/CIFS. Cela signifie que vous pouvez utiliser Samba pour partager des fichiers et des répertoires entre différents systèmes d'exploitation.
  • 打印机共享: Samba vous permet de connecter une imprimante à un système Linux/UNIX et de la partager avec Windows, macOS et d'autres clients via le protocole SMB/CIFS. De cette façon, vous pouvez partager l'imprimante sur votre réseau et permettre à plusieurs utilisateurs d'utiliser la même imprimante.
  • 认证和授权: Samba fournit des mécanismes d'authentification et de contrôle d'accès qui vous permettent de configurer l'authentification des utilisateurs, les autorisations d'accès et les niveaux de partage. Vous pouvez créer des comptes d'utilisateurs, définir des politiques de mot de passe et spécifier différentes autorisations d'accès pour les répertoires partagés.
  • 域控制器: Samba peut agir comme un contrôleur de domaine, offrant des fonctionnalités similaires aux domaines Windows. Vous pouvez utiliser Samba pour créer et gérer des comptes d'utilisateurs, des groupes, des politiques et mettre en œuvre une gestion et une authentification centralisées.
  • 家庭文件服务器: Vous pouvez utiliser Samba pour configurer un serveur de fichiers sur votre réseau domestique, permettant aux membres de la famille de partager des fichiers et des répertoires et d'effectuer un contrôle d'accès.
  • 安全性和加密: Samba prend en charge la communication cryptée et assure la protection des données et la transmission sécurisée. Vous pouvez configurer Samba pour qu'il utilise le protocole de cryptage SSL/TLS afin de protéger la transmission et le stockage des données.
  • 跨平台兼容性: Samba offre une bonne compatibilité avec les réseaux Windows, permettant aux systèmes Linux/UNIX d'être intégrés de manière transparente aux réseaux Windows.

Explication simple du processus d'accès à Samba

  • Le serveur Samba démarre et écoute sur le port spécifié (la valeur par défaut est le port 445).
  • Le client lance une demande de connexion pour se connecter au serveur Samba.
  • Le serveur Samba reçoit la demande de connexion et établit une connexion avec le client.
  • Le client envoie des requêtes SMB/CIFS au serveur Samba, demandant l'accès aux ressources partagées ou pour effectuer des opérations spécifiques.
  • Le serveur Samba analyse la requête et effectue les opérations correspondantes en fonction du type de requête et des paramètres.
  • Si la demande implique l'accès à une ressource partagée, le serveur Samba vérifie les informations d'authentification du client et détermine s'il doit accorder l'accès en fonction des règles de contrôle d'accès du fichier de configuration.
  • Le serveur Samba effectue l'opération demandée telle que lire, écrire, créer, supprimer des fichiers, etc.
  • Le serveur Samba génère une réponse et renvoie la réponse au client.
  • Le client reçoit la réponse, la traite et l'affiche en conséquence en fonction du contenu de la réponse.

L'hôte peut agir en tant que 客户端, ou pour 服务器accéder et fournir SMBdes partages de fichiers :

  • Comme 客户端, le montage SMBd'un partage de fichiers nécessite cifs-utilségalement l'installation du package samba-client.
  • Comme 服务器, le partage d'un répertoire à l'aide SMBdu protocole nécessite l'installation sambadu package.

Les étapes de base pour la configuration de l'environnement Linux SMB共享sont les suivantes :

  • Installez sambale paquet.
  • Préparer Sambales utilisateurs
  • Préparez le répertoire partagé.
  • Configurer /etc/samba/smb.confle fichier de configuration
  • Démarrez Sambaet ouvrez le pare-feu local
  • Montez le partage à partir du système client SMBpour vérifier votre configuration.

Installation et déploiement

Configurez- serverdle en tant que SMBserveur de fichiers autonome qui partagera /smbsharedes répertoires. Vous pouvez utiliser multiuserl'option de montage pour serveraconfigurer ce SMBpartage afin qu'il soit monté /designssous un répertoire.

Installez le paquet samba.

[root@serverd ~]# yum install  samba -y
Red Hat Enterprise Linux 8.1 BaseOS (dvd)                               21 MB/s | 2.2 MB     00:00
Red Hat Enterprise Linux 8.1 AppStream (dvd)                            32 MB/s | 5.6 MB     00:00

Créez marketingdes groupes et /smbsharedes répertoires. Répertoire de configuration /smbshare, autres configurations :

  • Ce répertoire appartient à ce marketinggroupe
  • Ce répertoire a SGIDdes bits définis
  • Tout le monde a un accès en lecture au répertoire, mais seul marketingle groupe peut écrire
  • Le catalogue a samba_share_t SELinuxun type de contexte
#创建 marketing 组。
[root@serverd ~]# groupadd marketing
#创建 /smbshare ⽬录。
[root@serverd ~]# mkdir /smbshare
#将 /smbshare ⽬录的组所有权更改为 marketing。
[root@serverd ~]# chgrp marketing /smbshare
#在⽬录上设置 SGID 位,并且仅向该 marketing 组授予写⼊权限。
[root@serverd ~]# chmod 2775 /smbshare
#在 SELinux 策略中添加⼀条规则,使 /smbshare ⽬录及其内容的上下⽂类型为
samba_share_t。
[root@serverd ~]# semanage fcontext -a -t samba_share_t '/smbshare(/.*)?'
#将 SELinux 规则应⽤到 /smbshare ⽬录。
[root@serverd ~]# restorecon -Rv /smbshare
Relabeled /smbshare from unconfined_u:object_r:default_t:s0 to
 unconfined_u:object_r:samba_share_t:s0
#验证⼯作成果。组权限、组所有权和 SELinux 类型应与以下输出匹配。
[root@serverd ~]# ls -ldZ /smbshare
drwxrwsr-x. 2 root marketing unconfined_u:object_r:samba_share_t:s0 6 May 22
 08:10 /smbshare

Modifiez /etc/samba/smb.confle fichier de configuration et configurez-le selon les exigences suivantes

  • Définir le groupe de travail sur MYCOMPANY
  • Configurez Sambaselon vos besoins 加密流量.
  • Forcer Samba est uniquement pris en charge SMB 版本 3 和更⾼版本.
  • Créez un partage nommé data.
  • /smbshareRépertoire partagé .
  • Protégez le partage afin que tout le monde puisse y accéder, mais que seuls les membres du groupe marketing disposent d'un accès en écriture.

Modifiez /etc/samba/smb.confle fichier et workgroupdéfinissez la commande surMYCOMPANY。

...output omitted...
[global]
 workgroup = MYCOMPANY
...output omitted...

Sous la section [global], 强制加密, et 最⼩协议版本défini sur SMB3.

...output omitted...
[global]
 workgroup = MYCOMPANY
 smb encrypt = required
 server min protocol = SMB3
...output omitted...

À la fin du fichier, ajoutez ce qui suit pour définir le nouveau partage.

...output omitted...
[data]
 path = /smbshare
 write list = @marketing  ;配置项指定了具有写权限的用户或用户组。

Une fois terminé, enregistrez et fermez le fichier.

Exécutez testparmla commande pour vérifier /etc/samba/smb.confle fichier de configuration

[root@serverd ~]# testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
Enter
...output omitted...

Créez un compte utilisateur Samba uniquement developer1et ajoutez-le au marketinggroupe. Ce compte utilisateur dispose d'un accès en écriture au partage car il est membre du groupe marketing.

[root@serverd ~]# useradd -s /sbin/nologin -G marketing developer1

Créez un compte utilisateur Operator1 réservé à Samba. Ne l'ajoutez pas au marketinggroupe afin qu'il ait un accès en lecture seule au partage. Définissez le mot de passe SMB pour les deux comptes sur redhat.

Ajouter le compte utilisateur Developer1 à Samba

[root@serverd ~]# smbpasswd -a developer1

opération complète

[root@serverd ~]# groupadd marketing
[root@serverd ~]# mkdir  /smbshare
[root@serverd ~]# chgrp marketing  /smbshare
[root@serverd ~]# chmod 2775  /smbshare
[root@serverd ~]# semanage  fcontext -a -t samba_share_t '/smbshare(/.)?'
[root@serverd ~]# restorecon -Rv /s
sbin/     smbshare/ srv/      sys/
[root@serverd ~]# restorecon -Rv /s
sbin/     smbshare/ srv/      sys/
[root@serverd ~]# restorecon -Rv /smbshare
Relabeled /smbshare from unconfined_u:object_r:default_t:s0 to unconfined_u:object_r:samba_share_t:s0
[root@serverd ~]# ls -ldZ /smbshare
drwxrwsr-x. 2 root marketing unconfined_u:object_r:samba_share_t:s0 6 Jul  6 20:43 /smbshare
[root@serverd ~]# vim /etc/samba/smb.conf
[root@serverd ~]# testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
        printcap name = cups
        security = USER
        server min protocol = SMB3
        workgroup = MYCOMPANY
        idmap config * : backend = tdb
        cups options = raw
        smb encrypt = required


[homes]
        browseable = No
        comment = Home Directories
        inherit acls = Yes
        read only = No
        valid users = %S %D%w%S


[printers]
        browseable = No
        comment = All Printers
        create mask = 0600
        path = /var/tmp
        printable = Yes


[print$]
        comment = Printer Drivers
        create mask = 0664
        directory mask = 0775
        force group = @printadmin
        path = /var/lib/samba/drivers
        write list = @printadmin root


[data]
        path = /smbshare
        write list = @markting

Ajoutez smbun utilisateur, utilisez ici l'utilisateur système, créez d'abord l'utilisateur système, puis ajoutez l'utilisateur smb correspondant

[root@serverd ~]# useradd  -s /sbin/nologin -G marketing developer1
[root@serverd ~]# smbpasswd -a developer1
New SMB password:
Retype new SMB password:
Added user developer1.
[root@serverd ~]# useradd  -s /sbin/nologin operator1
[root@serverd ~]# smbpasswd -a operator1
New SMB password:
Retype new SMB password:
Added user operator1.
[root@serverd ~]# useradd  -r -s /sbin/nologin sambamount
[root@serverd ~]# smbpasswd -a sambamount
New SMB password:
Retype new SMB password:
Added user sambamount.

Configurer smble démarrage automatique au démarrage

[root@serverd ~]# systemctl enable  --now smb
Created symlink /etc/systemd/system/multi-user.target.wants/smb.service → /usr/lib/systemd/system/smb.service.

Vérifier l'état du service

[root@serverd ~]# systemctl status smb
● smb.service - Samba SMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2023-07-06 21:17:54 CST; 18s ago
     Docs: man:smbd(8)
           man:samba(7)
           man:smb.conf(5)
 Main PID: 2822 (smbd)
   Status: "smbd: ready to serve connections..."
    Tasks: 4 (limit: 11251)
   Memory: 8.3M
   CGroup: /system.slice/smb.service
           ├─2822 /usr/sbin/smbd --foreground --no-process-group
           ├─2824 /usr/sbin/smbd --foreground --no-process-group
           ├─2825 /usr/sbin/smbd --foreground --no-process-group
           └─2826 /usr/sbin/smbd --foreground --no-process-group

Jul 06 21:17:54 serverd.lab.example.com systemd[1]: Starting Samba SMB Daemon...
Jul 06 21:17:54 serverd.lab.example.com smbd[2822]: [2023/07/06 21:17:54.189066,  0] ../../lib/util/be>
Jul 06 21:17:54 serverd.lab.example.com systemd[1]: Started Samba SMB Daemon.
Jul 06 21:17:54 serverd.lab.example.com smbd[2822]:   daemon_ready: daemon 'smbd' finished starting up>

passe du pare-feu

[root@serverd ~]# firewall-cmd --permanent --add-service=samba
success
[root@serverd ~]# firewall-cmd --reload
success

Montez de manière permanente le partage de données SMB sous le point de montage serverasur /designs. Pour ce faire, créez un fichier en utilisant sambamountles informations d'identification de l'utilisateur . /etc/samba/creds.txtUtilisez /etc/fstables options de montage credentials、multiuseret sealpour activer le mode multi-utilisateur et crypter les communications.

Installez cifs-utilsle package qui fournit mount.cifsla commande

[root@servera ~]# yum install cifs-utils

Créez /etc/samba/creds.txtun fichier pour fournir le compte et le mot de passe utilisés pour monter le partage. Utilisez sambamountle compte et le mot de passe est redhat.

username=sambamount
password=redhat

Protégez le fichier afin que seuls rootles utilisateurs puissent y accéder

[root@servera ~]# chmod 600 /etc/samba/creds.txt

Créer /designsun point de montage

[root@servera ~]# mkdir /designs

Modifiez /etc/fstable fichier et ajoutez une entrée pour le partage SMB. Définissez le nouveau montage suivant sur une seule ligne, sans saut de ligne.

//serverd.lab.example.com/data /designs cifs credentials=/etc/samba/creds.txt,multiuser,seal 0 0

credentials=/etc/samba/cred.txt: Spécifie le chemin du fichier pour le compte utilisateur et le mot de passe. Le service Samba obtiendra les informations d'authentification de connexion de l'utilisateur à partir de ce fichier.

multiuser: Indique que plusieurs utilisateurs sont autorisés à se connecter à ce partage en même temps. Si ce paramètre n'est pas précisé, un seul utilisateur est autorisé à se connecter par défaut.

seal: Indique que Samba stocke les informations du compte utilisateur dans le fichier cred.txt sous forme de simple texte brut au lieu d'utiliser une méthode de cryptage plus sécurisée.

Montez le système de fichiers et vérifiez que le montage a réussi.

[root@servera ~]# mount /designs
[root@servera ~]# df /designs
Filesystem 1K-blocks Used Available Use% Mounted on
//serverd.lab.example.com/data 10474476 2289868 8184608 22% /designs

Testez l’accès au partage. Pour ce faire, connectez-vous en tant qu'utilisateur développeur1, fournissez les informations d'identification SMB de cet utilisateur, puis confirmez que vous pouvez écrire sur le partage.

Exécutez le même test que l’utilisateur Operator1. Ce compte utilisateur dispose uniquement d'un accès en lecture car il n'appartient pas au groupe marketing. Connectez-vous en tant qu'utilisateur développeur1. Le script de laboratoire a créé ce compte utilisateur pour vous.

[root@servera ~]# su - developer1
[developer1@servera ~]$ 

Démo complète

sambaPartage de configuration de serveur

serveraPréparez-vous à partager sursamba :

  • Créer un dossier partagé/common
  • Le mot de passe pour la vérification de l'utilisateur robestcompede
  • Le mot de passe pour la vérification de l'utilisateur brianestpostroll

Étapes de déploiement :

  1. Installez le package de données correspondant
  2. Ajouter l'utilisateur PME correspondant
  3. Autorisation du répertoire partagé
  4. Configuration SElinux
yum -y install samba samba-client

Assurer la sécurité des utilisateurs locaux et fournir la configuration correspondante pour bash qui ne peut pas se connecter

# id brian; id rob
# egrep 'brian|rob' /etc/passwd
# usermod -s /sbin/nologin brian
# usermod -s /sbin/nologin rob

ajouter smbun utilisateur

[root@servera ~]# pdbedit -L
[root@servera ~]# smbpasswd -a brian
New SMB password: `postroll`
Retype new SMB password: `postroll`
Added user brian.
[root@servera ~]# (echo compede; echo compede) | smbpasswd -a rob
New SMB password:
Retype new SMB password:
Added user rob.
[root@servera ~]# pdbedit -L
brian
rob

Créez un dossier partagé. Ici, vous devez configurer les autorisations correspondantes. Comme ci-dessus, ajoutez brianun groupe et accordez les autorisations GID.

mkdir /common
chown :brian /common
chmod 2775 /common

Vérifiez le type de relation de contexte, la configurationSELinux

# vim /etc/samba/smb.conf.example
# yum provides semanage
# yum -y install policycoreutils-python-utils

查上下文关系命令

# man semanage fcontext | grep \#
# semanage fcontext -a -t samba_share_t "/common(/.*)?"
# restorecon -Rv /common
# ls -ldZ /common/
drwxrwsr-x. 2 root brian unconfined_u:object_r:`samba_share_t`:s0 6 Aug 7 13:05
/common/

Utilisez plusieurs utilisateurs pour accéder aux répertoires partagés Samba

Configurez le service SMB sur le serveur :

  • Votre SMBserveur doit être STAFFmembre du groupe de travail
  • Partager /commonLe nom du partage de répertoire doit êtrecommon
  • Seuls example.comles clients du domaine peuvent accéder commonau partage
  • commonDoit être visible
  • Les utilisateurs robdoivent pouvoir lire le contenu du partage
  • Les utilisateurs doivent robaccéder au répertoire en mode lecture seule et brianpeuvent accéder au répertoire en mode lecture-écriture.

Sur , il est nécessaire de monter le répertoire partagé serverbvia smble mode multi-utilisateur.common/mnt/private

  • robIl est nécessaire d'opérer en tant qu'utilisateur lors du montage du répertoire partagé.
  • Il est nécessaire que le répertoire partagé puisse être automatiquement monté à chaque fois que l'ordinateur est allumé.
# vim /etc/samba/smb.conf
...
workgroup = STAFF
...
[common]
        path = /common
        hosts allow = 127. 172.25.
        browseable = Yes 
        write list = @brian
# systemctl enable --now smb nmb

# firewall-cmd --permanent --add-service=samba
# firewall-cmd --reload
# smbclient -L //servera -N
Anonymous login successful

	Sharename       Type      Comment
	---------       ----      -------
...
	`common`         Disk
...

# smbclient -L //servera -U rob%compede
# smbclient //servera/common -U rob%compede

Configuration des clients

# yum search cifs
# yum search samba
# yum -y install cifs-utils samba-client
# smbclient -L //servera -N
# smbclient -L //servera -U rob%compede

# mkdir /mnt/private

# man mount.cifs
# vim /etc/samba/cred.txt
username=rob
password=compede
# chmod 600 /etc/samba/cred.txt
# ll /etc/samba/cred.txt
-rw-------. 1 root root 30 Aug  7 13:31 /etc/samba/cred.txt

# vim /etc/fstab
...
//servera/common /mnt/private cifs credentials=/etc/samba/cred.txt,multiuser,seal 0 0
# mount –a
# df -ht cifs
Filesystem        Size  Used Avail Use% Mounted on
//servera/common   10G  2.2G  7.9G  22% /mnt/private

# ls /mnt/private/
# touch /mnt/private/ro.txt
touch: cannot touch '/mnt/private/ro.txt': Permission denied
# su - brian
$ cifscreds add servera
Password: `postroll`
$ touch /mnt/private/rw.txt
$ ls /mnt/private/rw.txt
-rwxr-xr-x. 1 brian brian 0 Aug  7 13:41 /mnt/private/rw.txt

Référence à une partie du billet de blog

© Le droit d'auteur des liens de référence dans cet article appartient à l'auteur original. En cas de violation, veuillez nous en informer :)


红帽服务管理与自动化(RH358)Notes de lecture


© 2018-2023 [email protected] , Tous droits réservés. Conserver Attribution-NonCommercial-ShareAlike (CC BY-NC-SA 4.0)

Je suppose que tu aimes

Origine blog.csdn.net/sanhewuyang/article/details/132871184
conseillé
Classement