Professional Documents
Culture Documents
Acerca de Samba.
SAMBA es un conjunto de programas originalmente creados por Andrew Tridgell y actualmente mantenidos por The SAMBA Team, bajo la Licencia Publica General GNU y que implementan en sistemas basados sobre UNIX el protocolo SMB. Sirve como reemplazo total para Windows NT, Warp, NFS o servidores Netware.
En el caso de CentOS 6 y Red Hat Enterprise Linux 6, se instalar Samba 3.5.4. En el caso de CentOS 5 y Red Hat Enterprise Linux 5, se instalar Samba 3.0.33, sin embargo hay opcin a utilizar en su lugar Samba 3.5.4 instalando los paquetes samba3x, samba3x-client y samba3x-common.
yum remove samba samba-client samba-common yum -y install samba3x samba-client3x samba-common3x
Servicio iptables.
Puede utilizar directamente el mandato iptables, ejecutando lo siguiente:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 135:139 -j ACCEPT iptables -A INPUT -m state --state NEW -m udp -p udp --dport 135:139 -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT service iptables save
Shorewall.
Edite el archivo /etc/shorewall/rules:
vim /etc/shorewall/rules
Para permitir el acceso desde cualquier zona del muro cortafuegos o si slo se tiene una zona en el muro cortafuegos, las reglas corresponderan a algo similar a lo siguiente:
#ACTION SOURCE DEST PROTO DEST SOURCE # PORT PORT(S)1 ACCEPT all fw tcp 135:139,445 ACCEPT all fw udp 135:139 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
S se tienen varias zonas en el muro cortafuegos y slo se desea permitir el acceso desde la zona correspondiente a red local, utilice lo siguiente.
#ACTION SOURCE DEST PROTO DEST SOURCE # PORT PORT(S)1 ACCEPT loc fw tcp 135:139,445 ACCEPT loc fw udp 135:139 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
Al terminar de configurar las reglas para Shorewall, reinicie el muro cortafuegos, ejecutando el siguiente mandato:
service shorewall restart
A fin de que SELinux permita al servicio smb funcionar como Controlador Primario de Dominio (PDC, Primary Domain Controler), ejecute el siguiente mandato:
setsebool -P samba_domain_controller 1
A fin de que SELinux permita al servicio smb compartir los directorios de inicio de los usuarios locales del sistema, ejecute el siguiente mandato:
setsebool -P samba_enable_home_dirs 1
A fin de que SELinux desactive la proteccin para los directorios de inicio de los usuarios a travs del servicio smb, ejecute el siguiente mandato:
setsebool -P use_samba_home_dirs 1
A fin de que SELinux permita al servicio smb crear nuevos directorios de inicio para los usuarios a travs de PAM (operacin comn en Controladores Primarios de Dominio), ejecute el siguiente mandato:
setsebool -P samba_create_home_dirs 1
A fin de que SELinux permita al servicio smb compartir todos los recursos en modo de slo lectura, ejecute el siguiente mandato:
setsebool -P samba_export_all_ro 1
A fin de que SELinux permita al servicio smb compartir todos los recursos en modo de lectura y escritura, ejecute el siguiente mandato:
setsebool -P samba_export_all_rw 1
Para definir que un directorio ser compartido a travs del servicio smb, como por ejemplo /var/samba/publico y que se debe considerar como contenido tipo Samba, se utiliza el siguiente mandato:
chcon -t samba_share_t /var/samba/publico
Cada nuevo directorio que vaya a ser compartido a travs de Samba, debe ser configurado como acaba de describirse antes de ser configurado en el archivo /etc/samba/smb.conf.
Si realiza algn cambio en la configuracin del parmetro netbios name, es necesario reiniciar el servicio nmb, el cual es el encargado de proveer el servidor de nombres para los clientes a travs de NetBIOS sobre IP.
service nmb restart
Si va a aplicar algn cambio en cualquier otro parmetro de la configuracin, como son los recursos compartidos, slo es necesario reiniciar el servicio smb:
Para que los servicios nmb y smb inicien automticamente junto con el sistema, slo utilice los dos siguientes mandato:
chkconfig nmb on chkconfig smb on
Procedimientos.
Alta de cuentas de usuario.
Asigne una contrasea al usuario root. sta puede ser distinta a la utilizada en el sistema.
smbpasswd -a root
Es importante sincronizar las cuentas entre el servidor Samba y las estaciones Windows. Es decir, si en una mquina con Windows ingresamos como el usuario fulano con contrasea 123qwe, en el servidor Samba deber existir tambin dicha cuenta con ese mismo nombre y la misma contrasea. Como la mayora de las cuentas de usuario que se utilizarn para acceder hacia Samba no requieren acceso al intrprete de mandatos del sistema, no es necesario asignar contrasea con el mandato passwd y se deber definir /sbin/nologin o bien /bin/false como intrprete de mandatos para la cuenta de usuario involucrada.
useradd -s /sbin/nologin usuario smbpasswd -a usuario
Es opcional asignar contrasea con el mandato passwd. Cualquier cuenta de usuario a la cual se haya omitido asignar contrasea a travs del mandato passwd, estar como cuenta inactiva para el resto de los servicios. Si se necesita que las cuentas se puedan utilizar para acceder hacia otros servicios como seran Telnet, SSH, etc, es decir, que se permita acceso al intrprete de mandatos, ser necesario especificar /bin/bash como intrprete de mandatos y adems se deber asignar una contrasea en el sistema con el mandato passwd:
useradd -s /bin/bash usuario passwd usuario smbpasswd -a usuario
El archivo lmhosts
Es necesario empezar resolviendo de manera local los nombres NetBIOS, asocindolos con las direcciones IP correspondientes, en el archivo /etc/samba/lmhosts (lmhosts es acrnimo de LAN Manager hosts). Edite el archivo /etc/samba/lmhosts con cualquier editor de texto simple.
vim /etc/samba/lmhosts
El nombre NetBIOS debe tener un mximo de doce caracteres alfanumricos. Normalmente se utiliza el nombre corto del servidor, bien o el nombre corto que se asigno como alias a la interfaz de red. Si se edita el archivo /etc/samba/lmhosts, se encontrar un contenido similar al siguiente:
127.0.0.1 localhost
Se pueden aadir los nombres y direcciones IP de cada uno de los anfitriones de la red local. Como mnimo debe definirse el nombre del anfitrin del servidor Samba, junto con su correspondiente direccin IP:
127.0.0.1 192.168.70.1 localhost servidor
De manera opcional, tambin puede aadir el resto de los anfitriones de la red local. La separacin de campos se hace con un tabulador. Ejemplo:
127.0.0.1 192.168.70.1 192.168.70.2 192.168.70.3 192.168.70.4 192.168.70.5 192.168.70.6 192.168.70.7 192.168.70.8 localhost servidor joel blanca alejandro sergio isaac finanzas direccion
Dentro de este archivo, encontrar informacin que ser de utilidad y que est comentada con almohadillas (smbolo #) y varios ejemplos comentados con punto y coma (smbolo ;), siendo estos ltimos los que se pueden tomar como referencia para configurar.
Parmetro workgroup. Se establece el grupo de trabajo definiendo el valor del parmetro workgroup asignando un grupo de trabajo deseado:
workgroup = MIGRUPO
Parmetro netbios name. De manera opcional, se puede establecer con el parmetro netbios name otro nombre distinto para el servidor, si acaso sto fuese necesario, pero siempre tomando en cuenta que dicho nombre deber corresponder con el establecido en el archivo /etc/samba/lmhosts:
netbios name = servidor
Parmetro server string. Este parmetro es de carcter descriptivo. Puede utilizarse un comentario breve que de una descripcin del servidor.
server string = Servidor Samba %v en %L
Parmetro hosts allow. El parmetro hosts allow permite establecer seguridad adicional estableciendo la lista de control de acceso de anfitriones. En sta se pueden definir direcciones IP individuales o redes que tendrn permiso de acceso hacia el servidor. Si, por mencionar un ejemplo, la red consiste en las anfitriones con direccin IP que van desde 192.168.70.1 hasta 192.168.70.254, el rango de direcciones IP que se definir en hosts allow ser 192.168.70., de modo tal que slo se permitir el acceso dichas mquinas. En el siguiente ejemplo se definen las redes 192.168.70.0/24 y 192.168.37.0/24, especificando los tres primeros octetos de la direccin IP de red, as como cualquier direccin IP de la red 127.0.0.0/8 (retorno del sistema o loopback), siendo necesario definir slo el primer octeto de dicho segmento:
hosts allow = 127., 192.168.70., 192.168.37.
Parmetro name resolve order. De modo predeterminado, este parmetro est ausente de la configuracin. Puede aadirlo despus del parmetro anterior. Define el orden a travs del cual se tratar de resolver los nombres NETBIOS. Si utiliza el siguiente ejemplo, se establece que primero se intentar resolver los nombres NETBIOS con la informacin del archivo /etc/samba/lmhosts, luego
el archivo /etc/hosts, luego a travs de consultas en el servidor WINS y, si todo lo anterior falla, a travs de la direccin IP de difusin de la red local.
name resolve order = lmhosts hosts wins bcast
Si se va a utilizar un servidor WINS en otro servidor o se est configurando el sistema slo como cliente SMB, se pueden agilizar las comunicaciones con el resto de los equipos de la red local estableciendo wins como la primera opcin para resolucin de nombres NETBIOS:
name resolve order = wins lmhosts hosts bcast
Nota. Nautilus, el gestor de archivos predeterminado del escritorio de GNOME, requiere que est presente esta ltima configuracin en el archivo /etc/samba/smb.conf del anfitrin desde el cual se ejecute y que adems se especifique wins en el orden de resolucin de nombres del archivo /etc/nsswitch.conf del anfitrin desde el cual se ejecute. De otro modo Nautilus mostrar invariablemente un error cada vez que se intente conectar a cualquier servidor de red utilizando un nombre NETBIOS. Guarde el archivo /etc/samba/smb.conf, regrese al intrprete de mandatos y edite el archivo /etc/nsswitch.conf:
vim /etc/nsswitch.conf
En CentOS 6 y Red Hat Enterprise Linux 6, alrededor de la lnea 38, localice lo siguiente:
hosts: files dns
En versiones recientes de Fedora openSUSE o Ubuntu, encontrar lo siguiente alrededor de la lnea 63:
files mdns4_minimal [NOTFOUND=return] dns
Parmetro interfaces. Permite establecer desde que interfaces de red del sistema se escucharn peticiones. Samba rechazar todas las conexiones provenientes desde cualquier otra interfaz o direccin IP, sin definir. sto es til cuando Samba se ejecuta en un servidor que sirve adems de puerta de enlace para la red local, impidiendo se establezcan conexiones hacia este servicio desde Internet o bien fuera del bloque o segmento, de direcciones de la red local.
Los valores aceptados para este parmetro es una lista, separada por comas o espacios, con los nombres de las interfaces (lo, eth0, eth1, etc.) y direcciones IP utilizada en una interfaz en particular, con la mscara de sub-red en formato CIDR (Classless Inter-Domain Routing), es decir, expresada en bits. Ejemplo:
interfaces = lo, eth1, 192.168.70.254/25
Impresoras en Samba.
Las impresoras se comparten de modo predeterminado, as que slo hay que realizar algunos ajustes. Si se desea que se pueda acceder hacia la impresora como usuario invitado sin contrasea, basta con aadir public = Yes (que es lo mismo que guest ok = Yes) en la seccin de impresoras. Edite el archivo /etc/samba/smb.conf:
vim /etc/samba/smb.conf
[printers] comment = El comentario que guste. path = /var/spool/samba printable = Yes browseable = No writable = no printable = yes public = Yes
Para la administracin de las colas de impresin, anteriormente se haca utilizando el parmetro printer admin, definiendo una lista de usuarios o grupos. Actualmente se hace de manera similar a cmo se hace en en Windows, utilizando polticas, ejecutando desde el intrprete de mandatos, lo siguiente:
net -S servidor -U root rpc rights grant fulano SePrintOperatorPrivilege
Procure que los nombres de los recursos a compartir tengan un mximo de 12 caracteres, utilizando slo caracteres alfanumricos de la tabla de caracteres ASCII. El volumen puede utilizar cualquiera de las siguientes opciones:
Opcin
guest ok
Descripcin Define si se permitir el acceso como usuario invitado. El valor puede ser Yes o No. Es un equivalente del parmetro guest ok, es decir define si se permitir el acceso como usuario invitado. El valor puede ser Yes o No. Define si se permitir mostrar este recurso en las listas de recursos compartidos. El valor puede ser Yes o No. Define si se permitir la escritura. Es el parmetro 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 Define los usuarios o grupos, que podrn 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 Define los usuarios o grupos, que podrn 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 Define los usuarios o grupos, que podrn acceder con permisos administrativos para el recurso. Es decir, podrn 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
public
browseable
writable
valid users
write list
admin users
directory mask
Es lo mismo que directory mode. Define qu permiso en el sistema tendrn los subdirectorios creados dentro del recurso. Ejemplos: 1777 Define que permiso en el sistema tendrn los nuevos archivos creados dentro del recurso. Ejemplo: 0644
create mask
En el siguiente ejemplo se compartir a travs de Samba el recurso denominado ejemplo, el cual est localizado en el directorio /var/samba/ejemplo del disco duro. Se permitir el acceso a cualquiera pero ser un recurso de slo lectura salvo para los usuarios administrador y fulano. Todo directorio nuevo que sea creado en su interior tendr permiso 755 (drwxr-xr-x) y todo archivo que sea puesto en su interior tendr permisos 644 (-rw-r-r--). Genere el nuevo directorio /var/samba/ejemplo, ejecutando lo siguiente:
mkdir -p /var/samba/ejemplo
Cambie el contexto de SELinux, a fin de que este directorio sea considerado como contenido Samba.
chcon -t samba_share_t /var/samba/ejemplo
Cambie asigne permisos de lectura, escritura y ejecucin a los usuarios fulano y zutano:.
setfacl -m u:fulano:7,u:zutano:7 /var/samba/ejemplo
Ocultando archivos que inician con punto. Es poco conveniente que los usuarios puedan acceder, notando la presencia de archivos ocultos (archivos de configuracin, por lo general), es decir archivos cuyo nombre comienza con un punto, como es el caso del directorio de inicio del usuario en el servidor Samba (.bashrc, .bash_profile, .bash_history, etc.). Puede utilizarse el parmetro hide dot files, con el valor Yes, para mantenerlos ocultos.
hide dot files = Yes
Este parmetro es particularmente til para complementar la configuracin de los directorios personales de los usuarios. Edite el archivo /etc/samba/smb.conf:
vim /etc/samba/smb.conf
Localice la configuracin correspondiente a los directorios de inicio de los usuarios y aada la opcin hide dot files con el valor Yes, como se muestra a continuacin:
[homes] comment = Home Directories browseable = no writable = yes hide dot files = Yes
Comprobaciones.
Modo texto desde GNU/Linux.
Montaje de recursos compartidos desde GNU/Linux. Desde un cliente GNU/Linux, abra una terminal y utilice el mandato mkdir para crear un punto de montaje:
mkdir /mnt/ejemplo
Utilice el mandato mount, con la opcin -t con el valor cifs, la opcin -o para especificar con username el nombre de usuario a utilizar, la ruta del recurso compartido en el servidor Samba y el punto de montaje a utilizar:
mount -t cifs -o username=fulano //servidor/ejemplo /mnt/ejemplo
Lo anterior solicitar se ingrese la contrasea del usuario utilizado en el servidor Samba especificado. Para hacer permanente lo anterior, utilice un editor de texto para crear el archivo /etc/credentials:
vim /etc/credentials
Aada el siguiente contenido, especificando el nombre de usuario y contrasea que sern utilizados especficamente con el recurso compartido involucrado:
username=fulano password=contrasea
Cambie los permisos de acceso del archivo, de modo que slo el usuario root pueda ver y modificar el contenido de ste:
chmod 600 /etc/credentials
Aada el siguiente contenido, especificando con los parmetros uid y gid los nmeros de UID y GID del usuario y grupo del anfitrin local que utilizarn el recurso. De modo predeterminado, este recurso ser montado automticamente con el siguiente reinicio de sistema.
//servidor/ejemplo 05 0 0 /mnt/ejemplo cifs credentials=/etc/credentials,uid=1005,gid=10
Utilice las opciones noauto y user si se prefiere que el recurso sea montado manualmente por un usuario del anfitrin local:
//servidor/ejemplo /mnt/ejemplo 05,noauto,user 0 0 cifs credentials=/etc/credentials,uid=1005,gid=10
Herramienta smbclient desde GNU/Linux. Indudablemente el mtodo ms prctico y tambin el ms sencillo para utilizar y hacer
pruebas de diagnstico, es el mandato smbclient. ste permite acceder haca cualquier servidor Samba o Windows, de modo similar a como se hace con el mandato ftp en el intrprete de mandatos. Para acceder al cualquier recurso de alguna mquina Windows o servidor Samba, determine primero que volmenes o recursos compartidos posee sta. Utilice el mandato smbclient del siguiente modo:
smbclient -U usuario -L servidor
La siguiente corresponde a la sintaxis bsica para poder navegar los recursos compartidos por la mquina Windows o el servidor SAMBA:
smbclient //alguna_maquina/recurso -U usuario
Ejemplo:
smbclient //SERVIDOR/EJEMPLO -U fulano
Despus de ejecutar lo anterior, el sistema solicitar se proporcione la contrasea del usuario fulano en el equipo denominado LINUX.
smbclient //SERVIDOR/EJEMPLO -U fulano added interface ip=192.168.70.126 bcast=192.168.70.127 nmask=255.255.255.128 Password: Domain=[fulano] OS=[Unix] Server=[Samba 3.5.4-68.el6_0.2] smb: >
Pueden utilizarse casi los mismos mandatos que en el intrprete de ftp, como seran get, mget, put, del, etc.
Modo grfico
Desde el escritorio de GNOME. Si utiliza GNOME 2.x o superior, ste incluye un mdulo de cliente SMB para Nautilus (gnome-vfs-smb, en CentOS 5 o gvfs-smb, en CentOS 6), el cual permite acceder hacia los recursos compartidos a travs de servidores Samba. Slo hay que hacer clic en Servidores de red (men de GNOME o bien el mismo Nautilus). Para que funcione correctamente, se requiere que exista un servidor WINS en la red local, se tenga establecido el parmetro name resolve order en el archivo /etc/samba/smb.conf y que el parmetro hosts del archivo /etc/nsswitch.conf incluya wins.
Desde Windows. Desde Windows deber ser posible acceder sin problemas hacia cualquier servidor Samba, como si fuese hacia cualquier otro sistema con Windows.