COMPARTIR RECURSOS CON LINUX
Instalamos samba
$ sudo apt-get install samba smbfs
Hacemos una copia del fichero de configuracion de samba
$ sudo cp -p /etc/samba/smb.conf /etc/samba/smb.conf.ori
Editamos el fichero de configuracion
$ sudo vi /etc/samba/smb.conf
...
workgroup = MIGRUPO
server string = %h servidor de archivos (Samba, Ubuntu)
...
Los usuarios que queremos que tengan acceso al servidor Samba deben estar creados como usuarios en nuestro servidor linux, podemos crear un grupo samba y agregar a ese grupo todos los usuarios que tendrán acceso al servidor samba. Para agregar un usuario a linux podemos utilizar el comando:
$ adduser nombre_usuario
Nos pedira la clave que queremos utilizar para ese usuario y algunos datos que son opcionales, luego podemos cambiar sus privilegios.
Supongamos que tenemos un usuario ya creado llamado jc y que lo queremos agregar a los usuarios de Samba, para esto ejecutamos el siguiente comando:
$ sudo smbpasswd -a jc
Nos aparecerá algo como:
$ smbpasswd -a jc
New SMB password:
Retype new SMB password:
Added user jc
$ sudo apt-get install samba smbfs
Hacemos una copia del fichero de configuracion de samba
$ sudo cp -p /etc/samba/smb.conf /etc/samba/smb.conf.ori
Editamos el fichero de configuracion
$ sudo vi /etc/samba/smb.conf
...
workgroup = MIGRUPO
server string = %h servidor de archivos (Samba, Ubuntu)
...
Los usuarios que queremos que tengan acceso al servidor Samba deben estar creados como usuarios en nuestro servidor linux, podemos crear un grupo samba y agregar a ese grupo todos los usuarios que tendrán acceso al servidor samba. Para agregar un usuario a linux podemos utilizar el comando:
$ adduser nombre_usuario
Nos pedira la clave que queremos utilizar para ese usuario y algunos datos que son opcionales, luego podemos cambiar sus privilegios.
Supongamos que tenemos un usuario ya creado llamado jc y que lo queremos agregar a los usuarios de Samba, para esto ejecutamos el siguiente comando:
$ sudo smbpasswd -a jc
Nos aparecerá algo como:
$ smbpasswd -a jc
New SMB password:
Retype new SMB password:
Added user jc
Colocamos la clave que queremos que tenga ese usuario para ingresar al servidor Samba, la clave puede ser distinta a la clave que tiene el usuario para ingresar a Linux.
Vamos a crear un nuevo archivo donde estarán todos los usuarios autorizados para conectarse al Servidor de Samba, para esto ejecutamos:
$ sudo vi /etc/samba/smbusers
En el nuevo archivo copiamos la siguiente línea:
nombre_enlinux = "Nombre en Windows"
Donde nombre_enlinux es el nombre del usuario que tenemos en linux en este caso jc y Nombre en Windows es el nombre del usuario de red en Windows. Tenemos que agregar una nueva línea por cada usuario que creemos para Samba.
Para editar un usuario ejecutamos:
$ smbpasswd -a nombre_usuario
Para borrar un usuario ejecutamos:
$ smbpasswd -x nombre_usuario
Ahora que ya tenemos a los usuarios creados vamos a ver como se compaten archivos y directorios. Vamos a modificar el archivo de configuración de Samba.
$ sudo vi /etc/samba/smb.conf
...
#Buscamos esta linea
$ sudo vi /etc/samba/smbusers
En el nuevo archivo copiamos la siguiente línea:
nombre_enlinux = "Nombre en Windows"
Donde nombre_enlinux es el nombre del usuario que tenemos en linux en este caso jc y Nombre en Windows es el nombre del usuario de red en Windows. Tenemos que agregar una nueva línea por cada usuario que creemos para Samba.
Para editar un usuario ejecutamos:
$ smbpasswd -a nombre_usuario
Para borrar un usuario ejecutamos:
$ smbpasswd -x nombre_usuario
Ahora que ya tenemos a los usuarios creados vamos a ver como se compaten archivos y directorios. Vamos a modificar el archivo de configuración de Samba.
$ sudo vi /etc/samba/smb.conf
...
#Buscamos esta linea
- security = user
#Y la modificamos por
security = user
username map = /etc/samba/smbusers
...
Con esto lo que estamos haciendo es diciendole a Samba que vamos a autentificar por usuario y donde está la lista de los usuarios permitidos, que fue la que creamos anteriormente. Para darle acceso a los usuario a sus respectivos directorios home o personales, buscamos en el mismos fichero smb.conf las siguientes líneas
...
security = user
username map = /etc/samba/smbusers
...
Con esto lo que estamos haciendo es diciendole a Samba que vamos a autentificar por usuario y donde está la lista de los usuarios permitidos, que fue la que creamos anteriormente. Para darle acceso a los usuario a sus respectivos directorios home o personales, buscamos en el mismos fichero smb.conf las siguientes líneas
...
- [homes]
- comment = Home Directories;
- browseable = no
- valid users = %S
- writable = no
...
Y las dejamos de la siguiente forma
...
[homes]
comment = Home Directories
browseable = no
valid users = %S
#cambiamos en writable no por yes para que el usuario pueda escribir en el directorio
writable = yes
...
Si lo dejamos todo comentado no aparece el directorio home de cada usuario en los recursos compartidos.
Siempre que cambiemos la configuración del archivo smb.conf debemos ejecutar el comando testparm. Lo que hace testparm es verificar que los parámetros del archivo smb.conf estén correctos.
$ sudo testparm
Cuando nos diga que todo esta bien tenemos que reiniciar el servicio de Samba para aplicar los cambios.
$ /etc/init.d/samba restart
El siguiente ejemplo sirve para compartir un directorio
[Lo_que_sea]
comment = Comentario que se le ocurra
path = /cualquier/ruta/que/desee/compartir
El volumen puede utilizar cualquiera de las siguientes opciones:
Y las dejamos de la siguiente forma
...
[homes]
comment = Home Directories
browseable = no
valid users = %S
#cambiamos en writable no por yes para que el usuario pueda escribir en el directorio
writable = yes
...
Si lo dejamos todo comentado no aparece el directorio home de cada usuario en los recursos compartidos.
Siempre que cambiemos la configuración del archivo smb.conf debemos ejecutar el comando testparm. Lo que hace testparm es verificar que los parámetros del archivo smb.conf estén correctos.
$ sudo testparm
Cuando nos diga que todo esta bien tenemos que reiniciar el servicio de Samba para aplicar los cambios.
$ /etc/init.d/samba restart
El siguiente ejemplo sirve para compartir un directorio
[Lo_que_sea]
comment = Comentario que se le ocurra
path = /cualquier/ruta/que/desee/compartir
El volumen puede utilizar cualquiera de las siguientes opciones:
Opción | Descripción | |
guest ok | Define si ser permitirá el acceso como usuario invitado. El valor puede ser Yes o No. | |
public | Es un equivalente del parámetro guest ok, es decir define si ser permitirá el acceso como usuario invitado. El valor puede ser Yes o No. | |
browseable | Define si se permitirá mostrar este recurso en las listas de recursos compartidos. El valor puede ser Yes o No. | |
writable | Define si ser permitirá la escritura. Es el parámetro contrario de read only. El valor puede ser Yes o No. Ejemplos: «writable = Yes» es lo mismo que «read only = No». Obviamente «writable = No» es lo mismo que «read only = Yes» | |
valid users | Define que usuarios o grupos pueden acceder al recurso compartido.Los valores pueden ser nombres de usuarios separados por comas o bien nombres de grupo antecedidos por una @.Ejemplo: fulano, mengano, @administradores | |
write list | Define que usuarios o grupos pueden acceder con permiso de escritura.Los valores pueden ser nombres de usuarios separados por comas o bien nombres de grupo antecedidos por una @.Ejemplo: fulano, mengano, @administradores | |
admin users | Define que usuarios o grupos pueden acceder con permisos administrativos para el recurso.br>Es decir, podrán acceder hacia el recurso realizando todas las operaciones como super-usuarios. Los valores pueden ser nombres de usuarios separados por comas o bien nombres de grupo antecedidos por una @.Ejemplo: fulano, mengano, @administradores | |
directory mask | Es lo mismo que directory mode. Define que permiso en el sistema tendrán los subdirectorios creados dentro del recurso. Ejemplos: 1777 | |
create mask | Define que permiso en el sistema tendrán los nuevos ficheros creados dentro del recurso. Ejemplo: 0644 |
En el siguiente ejemplo se compartirá a través de Samba el recurso denominado ftp, el cual está localizado en el directorio /home/ftp/pub del disco duro. Se permitirá el acceso a cualquiera pero será un recurso de solo lectura salvo para los usuarios administrador y fulano. Todo directorio nuevo que sea creado en su interior tendrá permiso 755 y todo fichero que sea puesto en su interior tendrá permiso 644
$ sudo vi /etc/samba/smb.conf
...
[ftp]
comment = Directorio del servidor FTP
path = /home/ftp/pub
guest ok = Yes
read only = Yes
write list = usuario_01, administrador
#siempre que se cree un directorio tiene los permisos de control total al propietario y lectura y ejecucion al resto (rwx)
directory mask = 0755
#siempre que se cree un fichero tiene los permisos lectura y escritura al propietario y lectura a los usuarios del grupo del propietario y lectura al resto de los usuarios
create mask = 0644
...
Un ejempo real
...
[panama]
comment = 07117 Proyecto Panama
path = /media/datos/proyecto_panama
#puede entrar todo el mundo como invitado
guest ok = Yes
browseable = Yes
#solo lectura
read only = Yes
#usuarios que pueden escribir
write list = jcgutierrez,dvielba
#usuarios administradores del recurso
admin users = jcgutierrez,dvielba
directory mask=0755
create mask=0644
[aplicaciones]
comment = Aplicaciones Blom
path = /media/datos/aplicaciones
#no puede entrar todo el mundo
guest ok = No
browseable = Yes
read only = Yes
#usuarios que pueden entrar en el recurso
valid users = jcgutierrez, dvielba, lgarcia
#usuarios que pueden escribir en el recurso
write list = jcgutierrez, dvielba
#usuarios administradores del recurso
admin users = jcgutierrez, dvielba
directory mask=0755
create mask=0644
...
Una vez que terminemos de editar el fichero smb.conf, lo guardamos, lo probamos con testparm y reiniciamos el servidor Samba.
$ sudo testparm
$ sudo /etc/init.d/samba restart
Para compartir una impresora en Samba es muy sencillo, buscamos estas dos líneas en el archivo /etc/samba/smb.conf
...
# printing = cups
# printcap name = cups
...
Y las descomentamos
...
printing = cups
printcap name = cups
...
Guardamos el archivo, comprobamos los parámetros de smb.conf con el comando testparm y reiniciaos el servidor de Samba
$ sudo testparm
$ sudo /etc/init.d/samba restart
Y eso es todo, ya podemos ir a nuestro Windows y buscarmos en nuestro grupo de trabajo las carpetas compartidas de Linux en Samba y además agregar la impresora.
Esto es un documento de internet que parece que esta bien
Samba es un servicio por el cual mediante el uso del protocolo SMB es posible compartir ficheros entre sistemas Windows/Linux/Unix sin problema alguno. A continuación vamos a explicar como realizar la instalación para nuestro Ubuntu 7.10. Para empezar abriremos un terminal y teclearemos los siguientes comandos:
$ sudo apt-get install libcupsys2 samba samba-common
Una vez terminado, procederemos a la edición del fichero smb.conf, el fichero de configuración de Samba. Para ello teclearemos lo siguiente:
$ sudo gedit /etc/samba/smb.conf
Esto nos abrirá el editor de textos con el contenido de smb.conf. Buscaremos una sección nombrada como “Global Security“. Quitaremos el caracter “;” que esta al principio de la linea:
- security = user
Quedando así:
security = user
Permitiendo de este modo, que los usuarios de tu sistema tengan acceso también a Samba.
Ahora guardamos el fichero y lo cerramos, volviendo nuevamente al terminal, dónde realizaremos el reinicio de los servicios de samba del siguiente modo:
$ sudo /etc/init.d/samba restart
Terminado esto, es necesario crear ciertas carpetas, para que estas sean usadas como puntos accesibles para todos los usuarios desde cualquier sistema. Para ello teclearemos lo siguiente:
$ sudo mkdir /home/shares
$ sudo mkdir /home/shares/allusers
$ sudo chmod -R root:users /home/shares/allusers
$ sudo chown -R ug+rwx,o+rx-w /home/shares/allusers
Tras esto editaremos nuevamente el fichero de configuración de samba:
$ sudo gedit /etc/samba/smb.conf
Nos situaremos al final del archivo y añadiremos las siguientes lineas:
[allusers]
comment = All Users
path = /home/shares/allusers
valid users = @users
force group = users
create mask = 0660
directory mask = 0771
writable = yes
Para habilitar la lectura/escritura a los usuarios para las carpetas /home/user sera necesario además incluir las siguientes lineas al final del fichero:
[homes]
comment = Home Directories
browseable = no
valid users = %S
writable = yes
create mask = 0700
directory mask = 0700
Nuevamente reiniciaremos Samba tecleando:
$ sudo /etc/init.d/samba restart
Ahora es el momento de agregar usuarios, en este caso, agregaremos el usuario “cristiansan”.
$ sudo useradd cristiansan -m -g users
Ahora estableceremos la contraseña para el usuario, para ello nos valdremos del comando “passwd”
$ sudo passwd cristiansan
Se nos solicitara que escribamos una nueva contraseña. Tras ello, es necesario añadir el usuario a la BD de samba para permitir el acceso del mismo, para ello teclearemos:
$ sudo smbpasswd -a cristiansan
Se nos solicitara la contraseña del usuario. Una vez terminado, ya solo es necesario usar tu cliente Samba para validarte con el usuario “cristiansan” sobre el servidor Samba, para almacenar y compartir ficheros.
©jc_2008
Instalación y configuración de SWAT
swat sirve para configurar samba a traves de un navegador
Para instalarlo
$sudo apt-get install swat
swat lo que nos va a hacer es cambiar la configuracion del fichero smb.conf automaticamente. Al instalarse el programa SWAT sobreescribe el archivo de configuración de Samba, eliminado los comentarios, entre otras cosas. Nos sale una pantalla que nos avisa de este hecho, y recomienda no utilizar SWAT en aquellos casos en los que se tenga muy personalizado el archivo de configuración de Samba.
Tenemos que tener activado el puerto que usa swat en el fichero services
$sudo vi /etc/services
...
swat 901/tcp # SWAT para samba
..
Tras la instalación de SWAT, se ha de activar en el archivo de configuración de inetd
$sudo /usr/sbin/update-inetd --verbose --enable swat
Ahora se hace que el superservidor inetd relea su configuración, quedando el servicio SWAT disponible en el sistema
$sudo /usr/bin/killall --verbose -HUP inetd
Con este comando vemos que swat esta a la espera de peticiones
$/bin/netstat -puta | /bin/grep swat
Para ejecutar SWAT desde el superservidor xinetd se ha de crear la configuración para este servicio en dicho superservidor. Esto se realiza creando un nuevo archivo denominado swat bajo el directorio /etc/xinetd.d, cuyo contenido sea
$sudo vi /etc/xinetd.d
service swat
{
Para instalarlo
$sudo apt-get install swat
swat lo que nos va a hacer es cambiar la configuracion del fichero smb.conf automaticamente. Al instalarse el programa SWAT sobreescribe el archivo de configuración de Samba, eliminado los comentarios, entre otras cosas. Nos sale una pantalla que nos avisa de este hecho, y recomienda no utilizar SWAT en aquellos casos en los que se tenga muy personalizado el archivo de configuración de Samba.
Tenemos que tener activado el puerto que usa swat en el fichero services
$sudo vi /etc/services
...
swat 901/tcp # SWAT para samba
..
Tras la instalación de SWAT, se ha de activar en el archivo de configuración de inetd
$sudo /usr/sbin/update-inetd --verbose --enable swat
Ahora se hace que el superservidor inetd relea su configuración, quedando el servicio SWAT disponible en el sistema
$sudo /usr/bin/killall --verbose -HUP inetd
Con este comando vemos que swat esta a la espera de peticiones
$/bin/netstat -puta | /bin/grep swat
Para ejecutar SWAT desde el superservidor xinetd se ha de crear la configuración para este servicio en dicho superservidor. Esto se realiza creando un nuevo archivo denominado swat bajo el directorio /etc/xinetd.d, cuyo contenido sea
$sudo vi /etc/xinetd.d
service swat
{
- disable = no #Variable que controla si el servicio está o no activo. Si su valor es igual a “yes”, el servicio estará deshabilitado, si es “no”, estará habilitado.
- socket_type = stream
- protocol = tcp
- wait = no
- user = root
- server = /usr/sbin/swat
# server_args = -a #Esta línea, en caso de estar descomentada, está destinada al paso de parámetros para el servidor swat. La opción “-a” deshabilitaría la autentificación, permitiendo a cualquier persona modificar la configuración de Samba. ¡Tenga cuidado con su uso!
}
Ahora hacemos que el superservidor xinetd relea la configuración
$sudo /etc/init.d/xinetd reload
Una vez ejecutado el comando anterior, el superservidor xinetd pasaría a gestionar las conexiones a Samba, y lo vemos con el siguiente comando
$sudo /bin/netstat -puta | /bin/grep swat
Para conectar con swat lo podemos hacer desde un navegador a traves del puerto 901. Nos pedira un usuario
http://localhost:901 #o la direccion ip de la maquina.
}
Ahora hacemos que el superservidor xinetd relea la configuración
$sudo /etc/init.d/xinetd reload
Una vez ejecutado el comando anterior, el superservidor xinetd pasaría a gestionar las conexiones a Samba, y lo vemos con el siguiente comando
$sudo /bin/netstat -puta | /bin/grep swat
Para conectar con swat lo podemos hacer desde un navegador a traves del puerto 901. Nos pedira un usuario
http://localhost:901 #o la direccion ip de la maquina.
©jc_2008
Montar unidad smb de windows
$apt-get install smbfs
Montamos el disco
$smbmount //sanergy/geoservices /geoservices -o username=administrador,workgroup=val.blom.lan
$sudo smbmount //mdatos03/501725 /mnt/mdatos03 -o username=jcgutierrez,workgroup=blom
Para mas informacion, http://personales.upv.es/~resteban/sambaupv/node9.html
SBMOUNTEl programa smbmount y su complementario smbumount son unas geniales herramientas que, con la ayuda del módulo smbfs o el sistema de ficheros smbfs, permite montar discos compartidos dentro de la jerarquía de ficheros de Linux. No es necesario ser ningún usuario privilegiado para hacerlo. Su sintaxis no es muy complicada:
smbmount //cacharro/servicio /dir/para/montar -o opciones
Donde opciones es una combinación de algunas de las siguientes opciones separadas por comas:
Montamos el disco
$smbmount //sanergy/geoservices /geoservices -o username=administrador,workgroup=val.blom.lan
$sudo smbmount //mdatos03/501725 /mnt/mdatos03 -o username=jcgutierrez,workgroup=blom
Para mas informacion, http://personales.upv.es/~resteban/sambaupv/node9.html
SBMOUNTEl programa smbmount y su complementario smbumount son unas geniales herramientas que, con la ayuda del módulo smbfs o el sistema de ficheros smbfs, permite montar discos compartidos dentro de la jerarquía de ficheros de Linux. No es necesario ser ningún usuario privilegiado para hacerlo. Su sintaxis no es muy complicada:
smbmount //cacharro/servicio /dir/para/montar -o opciones
Donde opciones es una combinación de algunas de las siguientes opciones separadas por comas:
- username=
nombre de usuario SMB - password=
contraseña SMB - netbiosname=
nombre NetBIOS origen - uid=
mount uid o nombre usuario
- gid=
mount gid o grupo usuario - port=
número puerto remoto SMB - fmask=
umask archivos - dmask=
umask directorios
- debug=
nivel de `debug' - ip=
nombre host o dir. IP destino - workgroup=
dominio/grupo NetBios destino
- sockopt=
opciones socket TCP - scope=
NetBIOS scope - guest invitado, sin contraseña
- ro montar solo-lectura
- rw montar lectura-escritura
En mi caso, pruebo con lo siguiente:
$smbmount //castor/resteban ~/mnt -o ip=castor.cc.upv.es,username=resteban,workgroup=upvnet
El comando contrario es
$ smbumount /dir/para/montar
Por cierto, es posible conectarse con SMB a cualquier máquina de Internet que comparta sus recursos. Solo es cuestión de usar el nombre remoto (de una palabra) de la máquina, y la dirección IP o un nombre asociado a un servidor de nombres...
©jc_2008
ANEXO: algo rapido
En primer lugar, y antes que nada, debemos tener instalado el servidor Samba. Para ello, y evitando posibles complicaciones derivadas de una mala instalación o configuración, optamos por usar el gestor de paquetes Synaptic. Aquí buscaremos "samba", seleccionamos, aceptamos sus dependencias y lo instalamos.
Una vez instalado, y sabiendo qué carpeta vamos a compartir, debemos agregar su información en el archivo de configuración de samba. Para ello, desde terminal, introducimos:
$sudo gedit /etc/samba/smb.conf
Y en el archivo de configuración, al final de éste, añadiremos la siguiente información:
...
[carpeta_a_compartir]
path = /ruta_completa/carpeta_a_compartir
available = yes
browsable = yes
public = yes
writable = no
...
Para este caso, la información dada permite conocer la ruta a la carpeta, si estará activa, visible, pública y si tiene permisos para ser modificada (en este caso no). No obstante, y sobre el significado de éstos y otros parámetros (incluidos discos, impresoras y demás recursos).
Por último, y tras salvar los cambios, debemos reiniciar el servidor samba, mediante la orden:
$sudo /etc/inid.d/samba restart
Finalmente, voy a explicar un concepto que en muchas ocasiones puede llevar a confusión si no se tiene una idea muy clara de cómo funciona la compartición de archivos, el término de usuario y su relación. En un sistema (ordenador), podemos crear cuentas de usuario, que disponen de espacios propios y visibles únicamente por sus dueños (es decir, estos usuarios). Esto en windows sucede, y mucho más respetado, en linux. Pues bien, el acceso de forma remota (desde otro equipo) a las carpetas existentes en el equipo local, puede llevarse a cabo si éstas se declaran como carpetas compartidas. ¿Quién puede entonces acceder a ellas? Depende de los privilegios que se le hayan dado, pero, en caso de que se restringa su acceso a ciertos usuarios, éstos deben tener una cuenta en el equipo local, es decir, deben haber sido registrados por algún administrador del sistema. Este aspecto, en samba, puede definirse mediante una línea (write list = usuario_fulano @grupo_mengano), y que en la anterior página también viene señalado.
Una vez instalado, y sabiendo qué carpeta vamos a compartir, debemos agregar su información en el archivo de configuración de samba. Para ello, desde terminal, introducimos:
$sudo gedit /etc/samba/smb.conf
Y en el archivo de configuración, al final de éste, añadiremos la siguiente información:
...
[carpeta_a_compartir]
path = /ruta_completa/carpeta_a_compartir
available = yes
browsable = yes
public = yes
writable = no
...
Para este caso, la información dada permite conocer la ruta a la carpeta, si estará activa, visible, pública y si tiene permisos para ser modificada (en este caso no). No obstante, y sobre el significado de éstos y otros parámetros (incluidos discos, impresoras y demás recursos).
Por último, y tras salvar los cambios, debemos reiniciar el servidor samba, mediante la orden:
$sudo /etc/inid.d/samba restart
Finalmente, voy a explicar un concepto que en muchas ocasiones puede llevar a confusión si no se tiene una idea muy clara de cómo funciona la compartición de archivos, el término de usuario y su relación. En un sistema (ordenador), podemos crear cuentas de usuario, que disponen de espacios propios y visibles únicamente por sus dueños (es decir, estos usuarios). Esto en windows sucede, y mucho más respetado, en linux. Pues bien, el acceso de forma remota (desde otro equipo) a las carpetas existentes en el equipo local, puede llevarse a cabo si éstas se declaran como carpetas compartidas. ¿Quién puede entonces acceder a ellas? Depende de los privilegios que se le hayan dado, pero, en caso de que se restringa su acceso a ciertos usuarios, éstos deben tener una cuenta en el equipo local, es decir, deben haber sido registrados por algún administrador del sistema. Este aspecto, en samba, puede definirse mediante una línea (write list = usuario_fulano @grupo_mengano), y que en la anterior página también viene señalado.
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.