9/7/17

Configurar Servidor Samba desde la terminal.

En artículos anteriores vimos como configurar un servidor samba usando webmin:
Ahora realizaremos la misma tarea sobre Ubuntu Server 16.04 LTS desde la terminal, ya que este método es con el que nos toparemos en la mayoría de servidores en producción.

Preparación del servidor:

Nos aseguramos de tener una ip fija.
Verificamos si samba está instalado:

sudo dpkg -l | grep samba


Si samba está instalado el output del comando será información sobre la versión instalada, y si no lo está el comando no generará ningún output.

De no estar instalado lo instalamos con el comando:

sudo apt-get install samba

Actualizamos el sistema con:

sudo apt-get update

Y posteriormente:

sudo apt-get upgrade

En este ejercicio vamos a crear tres tipos de carpetas.
  1. Publica: Con acceso de lectura y escritura para todos los usuarios.
  2. Privada: Con acceso exclusivo para determinado grupo de usuarios.
  3. Compartida: Con acceso de lectura y escritura para un usuario(s) y de solo lectura para otro(s). 
Coloco estos ejemplos ya que son los escenarios más comunes en ambientes de empresas.
Las carpetas las colocaré en la raíz del disco en un directorio que llamaré "samba_share".

Creación de los directorios:

sudo mkdir -p /samba_share/publica 
sudo mkdir -p /samba-share/privada 
sudo mkdir -p /samba_share/compartida

Nota: El atributo "-p" se encarga de crear todo el directorio en caso de que no exista.

Asignación de permisos para las carpetas:

Para la carpeta Publica:

sudo chmod 777 /samba_share/publica

Para la carpeta Privada: Primero creamos un usuario de samba, luego un grupo y por ultimo damos permiso a la carpeta, únicamente a dicho grupo:

sudo useradd gerente crea el usuario unix "gerente".
sudo smbpasswd -a gerente crea el usuario "gerente"en samba (Pedirá asignar contraseña).
sudo groupadd gerencia crea el grupo "gerencia".
sudo usermod -a -G gerencia gerente agrega al usuario "gerente" al grupo "gerencia".
sudo chgrp gerencia /samba_share/privada ​otorga permisos al grupo "gerencia" sobre la carpeta.
sudo chmod -R 770 /samba_share/privada otorga permisos de lectura y escritura a miembros del grupo.

Para la carpeta compartida: Crearemos un usuario adicional.

sudo useradd subgerente 
sudo smbpasswd -a subgerente 
sudo chmod 777 /samba_share/compartida

Edición del archivo smb.conf

Ya estamos listos para editar el archivo de configuración de samba; pero primero es recomendable hacer una copia de seguridad.

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.original Crea una copia de smb.conf en el mismo directorio llamada "smb.conf.original"

Editamos el archivo de configuración de samba con:

sudo nano /etc/samba/smb.conf

Lo primero que debemos ubicar en el archivo de configuración es el grupo de trabajo y hacerlo coincidir con el grupo de trabajo o dominio de la red en la que colocaremos el servidor.


Luego navegamos hasta el final del documento y comenzamos a agregar las carpetas compartidas y sus respectivos permisos. 

Sintaxis:

Para la pública: En esta carpeta tendrán acceso sin restricción todos los usuarios.

[Publica] Nombre que tendrá el recurso.
comment = Carpeta Publica Una descripción del recurso.
path = /samba_share/publica Ruta del recurso.
browseable = yes Indica que el recurso sera visible.
read only = no Indica que los usuarios tendrán permiso de lectura y escritura.
guest ok = yes Indica que pueden ingresar usuarios sin credenciales.


Para la privada: En esta carpeta tendrán acceso solo los miembros del grupo "gerencia".

[Privada]
comment = Privada para gerencia
path = /samba_share/privada
browseable = yes
read only = no
guest ok = no
Indica que no pueden ingresar usuarios sin credenciales.
valid users = @gerencia
Indica que solo pueden ingresar miembros del grupo "gerencia".

Para la compartida: En esta carpeta tendrán acceso el usuario "gerente" y el usuario "subgerente", pero solo "gerente" podrá crear/editar archivos, "subgerente" tendrá permisos de solo lectura.

[Compartida]
comment = Lectura y escritura solo gerente.
path = /samba_share/compartida
browseable = yes
read only = yes
Indica que por default los usuarios tendrán permiso de solo lectura.
write list = gerente
Indica que solo el usuario "gerente" tendrá permisos de escritura.
valid users = gerente, subgerente
Indica los usuarios con permisos de acceso.
create mask = 0775
asigna permisos sobre la creación de archivos.
directory mask = 0644
asigna permisos sobre la creación de carpetas.


Quedaría así:


Para guardar los cambios y salir presiona la combinación de teclas "ctrl+x", luego "s" (o "y" si el sistema esta en ingles) y por ultimo "enter".

Reiniciamos el servicio samba:

sudo /etc/init.d/samba restart

Ahora ya podemos ingresar desde windows ya sea por el nombre del equipo o su dirección IP y comprobar que todo está funcionando del modo que lo configuramos.

Más comandos útiles:

sudo service smbd restart otro método para reiniciar samba.
sudo pdbedit -L arroja una lista de usuarios.
sudo pdbedit -L -v arroja una lista de usuarios y las carpetas sobre las que tienen derecho.
sudo smbpasswd -x nombredeusuario elimina un usuario samba.
sudo useradd -M nombredeusuario crea un asuario sin directorio "home".
sudo useradd nombredeusuario -c "Nombre Apellido" crea un usuario y permite agregarle un comentario.
sudo userdel nombredeusuario elimina un usuario unix.
sudo smbpasswd -d nombredeusuario deshabilita un usuario.
sudo smbpasswd -e nombredeusuario habilita un usuario.
sudo smbpasswd nombredeusuario cambia la contraseña del usuario.
sudo deluser nombredeusuario nombredegrupo elimina un usuario de un grupo.
sudo cat /etc/group arroja una lista de grupos.
sudo groupdel nombredelgrupo elimina un grupo.
sudo nmblookup __SAMBA__ lista otros servidores samba en la red.
sudo chmod -R 000 otorgar permisos recursivos sobre la carpeta y subdirectorios.

 Trucos:

Bloquear determinados equipos: Agrega en la sintaxis del share la siguiente linea:
hosts allow = 127.0.0.1 192.168.1. EXCEPT 192.168.1.251
Donde 127.0.0.1 es el localhost 192.168.1. es el rango de la red y 192.168.1.251 es la ip del equipo a bloquear.

Papelera de reciclaje en samba: Papelera de reciclaje en Samba.

Bloquear determinado tipo de archivos: Agrega en la sintaxis del share la siguiente linea:
veto files = /*.exe/*.mp3/*.avi/*.mp4/*.wmv/*.wma/
En el siguiente ejemplo se bloquea en la carpeta "Privada" el acceso desde el equipo con la ip 192.168.10.132 y los archivos de extensión .exe

No hay comentarios :

Publicar un comentario