martes, 18 de noviembre de 2008

Compartir ficheros con samba

Samba es la mejor herramienta en derivados de UNIX para compartir recursos con otros equipos y también para acceder a los recursos que puedan tener compartidos. (También es la única que conozco, pero tampoco soy ningún gurú).

Comenzaremos por instalar el demonio samba con todas sus dependencias desde una terminal:
sudo aptitude install samba
Y después editar el archivo de configuración /etc/samba/smb.conf con cualquier editor de texto, yo usare nano:
sudo nano /etc/samba/smb.conf
Hay varias opciones que nos interesan. Yo indicare la forma de hacer funcionar el demonio sin demasiadas complicaciones. Las lineas precedidas de #(almohadillas) son comentarios. Las demás son opciones. Vamos a centrarnos en lo que son opciones, ignorando los comentarios.

Buscamos (Ctrl+W, desde nano) la línea que diga algo como :
workgroup = MSHOME
Debes cambiar MSHOME por el grupo de trabajo al que pertenecen las maquinas con quien quieras compartir recursos.

Busca ahora algo como guest account y ponlo de esta forma, (de no aparecer añade la opción):
; guest account = nobody (incluyendo el punto y coma inicial)
Después haz lo propio con la opción invalid users, y cambiala (o añadela), por:
invalid users = root
Ahora busca la linea que diga:
; security = user
Y la cambiamos por:
; security = share
También has de buscar (recordemos que es Ctrl+W desde el editor nano) usershare allow guests y ponerla de este modo:

usershare allow guests = yes
Ahora solo resta añadir, al final del fichero, los recursos que quieras compartir. Esta es la estructura que puedes seguir:
[Publico] -->Aquí puedes poner el nombre que quieras
path = /home/usuario/Publico/ --> ruta del directorio a compartir
avaliable = yes --> Disponibilidad/Visibilidad del recurso (si o no)
browsable = yes --> Permite navegar en los subdirectorios (si o no)
public = yes --> Acceso a cualquiera o solo a quien tenga cuenta en el equipo (si o no)
writable = yes --> Con derechos de escritura (si o no)
NOTA: Si pones la opción public = no deberás crear un usuario en la base de datos de samba para que ese usuario pueda acceder al recurso:
sudo smbpasswd -a usuario

NOTA2: Los permisos del sistema a la carpeta compartida deben permitir las opciones dadas en samba.
Para cambiar los permisos de sistema a una carpeta:
chmod 777 /home/usuario/Publico
Si no quieres que tengan permisos de escritura usa:
chmod 775 /home/usuario/Publico
Y cambia la opción writable del recurso compartido en el archivo de samba a no.

Cierra el editor nano (Ctrl+X), salvando los cambios y reinicia el demonio de samba:
sudo /etc/init.d/samba restart
Y tras esperar un rato (tarda un poco en refrescar todo) podrás ver tus carpetas compartidas desde los demás equipos.

Tan solo queda la posibilidad de que el recurso a compartir sea una carpeta dentro de otra partición o disco duro. En este caso no podrás cambiar los permisos, ya que son dados por el sistema al realizar el montaje de la partición.

Yo recomiendo usar /etc/fstab para programar las particiones que han de ser montadas en el inicio y con que permisos se han de montar.
sudo nano /etc/fstab
Pondré un ejemplo de partición montada en /etc/fstab y con los permisos necesarios para compartir con samba:
# /dev/sdb1
UUID=26BC0818BC07E0E3 /media/discoE ntfs defaults,umask=002,gid=46 0 1
La primera linea es un comentario para identificar a que partición hace referencia la linea siguiente, puede poner lo que quieras. La segunda linea es la importante;
El UUID (el identificador universal de la partición, Universal Unique IDentifier) de una partición lo puedes obtener con:
sudo vol_id -u /dev/sda3 (reemplaza a por el disco en cuestión -a,b,c,etc- y 3 por la partición que sea)
Después del UUID hay que poner la dirección a la carpeta vacia donde se debe montar la partición, y el sistema de archivos de la esta (ext4,ext3, vfat, ntfs...). La opción umask es la que nos interesa, en mi caso la puse en 002, es como chmod, pero a la inversa, osea va restando desde los números mas altos, que seria 777 (acceso total). 777 - 002 = 775. Así fstab monta la partición en la ruta dada con máximos derechos al dueño y grupo y al resto solo derechos de lectura y ejecución. Y ya puedes compartir la partición, o una carpeta dentro de esta, con el resto de la red. Si quieres que se pueda escribir desde la red el umask deberá ser 000.

Por ultimo tras modificar fstab habría que desmontar y volver a montar todo:

sudo umount -a
sudo mount -a
Y volver a reiniciar el demonio Samba:

sudo /etc/init.d/samba restart
Con todo esto ya podemos compartir archivos sabiendo que permisos son los que damos a cada recurso compartido.


No hay comentarios:

Publicar un comentario