Samba: utilice Samba para proporcionar un sistema de archivos compartido a clientes remotos

escribir delante


  • Comparta algunas notas de construcción para PYMES
  • Organizándose para los exámenes
  • Si no entiende lo suficiente, ayúdeme a corregirlo.

Sólo existe una verdadera responsabilidad para todos: encontrarse a sí mismos. Luego mantenlo en tu corazón por el resto de tu vida, de todo corazón, y nunca te detengas. Todos los demás caminos están incompletos, huidas humanas, retornos cobardes a ideales populares, derivas, miedos internos - Hermann Hesse, "Demian"


Una breve introducción a las PYMES

SMB协议Desarrollado originalmente Microsoft开发y luego se convirtió en el protocolo para compartir archivos más utilizado en redes Windows. El protocolo SMB también se puede utilizar para compartir archivos con sistemas Unix o Linux. A través del paquete de software Samba, los sistemas Unix y Linux pueden proporcionar servicios de intercambio de archivos como servidores SMB, permitiendo que los sistemas Windows accedan a archivos e impresoras compartidos.

NFSPermite que las máquinas Unix y Linux se comuniquen o que las máquinas Windows se comuniquen. SMB puede permitir que las máquinas Windows se comuniquen con máquinas Unix o Linux.

En el uso real, se usa SMB协议más comúnmente Windows操作系统en 文件共享协议, lo que permite Windows系统compartir archivos e impresoras entre .

Samba

SambaSMBEs un software gratuito que implementa el protocolo en un sistema Linux.Es 局域网上共享文件和打印机un protocolo de comunicación y consta de programas de servidor y cliente.

Se pueden lograr las siguientes funciones:

  • 文件共享: Samba puede compartir archivos y directorios en sistemas Linux/UNIX con Windows, macOS y otros clientes que admitan el protocolo SMB/CIFS. Esto significa que puede utilizar Samba para compartir archivos y directorios entre diferentes sistemas operativos.
  • 打印机共享: Samba le permite conectar una impresora a un sistema Linux/UNIX y compartirla con Windows, macOS y otros clientes a través del protocolo SMB/CIFS. De esta manera puede compartir la impresora en su red y permitir que varios usuarios utilicen la misma impresora.
  • 认证和授权: Samba proporciona mecanismos de autenticación y control de acceso que le permiten configurar la autenticación de usuario, los permisos de acceso y los niveles de uso compartido. Puede crear cuentas de usuario, establecer políticas de contraseñas y especificar diferentes permisos de acceso para directorios compartidos.
  • 域控制器: Samba puede actuar como controlador de dominio, proporcionando una funcionalidad similar a los dominios de Windows. Puede utilizar Samba para crear y administrar cuentas de usuario, grupos, políticas e implementar administración y autenticación centralizadas.
  • 家庭文件服务器: Puede utilizar Samba para configurar un servidor de archivos en su red doméstica, permitiendo a los miembros de la familia compartir archivos y directorios y realizar control de acceso.
  • 安全性和加密: Samba admite comunicación cifrada y proporciona protección de datos y transmisión segura. Puede configurar Samba para utilizar el protocolo de cifrado SSL/TLS para proteger la transmisión y el almacenamiento de datos.
  • 跨平台兼容性: Samba proporciona una buena compatibilidad con las redes Windows, lo que permite que los sistemas Linux/UNIX se integren perfectamente con las redes Windows.

Explicación simple del proceso de acceso a samba.

  • El servidor Samba se inicia y escucha en el puerto especificado (el puerto predeterminado es 445).
  • El cliente inicia una solicitud de conexión para conectarse al servidor Samba.
  • El servidor Samba recibe la solicitud de conexión y establece una conexión con el cliente.
  • El cliente envía solicitudes SMB/CIFS al servidor Samba, solicitando acceso a recursos compartidos o para realizar operaciones específicas.
  • El servidor Samba analiza la solicitud y realiza las operaciones correspondientes según el tipo y los parámetros de la solicitud.
  • Si la solicitud implica acceso a un recurso compartido, el servidor Samba verifica la información de autenticación del cliente y determina si otorga acceso según las reglas de control de acceso en el archivo de configuración.
  • El servidor Samba realiza la operación solicitada como leer, escribir, crear, eliminar archivos, etc.
  • El servidor Samba genera una respuesta y la envía de vuelta al cliente.
  • El cliente recibe la respuesta, la procesa y la muestra en consecuencia de acuerdo con el contenido de la respuesta.

