Samba.¶
Características.¶
✔️ IBM crea el servicio smb (Server Message Block) para la compartición de recursos, un software propietario usado por Windows.
✔️ Samba es una implementación libre de dicho protocolo smb creado por IBM.
✔️ Posteriormente Windows modificó el código de smb y lo renombró como CIFS (Common Internet File System).
✔️ Su finalidad es la compartición de recursos (directorios/ficheros) e impresoras entre sistemas heterogéneos (Windows/Linux/Solaris/Mac OSX).
✔️ Samba suele usar el puerto 139 o 445 TCP dependiendo de la versión.
✔️ SMB tiene 3 versiones: SMB 1.0, 2.0, 3.0 y 4.0. Nunca debemos usar 1.0 y deberíamos intentar usar 3.0 que es más seguro.
✔️ Samba también nos permite crear servidores de dominio activo (Active Directory) como Windows Server.
RESUMEN
🔥 CIFS: Protocolo SMB modificado por Windows para la compartición de recursos.
🔥 SAMBA: Protocolo libre simulando la funcionalidad de SMB, usado en Linux.
Instalación.¶
Servidor.¶
apt install samba
Cliente.¶
apt install samba-client
Configuración.¶
1. Accedemos al fichero de configuración.¶
COMENTARIOS
🔥 Los "#" y los ";" son comentarios y no surgen efecto dentro del fichero de configuración.
nano /etc/samba/smb.conf
2. Creamos los recursos a compartir / Cambio de parámetros del servicio.¶
Ejemplo: Al final del fichero añadimos un nuevo recurso.
[ejercicio1]
comment = Prueba Ejercicio 1
path = /srv/ejercicio1
browsable = yes
guest ok = yes
read only = no
create mask = 0777
3. Creamos en el servidor el recurso a compartir.¶
Es importante que en las carpetas a compartir y padres tengan permiso de ejecución para poder entrar en caso de que no pongamos restricción por usuario/contraseña.
mkdir –p /srv/ejercicio1
chmod 755 /srv/ejercicio1
4. Reiniciamos el servicio para que surjan efecto los cambios de configuración.¶
service smbd restart
Permisos Carpetas.¶
Un usuario debe cumplir con los permisos de:
-
Fichero de configuración de samba.
-
Permisos de la carpeta en el servidor.
Permisos
El usuario samba debe tener permisos en las carpetas que accede en el servidor.
Permiso | |
---|---|
Lectura |
Puede listar la carpeta (ls) |
Escritura |
Puede crear ficheros/carpetas. |
Ejecución |
Puede acceder a la carpeta (cd). |
Cliente Windows.¶
Cambiar Idioma y Teclado.¶
Habilitar el descubrimiento de equipos en redes privadas.¶
Tipos de Red
Cuando nos conectamos por primera vez a una red podemos decidir si es de confianza (privada) o no (pública)
🔥 Ejemplo redes privadas: Casa / Trabajo.
🔥 Ejemplo redes públicas: Instituto / Biblioteca.
Puede que tengamos que habilitar el descubrimiento de redes.
Acceder al recurso.¶
ACCESO \\IP_Servidor
🔥 Podemos abrir un explorador de directorio y colocar en la barra de direcciones \\IP_Servidor:
Conectar Unidad de Red¶
Unidad de Red
🔥 Se puede generar una especie de acceso directo a nuestros servicios compartidos.
Cliente Linux¶
Cambiar Idioma y Teclado¶
sudo dpkg-reconfigure keyboard-configuration
sudo service keyboard-setup restart
Conectar mediante Interfaz gráfica.¶
En Linux podemos acceder desde una carpeta usando el protocolo smb:
smb://usuario@IPServidor/CarpetaCompartida
Conectar mediante comandos.¶
- Averiguar dentro del servicio que carpetas compartidas hay disponibles.
- Acceso a la carpeta compartida.
#Importante escapar cada \, por eso hay 4 por un lado y 2 por otro...
smbclient \\\\172.17.0.2\\ejercicio1
- Una vez dentro son comandos parecidos a FTP.
Símbolo | |
---|---|
ls |
Listar ficheros/carpetas. |
cd |
Moverme entre carpetas. |
get |
Descargar un fichero. |
put |
Cargar un fichero. |
? |
Mostrar la ayuda. |
Recoger un fichero del servidor.
smb: \> get FICHERO_SERVIDOR FICHERO_CLIENTE
Recoger un fichero del servidor.
#Se debe haber creado antes un usuario samba con smbpasswd -a "usuario"
#Dicho usuario debe existir en el sistema useradd salva -s /bin/false
smb: \> put FICHERO_CLIENTE FICHERO_SERVIDOR
Acceder mediante scripts.¶
smbclient \\\\172.17.0.2\\ejercicio1 --password 123 << EOF
get Fichero_Servidor Fichero_Cliente
put Fichero_Cliente Fichero_Servidor
exit
EOF
Otra opción es usar -c del comando:
smbclient \\\\172.17.0.2\\ejercicio1 --password 123 -c "get Fic_Servidor Fic_Cliente; put Fic_Cliente Fic_Servidor"