Protocolo SMB
SMB (Server Message Block), también llamado CIFS (Common Internet File System), es un protocolo del nivel de presentación del modelo OSI de TCP/IP creado por IBM en el año 1985.
Samba
SAMBA es un conjunto de programas originalmente creados por Andrew Tridgell y mantenidos por The Samba Team.
Instalar a través de yum
# yum -y install samba samba-client samba-common
Abrir los puertos 135 al 139 (TCP Y UDP) y el puerto 445 (TCP).
Utilizando desde la consola el mandato iptables
# ptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 135:139 -j ACCEPT
# iptables -A INPUT -m state --state NEW -m udp -p udp --dport 135:139 -j ACCEPT
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
# service iptables save
O editar el archivo /etc/sysconfig/iptables y añadir lo siguiente
-A INPUT -m state --state NEW -m tcp -p tcp --dport 135:139 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 135:139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
# service iptables restart
SELinux y el servicio smb
Con la finalidad de que SELinux permita al servicio smb la escritura como usuario anónimo, ejecute:
# setsebool -P allow_smbd_anon_write 1
A fin de que SELinux permita al servicio smb funcionar como Controlador Primario de Dominio (PDC)
# setsebool -P samba_domain_controller 1
Para que SELinux perminta al servicio smb compartir los directorios de inicio de los usuarios locales del sistema, ejecute:
# setsebool -P samba_enable_home_dirs 1
A fin de que SELinux desactive la protección para los directorios de inicio de los usuarios a través de smb, ejecute:
# setsebool -P use_samba_home_dirs 1
Con la finalidad de que SELinux permita al servicio smb crear nuevos directorios de inicio para los usuarios a través de PAM (operación común en PDC, ejecute
# setsebool -P samba_create_home_dirs 1
Para que SELinux permita al servicio smb funcionar como un organizador de mapa de puertos (portmapper):
# setsebool -P samba_portmapper 1
Para que SELinux permita al servicio smb ejecutar guiones dentro del directorio /var/lib/samba/scripts sin confinamiento:
# setsebool -P samba_run_unconfined 1
Con el fin de que SELinux permita al servicio smb compartir todos los recursos en modo de sólo lectura:
# setsebool -P samba_export_all_rw 1
Para que SELinux perminta al servicio smb compartir todos los recursos en modo de lectura y escritura:
# setsebool -P samba_export_all_rw 1
Mandato chcon
Para definir que un directorio será compartido a través del servicio smb y que debe considerarse como contenido Samba, por ejemplo /var/samba/publico:
# chcon -t samba_share_t /var/samba/publico
Antes de configurarse en el el archivo /etc/samba/smb.conf, cada nuevo directorio que se vaya a compartir debe ser configurado como se ha descrito anteriormente.
Iniciar el servicio
# service nmb start
# service smb start
Añadir el servicio al arranque del sistema
# chkconfig nmb on
# chkconfig smb on
Después de aplicar cambios al archivo de configuración de Samba es necesario reiniciar el servicio smb
# service smb restart
El servicio nmb es el encargado de proveer el servidor de nombre para los clientes a través de NetBios sobre IP. Por tanto, debe reiniciar el servicio nmb si realiza cualquier cambio en la configuración de la opción netbios name
# service nmb restart
Alta de cuentas de usuario
Primero asigne una contraseña al usuario root (no tiene que ser la misma utilizada en el sistema).
# smbpasswd -a root
La sincronización de cuentas entre el servidor Samba y las estaciones Windows se realiza ingresando el mismo nombre de usuario y contraseña tanto en el servidor Samba como en la máquina Windows.
La mayoría de las cuentas de usuario que se utilizan para acceder a Samba no requieren acceso al intérprete de comandos del sistema, no hace falta asignar una contraseña con el mandato passwd. El intérprete de comandos quedará definido como /sbin/nologin o /bin/false para la cuenta de usuario. Esta cuenta en cuestión estará inactiva para el resto de servicios.
# useradd -s /sbin/nologin andrius
# smbpasswd -a andrius
Archivo lmhosts
Se utiliza para resolver de manera local los nombres NetBios, asociándolos con su dirección IP correspondiente. El nmbre NetBios no debe exceder los doce caracteres alfanuméricos. Como mínimo debe definirse el nombre del anfitrión del servidor Samba junto a su dirección IP.
# vi /etc/samba/lmhosts
127.0.0.1 localhost
192.168.0.1 servidor
Configuración básica del archivo smb.conf
# vi /etc/samba/smb.conf
La opción workgroup define el grupo de trabajo
workgroup = MYGROUP
Opción netbios name
Define un nombre de anfitrión distinto al detectado automáticamente. Debe ser el mismo que aparece en el archivo /etc/samba/lmhosts
netbios name = servidor
Opción server string
server string = Servidor Samba %v en %L
Opción hosts allow
En esta entrada del archivo smb.conf se pueden definir direcciones IP o redes que tendrán permiso de acceso hacia el servidor. Por tanto, una red con anfitriones con direcciones IP desde 192.168.0.1 hasta 192.168.0.254, el rango de direcciones IP definido en hosts allow será 192.168.0., (los tres primeros octetos).
Vamos a definir las redes 192.168.0.0/24, 102.168.1.0/24 y 192.168.3.0/24 como vimos con anterioridad utilizando los tres primeros octetos de la dirección IP de red, en el caso de cualquier dirección IP de la red 127.0.0.0/8 se define sólo el primer octeto de dicho segmento.
hosts allow = 127., 192.168.0., 192.168.1., 192.168.3.
Opción name resolve order
Define el orden en que se intenta de resolver los nombres NETBIOS. Primero con la información del archivo /etc/samba/lmhosts, luego el archivo /etc/hosts, a continuación de consultas en el servidor WINS y, si todo lo anterior falla, a través de la dirección IP de difusión de la red local.
name resolve order = lmhosts hosts wins bcast
Gestor de archivos Nautilus
Esta configuración es necesaria para el gestor de archivos predeterminado de Gnome, Nautilus y además que se especifique wins en el orden de resolución de nombres del archivo /etc/nsswitch.conf del anfitrión desde el cual se ejecute.
# vi /etc/nsswitch.conf
hosts: files dns
al final agregje wins
hosts: files dns wins
Opción remote announce
remote announce = 192.168.3.127, 192.168.1.255
Reinicie los servicios para aplicar los cambios.
# service smb restart
# service nmb restart
Compartir directorios
Crear el directorio /var/samba/publico
# mkdir -p /var/samba/publico
Cambiar el contexto de SELinux para que este directorio sea considerado como contenido Samba.
# chcon -t samba_share_t /var/samba/publico
[publico]
comment = Recurso compartido publico
path = /var/samba/publico
guest ok = yes
read only = yes
write list = andrius
directory mask = 0755
create mask = 0644
Listas de control de acceso ACLsetfacl se utiliza para cambiar los permisos en las listas de control de acceso de un archivo o directorio dado. Asignar cambiar permisos de lectura, escritura y ejecución al usuario andrius
Crear el usuario y agregarlo al grupo samba
# useradd -s /sbin/nologin andrius
# smbpasswd -a andrius
# passwd andrius
# setfacl -m u:andrius:rwX /var/samba/publico
Se utilizó X mayúscula para indicar que sólo se aplicará el bit de acceso a directorios evitando aplicar el bit de ejecución a los archivos.
getfal se utiliza para determinar los permisos establecidos en las listas de control de acceso de un archivo o directorio.
# getfacl /var/samba/publico/
getfacl: Eliminando '/' inicial en nombres de ruta absolutos
# file: var/samba/publico/
# owner: root
# group: root
user::rwx
user:andrius:rwx
group::r-x
mask::rwx
other::r-x
Estos permisos que se establecieron en la lista de control de acceso del directorio /var/samba/publico son exclusivamente para éste. Cualquier nuevo archivo o directorio creado carecerá de estos nuevos permisos. Si se desea que éstos permisos se vuelvan los predeterminados para los nuevos archivos y directorios que sean creados en lo sucesivo dentro del directorio /var/samba/publico, se ejecuta el mismo mandato setfacl, pero añadiendo la opción -d para definir que serán los permisos predeterminados para nuevos archivos y directorios.
Lo anterior muestra que sólo el propietario del directorio tiene permisos de lectura, escritura y acceso. Para lograr que un usuario en particular pueda acceder también a este directorio, se ejecuta el mandato setfacl, con la opción -m para modificar la lista de control de acceso, [u,g,o]:[usuario,grupo]:[r,w,x] y la ruta del directorio como argumentos. Ejemplo:
setfacl -m u:usuario:rX /var/samba/publico
En el ejemplo anterior se utilizó X mayúscula para indicar que sólo se aplicará el bit de acceso de a directorios evitando aplicar el bit de ejecución a los archivos.
Lo mismo en notación octal
# setfacl -m u:usuario:5 /var/samba/publico
Editar el archivo /etc/samba/smb.conf y al final añada el siguiente contenido
[publico]
comment = Recurso compartido publico
path = /var/samba/publico
guest ok = yes
read only = yes
write list = andrius
directory mask = 0755
create mask = 0644
# service smb restart
Ocultando archivos que empiezan por punto.
Los archivos cuyo nombre comienza con un punto (archivos de configuración, normalmente), como es el caso del directorio de inicio del usuario en el servidor Samba (.bash_profile, .bashrc, .bash_history entre otros) pueden ocultarse con la opción hide dot files y el valor Yes.
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
inherit acls = yes
hide dot files = yes
Reinicie el servidor smb para que los cambios tengan efecto
# service smb restart
Montar recursos compartidos desde un cliente Linux
$ cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.0.1 servidor
# mkdir /mnt/publico
# mount.cifs -o username=andrius //servidor/publico /mnt/publico
Solicitará la contraseña del usuario utilizado en el servidor Samba
Password for andrius@//servidor/publico:
# mount | grep publico
//servidor/publico on /mnt/publico type cifs (rw)
Cree el archivo /etc/acreditar para hacer permanente lo anterior.
# vim /etc/acreditar
Especifique el nombre de usuario y contraseña utilizados con el recurso compartido.
username=andrius
password=password
Cambiando los permisos de acceso al archivo para que sólo el usuario root pueda ver y modificar el contenido.
# chmod 600 /etc/acreditar
# vim /etc/fstab
Este recurso será montado automáticamente en el siguiente reinicio del sistema. Agregue la siguiente línea incluyendo las opciones uid y gid
//servidor/publico /mnt/publico cifs credentials=/etc/acreditar,uid=501,gid=501 0 0
Utilizar smbclient desde Linux
Lo más práctivo y sencillo para hacer pruebas es el mandato smbclient. Permite acceder hacia cualquier servidor Samba y Windows.
# smbclient -U andrius -L servidor
Conectar un cliente Windows al servior Samba
Esta máquina está en la red 192.168.3.0/25 detrás de un firewall router Soekris y OpenBSD.
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/pdf/system_administrators_guide/Red_Hat_Enterprise_Linux-7-System_Administrators_Guide-en-US.pdf
Centos es genial!.
No hay comentarios:
Publicar un comentario