El host puede actuar como 客户端o para 服务器acceder y proporcionar SMBarchivos compartidos:

  • Como 客户端, montar SMBun archivo compartido requiere instalar cifs-utilstambién el paquete samba-client.
  • Como 服务器, compartir un directorio usando SMBel protocolo requiere instalar sambael paquete.

Los pasos básicos para la configuración del entorno Linux SMB共享son los siguientes:

  • Instale sambael paquete.
  • Preparar Sambausuarios
  • Prepare el directorio compartido.
  • Configurar /etc/samba/smb.confel archivo de configuración
  • Inicie Sambay abra el firewall local
  • Monte el recurso compartido desde el sistema cliente SMBpara verificar su configuración.

Instalación e implementación

Configure serverdcomo un SMBservidor de archivos independiente que compartirá /smbsharedirectorios. Puede utilizar multiuserla opción de montaje para serveraconfigurar este SMBrecurso compartido para que se monte /designsen un directorio.

Instale el paquete 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

Crear marketinggrupos y /smbsharedirectorios. Directorio de configuración /smbshare, otras configuraciones:

  • Este directorio pertenece a este marketinggrupo.
  • Este directorio tiene SGIDbits configurados.
  • Todos tienen acceso de lectura al directorio, pero solo marketingel grupo puede escribir
  • El catálogo tiene samba_share_t SELinuxtipo de contexto.
#创建 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

Edite /etc/samba/smb.confel archivo de configuración y configúrelo de acuerdo con los siguientes requisitos

  • Establecer grupo de trabajo en MIEMPRESA
  • Configure Sambasegún sea necesario 加密流量.
  • Solo se admite Force Samba SMB 版本 3 和更⾼版本.
  • Cree un recurso compartido con nombre de datos.
  • /smbshareDirectorio compartido .
  • Proteja el recurso compartido para que todos puedan acceder a él, pero solo los miembros del grupo de marketing tengan acceso de escritura.

Edite /etc/samba/smb.confel archivo y workgroupestablezca el comando enMYCOMPANY。

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

En la sección [global], 强制加密y 最⼩协议版本configúrelo en SMB3.

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

Al final del archivo, agregue lo siguiente para definir el nuevo recurso compartido.

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

Cuando termine, guarde y cierre el archivo.

Ejecute testparmel comando para verificar /etc/samba/smb.confel archivo de configuración.

