- Para poder compartir carpetas en un entorno de red en linux debemos usar samba. Nos podemos encontrar con dos situaciones diferentes, que requieren pasos de configuración distintos. En un primer caso explicaremos como compartir una carpeta del propio linux hacia el exterior y en el segundo caso hablaremos de cómo montar una unidad de red externa como si fuera local en el propio linux.
Compartiendo una carpeta interna
Crearemos una carpeta, y le asignaremos los permisos adecuados para que un usuario externo pueda escribir en ella:
sudo mkdir /opt/shared_folder
sudo chmod 777 /opt/shared_folder
Estamos asumiendo que hablamos de un entorno seguro (una red local de casa o de la oficina) en el caso que se quiera compartir públicamente sería necesario afinar un poco más este paso, asignando solamente los permisos necesarios.
Si compartimos la carpeta como está actualmente, los ficheros se guardarán como usuario root, con lo que nuestro usuario de SO no tendrá acceso a los ficheros que se dejen allí. Para ello, debemos especificar en el fichero de configuración samba con qué usuario y grupo queremos que se guarden los ficheros. Para ello editaremos el fichero:
gksu gedit /etc/samba/smb.conf
y especificaremos los siguientes parámetros:
security = share
create mask = 0775
security mask = 0775
force user = linuxosuser
force group = linuxosgroup
A continuación, procederemos a compartir la carpeta (lo podemos hacer visualmente pulsando con el botón derecho del mouse y accediendo a Sharing), especificaremos el nombre del recurso de red que queremos asignar a la carpeta y guardaremos los cambios.
Después reiniciaremos samba y ya tendremos el share creado.
sudo /etc/init.d/samba restart
En el caso que queramos compartir la carpeta en una red windows es posible que queramos integrar la carpeta en el workgroup de windows y con el active directory para aprovechar la autenticación de los usuarios windows. Para ello deberíamos seguir los siguientes pasos:
sudo apt-get install winbind
cd /usr/lib/samba/idmap/
sudo ln -s /usr/lib/likewise-open/idmap/lwopen.so
gksu gedit /etc/samba/smb.conf
- Añadir las siguientes lineas:
security = ads
workgroup = WINDOWS_WORKGROUP
realm = WINDOWS_WORKGROUP.EXT
idmpa backend = lwopen
idmap uid = 50-9999999999
idmap gid = 50-9999999999
- Modificar los ficheros y reiniciar los servicios:
mv /var/lib/samba/secrets.tdb /var/lib/samba/secrets.tdb.orig
ln -s /etc/samba/secrets.tdb /var/lib/samba/secrets.tdb
sudo /etc/init.d/samba restart
sudo /etc/init.d/likewise-open restart
sudo /etc/init.d/winbind restart
A continuación seguimos los mismos pasos que antes para compartir la carpeta y ésta pedirá un login de un usuario del active directory.
Montando una unidad de red (carpeta externa compartida)
Uno de los problemas típicos es que al montar una unidad de red sobre una carpeta compartida externa es que no tengamos permisos para escribir ficheros en el destino o que una vez creados, no podamos modificarlos ni borrarlos. Esto es debido a que se monta la unidad como usuario root y el usuario del S.O. linux no tiene permisos suficientes para modificarlos. Para ello, haremos que la unidad se monte como un usuario de windows creando un fichero de configuración al que apuntaremos desde fstab.
Creamos un fichero con el usuario de windows (asumimos que la carpeta compartida es en windows):
gksu gedit /root/.smbpasswd
Añadimos las siguientes líneas al fichero vacío:
username=mywindowsusername
password=mywindowspassword
Le damos los permisos necesarios:
sudo chmod 600 /root/.smbpasswd
Editamos el fichero fstab:
Añadimos la línea:
//servername/sharename /mountdirectory cifs credentials=/root/.smbpasswd 0 0
Y montamos la carpeta:
sudo mount /mountdirectory