Samba
Samba es un software que permite a tu ordenador con Ubuntu poder
compartir archivos e impresoras con otras computadoras en una misma
red local. Utiliza para ello un protocolo conocido como SMB/CIFS
compatible con sistemas operativos UNIX o Linux , como Ubuntu, pero
además con sistemas Windows (XP, NT, 98...), OS/2 o incluso DOS.
También se puede conocer como LanManager o NetBIOS.
Si Ubuntu te ha detectado correctamente la red local, que es lo mas
habitual, cuando selecciones una carpeta y hagas click en el botón
derecho del ratón, si le das a Compartir carpeta, al seleccionar un
protocolo se iniciará un proceso automático de descarga desde Internet
e instalación de Samba. También se puede instalar de la forma habitual
usando Añadir y quitar... o Synaptic (véase Añadir aplicaciones).
Contenido
[ocultar]
1 Instalación
o 1.1 Herramientas
o 1.2 Manuales
2 Configuración
o 2.1 Para modificar el grupo de trabajo
o 2.2 Para compartir una carpeta
2.2.1 Opción 1
2.2.2 Opción 2
2.2.3 Opción 3
o 2.3 Compartir la Unidad de CD-ROM
o 2.4 Compartir impresoras
o 2.5 Para probar la correcta sintaxis del archivo de configuración
o 2.6 Quitar lineas de comentarios
o 2.7 Parámetros de configuración
2.7.1 Globales
2.7.1.1 usershares
2.7.2 Recursos
2.7.2.1 de impresión
3 Permisos
4 Administración
o 4.1 Cambiar contraseña de un dominio Windows
o 4.2 Agregar usuario
o 4.3 Cambiar contraseña usuario
o 4.4 Para reiniciar samba
5 Acceso a los recursos compartidos
o 5.1 Desde Windows
5.2 Desde Linux
o
Instalación
Primero instalamos samba :
$ sudo apt-get install samba samba-client smbfs smbclient
esto debería instalar también varias otras dependencias.
Herramientas
Tenemos variadas herramientas las cuales podemos utilizar para facilitar
la configuración del servidor:
system-config-samba : Editor gráfico de configuración.
gadmin-samba : Editor gráfico de configuración Avanzado.
swat (Samba Web Administration Tool) : Permite administrar samba
a través del navegador web en http://localhost:901
Manuales
samba-doc : instala manuales en /usr/share/doc-base/ y
/usr/share/doc/samba-doc/ como texto y html
samba-doc-pdf : instala manuales en /usr/share/doc-base/ y
/usr/share/doc/samba-doc-pdf/ con formato pdf
Configuración
La configuración del servidor samba se realiza en el archivo
/etc/samba/smb.conf el cual podemos modificar de la siguiente manera:
$ sudo nano /etc/samba/smb.conf
Para modificar el grupo de trabajo
Buscamos la línea que diga algo como :
workgroup = MSHOME
y reemplazamos MSHOME por el nombre de nuestro grupo de trabajo.
Para compartir una carpeta
Opción 1
Primero debemos crear una carpeta con permisos (por ejemplo) :
$ sudo mkdir /home/publico
$ sudo chmod 755 /home/publico
Luego abrimos la configuración y le agregamos, al final, algo como
esto :
[publico]
comment = Cosas publicas
path = /home/publico
public = yes
writable = no
Las opciones son sugerentes, por ejemplo "public = yes" es para que se
pueda acceder a la carpeta cualquier usuario, y "writable = no" es para
que no se pueda escribir.
Opción 2
Para añadir los recursos con nautilus (navegador de archivos) debemos
crear la siguiente carpeta con sus respectivos permisos:
$ sudo mkdir -p /usr/local/samba/lib/usershares
$ sudo chgrp sambashare /usr/local/samba/lib/usershares
$ sudo chmod 1770 /usr/local/samba/lib/usershares
Y luego agregas los siguientes parámetros a la configuración:
usershare path = /usr/local/samba/lib/usershares
usershare max shares = 10
Finalmente se pueden añadir carpetas en nautilus haciéndole click
derecho, opción "opciones de compartición".
Opción 3
Nos dirigimos al menú de Ubuntu: Sistema, Administración y
seleccionamos Carpetas compartidas. Pulsamos añadir (en la imagen
yo ya tengo añadida una carpeta, pero tú deberías tenerla en blanco) y
nos aparecerá una imagen como la inferior.
En ruta, buscamos la carpeta que queremos compartir, como nombre
pondremos Compartidos (por ejemplo) y seleccionamos Permitir
examinar la carpeta. Pulsamos sobre Configuracion general de archivos
compartidos con Windows, en Dominio introducimos el nombre de red
que posea la máquina Windows.
Compartir la Unidad de CD-ROM
Abrimos la configuración y le agregamos, al final, algo como esto :
[cdrom]
comment = Cd Rom Compartido
path = /media/cdrom0
public = yes
writable = no
browseable = yes
(le agregamos un nuevo parámetro "browseable" esto sirve para
ingresar a la maquina por medio de windows y linux de forma remota y
ver la carpeta que esta compartida)
Compartir impresoras
Ver Compartir una impresora con Windows 2000/XP
Para probar la correcta sintaxis del archivo de configuración
Utilizamos la aplicación testparm, la cual verifica la configuración y
despliega las carpetas compartidas en éste:
$ testparm
Quitar lineas de comentarios
Para eliminar las líneas que corresponden a comentarios:
$ su
# mv smb.conf smb.conf.orig
# testparm -s smb.conf.orig > smb.conf
Nota: el comando su nos logea como root, para lo cual debemos tener
habilitado el usuario root con contraseña. Para ello ejecutas:
$ sudo passwd root
Parámetros de configuración
Globales
check password script : permite definir un script que verificará la
complejidad de la contraseña definida, retornando 0 si es aprobada
por el programa indicado
debug uid : permite registrar los uid, gid, euid y egid del usuario que
solicita un recurso en el log del servidor
domain master : habilita a nmbd con un nombre NetBios específico
que lo identifica como maestro de dominio del grupo de trabajo
indicado
guest account : usuario utilizado para acceder a los recursos que
tienen definido "guest ok"
include : incluye otro archivo de configuración complementario
debuglevel o log level : permite definir el nivel de detalle del log;
incluso por módulo: all ,tdb ,printdrivers ,lanman ,smb ,rpc_parse
,rpc_srv ,rpc_cli ,passdb ,sam ,auth ,winbind ,vfs ,idmap ,quota ,acls
,locking ,msdfs ,dmapi ,registry
map to guest : le indica al servidor la acción a tomar cuando falla el
inicio de sesión de un usuario. inútil en security = share o server
max log size : tamaño máximo del log
message command : le indica al servidor la acción al recibir un
mensaje tipo WinPopup
netbios name : nombre netbios del servidor samba
null passwords : permite el acceso a usuarios con contraseñas vacías
panic action : comando a realizar al caerse smbd o nmbd
prefered master o preferred master : indica si samba es
preferencialmente maestro en el grupo de trabajo
security : determina cómo los clientes responden el logeo (usuario y
contraseña) según el "security mode bit" enviado en las
negociaciones de protocolo.
share : clientes se registran al solicitar un recurso (permite ver la
lista de recursos para visitas)
user : clientes se registran al solicitar la lista de recursos o
solicitar un recurso
domain : idéntico al anterior, pero los datos de registro se
consultan con controlador de dominio
server : idéntico al anterior, pero los datos de registro se
consultan con servidor SMB
server string : texto desplegado como nombre completo del servidor
usershares
Parámetros de configuración aplicables a las carpetas compartidas a
través de nautilus ("Opciones de compartición"):
usershare allow guests : las carpetas compartidas serán accedidas
por los usuarios sin registrarse
usershare max shares : número máximo de carpetas compartidas
por usuario
usershare owner only : permite compartir sólo las carpetas
pertenecientes al usuario
usershare path : ruta donde se almacenan las carpetas compartidas
por cada usuario (los permisos de la carpeta indicada controlan
quienes pueden compartir a través de este medio)
usershare prefix allow list : lista separada por comas de las rutas
absolutas permitidas para compartir (incluye directorios dentro de
estas rutas)
usershare prefix deny list : lista separada por comas de las rutas
absolutas no permitidas para compartir (incluye directorios dentro de
estas rutas)
Recursos
administrative share : recurso administrativo. creado por defecto en
sistemas MS. Por Ejemplo: C$ , D$ , IPC$.
admin users : lista de usuarios con total permiso sobre los recursos
(no aplica si secury = share)
browsable o browseable : define si el recurso es apreciable en la lista
de recursos del servidor
comment : permite definir un comentario aplicado al recurso,
desplegable en los recursos de toda la red; a través de net view o de
smbclient
create mode o create mask : permite restringir los permisos de los
archivos/directorios creados en un recurso a través de una máscara
de permisos
force create mode : permite aplicar permisos a los
archivos/directorios creados en un recurso
directory mode o directory mask : similar a create mode o create
mask, aplicado a directorios
force directory mode : similar a force create mode, aplicado a
directorios
directory security mask : mascara de permisos aplicado a clientes
Windows NT.
group o force group : grupo utilizado como gid del usuario conectado
user o force user : usuario utilizado como uid del usuario conectado
guest ok : permite acceder a un recurso sin identificarse
only guest o guest only : permite acceder sólo a usuarios sin
identificación. requiere el parámetro "guest ok"
allow hosts o hosts allow : lista de equipos permitidos de acceder al
recurso. puede aplicar como global
deny hosts o hosts deny : lista de equipos no permitidos de acceder
al recurso. puede aplicar como global
invalid users : lista de usuarios no permitidos de acceder al recurso
only user : permite el acceso sólo a los usuarios en la lista user
directory o path : ruta del recurso indicado
read list : lista de usuarios que tienen acceso de sólo lectura
read only o writeable : no se permite crear ni modificar los
archivos/directorios del recurso
user , users o username : usuarios con los cuales se probará la
contraseña entregada
valid users : lista de usuarios permitidos de acceder al recurso
invalid users : lista de usuarios no permitidos de acceder al recurso
writable o writeable : permite escribir/modificar en el recurso
indicado
de impresión
print ok o printable : clientes pueden enviar trabajos de impresión a
la carpeta indicada
printer o printer name : nombre de la impresora a la cual serán
enviados los trabajos
Permisos
Los usuarios que ingresan a un recurso público, el sistema le da
como nombre de usuario nobody y como nombre de grupo nogroup,
es así como podemos cambiar el nombre de usuario y nombre de
grupo a nuestras carpetas, con el fin de que el sistema también sepa
quien es el propietario de esa carpeta:
$ sudo chown nobody:nogroup /home/publico
$ sudo chmod 555 /home/publico
y si queremos que también pueda escribir sobre esta carpeta
$ sudo chmod 755 /home/public
y además debemos decirle a Samba que se lo permita (acuerdate que
para que un permiso sea válido, tanto el sistema como Samba deben
estar de acuerdo)
Administración
Cambiar contraseña de un dominio Windows
Para cambiar la contraseña de un usuario de dominio de Windows no es
necesario ir a un PC Windows sino que se puede hacer desde el propio
Ubuntu. Para hacerlo sólo hay que abir un terminal y ejecutar este
comando:
$ smbpasswd -r WindowsDC -U nombreUsuario
Donde WindowsDC es en este caso la dirección del controlador de
dominio de Windows y nombreUsuario el usuario en el dominio.
Al ejecutar el comando pedirá la antigua contraseña en primer lugar y
posteriormente pedirá la nueva.
Una vez hecho esto ya podemos hacer login con la nueva contraseña.
Agregar usuario
Suele pasar que cuando entras desde windows a una carpeta
compartida en ubuntu, te pide usuario, puede hacer lo siguiente:
$ sudo smbpasswd -a tu_usuario
si deseas le pones contraseña por motivos de seguridad, y si no
necesitas la constraseña solo dale enter.
Cambiar contraseña usuario
Ahora que ya tenemos compartiendo la carpeta, nos queda crear un
nombre de usuario y contraseña en el servidor Samba para que el
ordenador con Windows pueda acceder a dicha carpeta, para ello
abrimos una consola e introducimos:
$ sudo useradd -s /sbin/nologin usuario-windows
Donde usuario-windows es el usuario que va a acceder a la carpeta en
Windows. Si /sbin/nologin no existe, probar con /usr/sbin/nologin.
Si no encuentras el fichero nologin, también puedes crear tu usuario
normalmente y luego ejecutar la sentencia:
$ sudo passwd -d usuario-windows
A continuación introducimos
$ sudo smbpasswd -a usuario-windows
Y nos pedirá la contraseña que queramos asignar a dicho usuario.
Para reiniciar samba
Luego de efectuar algún cambio en el archivo /etc/samba/smb.conf
debemos reiniciar samba, para ello :
$ sudo /etc/init.d/samba restart
Ojo en Ubuntu 10.04 LTS y 10.10 el comando anterior no va, debes
utilizar este:
$ sudo restart smbd
Con todo lo anterior deberíamos ser capaces de entrar desde un equipo
con windows o linux a la carpeta /home/public sin necesidad de tener
nombre de usuario ni password:
Acceso a los recursos compartidos
Desde Windows
Colocamos en la barra de direcciones de alguna ventana:
\\192.168.3.1\publico
Desde Linux
Debemos instalar el paquete samba-client. Luego, abrimos una carpeta
y colocamos en la barra de direcciones:
smb://192.168.3.1/publico/
smbclient //192.168.3.1/publico/
donde 192.168.3.1 es "la IP privada" del equipo linux que contiene a la
carpeta /home/public