[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...

Cree una cuenta de usuario exclusiva de Samba developer1y agréguela al marketinggrupo. Esta cuenta de usuario tiene acceso de escritura al recurso compartido porque es miembro del grupo de marketing.

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

Cree una cuenta de usuario de operador1 exclusiva de Samba. No lo agregue al marketinggrupo para que tenga acceso de solo lectura al recurso compartido. Establezca la contraseña SMB para ambas cuentas en redhat.

Agregue la cuenta de usuario desarrollador1 a Samba

[root@serverd ~]# smbpasswd -a developer1

operación completa

[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

Agregue smbusuario, aquí use el usuario del sistema, primero cree el usuario del sistema y luego agregue el usuario smb correspondiente

[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.

Configurar smbel inicio automático al arrancar

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

Consultar estado del servicio

[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>

pase de firewall

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

Monte permanentemente el recurso compartido de datos SMB bajo el punto de montaje serveraen /designs. Para hacer esto, cree un archivo usando sambamountlas credenciales del usuario . /etc/samba/creds.txtUtilice /etc/fstablas opciones credentials、multiusery sealmontar para activar el modo multiusuario y cifrar las comunicaciones.

Instale cifs-utilsel paquete, que proporciona mount.cifsel comando

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

Cree /etc/samba/creds.txtun archivo para proporcionar la cuenta y la contraseña utilizadas para montar el recurso compartido. Utilice sambamountla cuenta y la contraseña es redhat.

username=sambamount
password=redhat

Proteger el archivo para que solo rootlos usuarios puedan acceder a él

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

Crear /designspunto de montaje

[root@servera ~]# mkdir /designs

Edite /etc/fstabel archivo y agregue una entrada para el recurso compartido SMB. Defina el siguiente nuevo montaje en una sola línea, sin saltos de línea.

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

credentials=/etc/samba/cred.txt: Especifica la ruta del archivo para la cuenta de usuario y la contraseña. El servicio Samba obtendrá información de autenticación de inicio de sesión del usuario de este archivo.

multiuser: Indica que varios usuarios pueden iniciar sesión en este recurso compartido al mismo tiempo. Si no se especifica este parámetro, solo se permite que un usuario se conecte de forma predeterminada.

seal: Indica que Samba almacena la información de la cuenta de usuario en el archivo cred.txt como texto sin formato en lugar de utilizar un método de cifrado más seguro.

Monte el sistema de archivos y verifique que el montaje sea exitoso.

[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

Pruebe el acceso al recurso compartido. Para hacer esto, inicie sesión como usuario desarrollador1, proporcione las credenciales SMB de ese usuario y luego confirme que puede escribir en el recurso compartido.

Ejecute la misma prueba que el usuario operador1. Esta cuenta de usuario solo tiene acceso de lectura porque no pertenece al grupo de marketing. Inicie sesión como usuario desarrollador1. El script de laboratorio ha creado esta cuenta de usuario para usted.

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

Demostración completa

sambaCompartir configuración del servidor

serveraPrepárese para compartir en samba:

  • Crear carpeta compartida/common
  • La contraseña para la verificación del usuario robescompede
  • La contraseña para la verificación del usuario brianespostroll

Pasos de implementación:

  1. Instale el paquete de datos correspondiente
  2. Agregar el usuario smb correspondiente
  3. Autorización de directorio compartido
  4. configuración de SElinux
yum -y install samba samba-client

Garantice la seguridad de los usuarios locales y proporcione la configuración correspondiente para bash que no puede iniciar sesión

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

agregar smbusuario

[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

Cree una carpeta compartida. Aquí debe configurar los permisos correspondientes. Como arriba, agregue brianun grupo y otorgue permisos GID.

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

Verifique el tipo de relación de contexto, configuraciónSELinux

# 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/

Utilice varios usuarios para acceder a directorios compartidos de samba

Configure el servicio SMB en servera:

  • Su SMBservidor debe ser STAFFmiembro del grupo de trabajo.
  • Compartir /commonEl nombre del directorio compartido debe sercommon
  • Sólo example.comlos clientes dentro del dominio pueden acceder commonal recurso compartido
  • commonDebe ser visible
  • Los usuarios robdeben poder leer el contenido compartido.
  • Los usuarios deben robacceder al directorio en modo de solo lectura y brianpueden acceder al directorio en modo de lectura y escritura.

En , es necesario montar el directorio compartido a serverbtravés del smbmodo multiusuario.common/mnt/private

  • robEs necesario operar como usuario al montar el directorio compartido.
  • Es necesario que el directorio compartido se pueda montar automáticamente cada vez que se enciende la computadora.
# 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

Configuración del cliente

# 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

Referencia a parte de la publicación del blog.

© Los derechos de autor de los enlaces de referencia de este artículo pertenecen al autor original. Si hay alguna infracción, infórmenos :)


红帽服务管理与自动化(RH358)Notas de lectura


© 2018-2023 [email protected] , Todos los derechos reservados. Mantener Attribution-NonCommercial-ShareAlike (CC BY-NC-SA 4.0)

Supongo que te gusta

Origin blog.csdn.net/sanhewuyang/article/details/132871184
Recomendado
Clasificación