I-samba-22: (0.09) (potato) Servidor de recursos netbios (Win) con linuxconf en una red de Win95-Win98 sin servidor NT (incluyo smb.conf) Cambios: 0.09 22/10/00 +preparar el servidor DNS, +contraseñas no unix, +using_samba Copyright Manel Marin @ 2000 Cubierto por la licencia GNU GPL disponible en http://www.gnu.org/copyleft/gpl.html Se puede copiar, distribuir y modificar libremente bajo los términos de la GPL e incluyendo siempre este párrafo SIMBOLOS UTILIZADOS: -> Se abre una ventana o se activa la pestaña (cambian los botones) # Comentarios [boton] Pulsar boton /pestaña\ Pulsar pestaña (x) opcion Activar opcion ( ) opcion Desactivar opcion Campo = valor Escribir valor en el Campo ANTES DE EMPEZAR: Cambiar idioma para tener en castellano gran parte de linuxconf (ver mi chuleta I-castellano) Para compartir impresoras debe de utilizarse "lpr" o "lprng" y debe estar ya instalado y configurado (mira mis chuleta I-impresora o I-lprng) 1) Instalar el paquete samba - Arrancar desde inetd (más seguridad) o como demonio (más rápido) - No sincronizar contraseñas del sistema con las contraseñas samba Podemos utilizar "sambaconfig" para cambiar el modo de arranque de samba después de la instalación (demonio independiente o inetd) 2) Ejecutar como root linuxconf 3) Configurar el servidor SAMBA Linuxconf -> /Configuración\ -> [Configuración de red] -> /Tareas como servidor\ -> [SMB: Servidor de archivos samba] -> [Valores por defecto] /Configuración básica\ SMB account management: (x) Not managed ( ) Sincronizar Linux con claves SMB Descripción del servidor = Servidor Linux de Manel Grupo de trabajo = CASA #Nombre del grupo de trabajo Win /Claves\ (x) Requiere clave encriptada #Necesario para Win95 OSR2 y NT Modo de autenticac.: (x) Recurso #Es "security = share" /Acceso\ Máquinas permitidas = 192.168.0.0/255.255.255.0 #Mi red Máquinas negadas = 0.0.0.0/0 #Prohibir a los demás /Red\ Nivel SO = 65 #Esto gana a los NT :-) (x) Master preferido #Somos el servidor principal ( ) Master de dominio #No recolectar lista de subredes ( ) Activar el servidor WINS #Actuar como servidor WINS Servidor WINS = #IP del servidor WINS si es otro Interfaces = 127.0.0.1 192.168.0.1 #Restrigir interfaces Orden de resolución de nombres = lmhosts, wins, bcast #Yo no uso /etc/hosts /Cuentas autom.\ - /Características\ - [Aceptar] [Configuración del home de usuario] (x) Recurso activo ( ) Navegable /Acceso\ ( ) Acceso público (x) Escribible #Permitimos escritura a usuarios en su home /Usuarios\ - /Scripts\ - [Configuración por defecto para impresoras] Comentario/descripción = All printers (x) Recurso activo (x) Share is printable ( ) Navegable (x) Acceso público [Configuración Netlogon] - [Recursos de disco] -> # Ventana: Recurso de disco #RECURSO PUBLICO: DONDE TODOS ESCRIBEN/BORRAN LOS DE TODOS #La cuenta de invitado (para este recurso) debe de ser el propietario del # directorio empleado por el recurso: # # owner = manel, group = manel, permisos = 2770 (rwxrwx--- + suid group) # [Agregar] -> # Ventana: Configuración del recurso SMB Nombre del recurso = publico Comentario/descripción = todos escriben/borran lo de todos (x) Recurso activo (x) Navegable Directorio a exportar = /home/manel/samba/publico /Acceso\ (x) Acceso público (x) Acceso sólo invitados (x) Escribible /Usuarios\ - /Scripts\ - /Características\ Cuenta invitado (este recurso) = manel [Aceptar] #PUBLICO SOLO LECTURA: LECTURA POR TODOS #La cuenta de invitado (para este recurso) debe de ser el propietario del # directorio empleado por el recurso: # # owner = manel, group = manel, permisos = 2770 (rwxrwx--- + suid group) # [Agregar] -> # Ventana: Configuración del recurso SMB Nombre del recurso = descarga Comentario/descripción = lectura por todos (x) Recurso activo (x) Navegable Directorio a exportar = /home/manel/samba/descarga /Acceso\ (x) Acceso público (x) Acceso sólo invitados ( ) Escribible /Usuarios\ - /Scripts\ - /Características\ Cuenta invitado (este recurso) = manel [Aceptar] #RECURSO RESTRINGIDO E INVISIBLE: CIERTOS USUARIOS ESCRIBEN/BORRAN LO DE TODOS #El usuario de "Forzar usuario" y "Forzar grupo" debe de ser el propietario del # directorio empleado por el recurso: # # owner = manel, group = manel, permisos = 2770 (rwxrwx--- + suid group) # [Agregar] -> # Ventana: Configuración del recurso SMB Nombre del recurso = descarga-w Comentario/descripción = solo ciertos usuarios escriben/borran todo (x) Recurso activo ( ) Navegable # Esto es lo que hace que sea "invisible" Directorio a exportar = /home/manel/samba/descarga /Acceso\ ( ) Acceso público ( ) Acceso sólo invitados (x) Escribible /Usuarios\ Usuarios válidos = manel, Nombre2, Nombre3 /Scripts\ - /Características\ Forzar usuario = manel Forzar grupo = manel [Aceptar] #IDEA: Recurso compartido "www" para las páginas web de la intranet, # config como la anterior, pero para que www-data (servidor web) pueda leer # las páginas html hay que añadir a su sección en el smb.conf: ---8<--- [www] ... create mask = 0664 directory mask = 0775 --->8--- [Salir] [Estado del servidor samba] - [Salir] 4) Politica general de acceso a archivos creados por samba, para que el grupo tenga iguales privilegios que el usuario. Esto no es necesario si el propietario de todos los archivos en todos los recursos es siempre el mismo usuario Añadir a la sección [global] de /etc/samba/smb.conf : create mask = 0660 directory mask = 0770 5) Hacer que samba solo escuche en los interfaces locales ---Esto probablemente solo sea preciso si arrancamos samba como demonio--- Añadir a la sección [global] de /etc/samba/smb.conf : ---8<--- bind interfaces only = yes --->8--- ATENCION: Esto hace que smbd restrinja el acceso a los interfaces especificados. Pero nmbd sigue abriendo UDP 0.0.0.0:137 y UDP 0.0.0.0:138 pero según el man smb.conf sólo para escuchar broadcast... y no pide nada por ellos 6) Activar los cambios (modo inetd) # Avisar a los usuarios de que cerramos las conexiones!!! killall smbd # Varias veces hasta que diga "no process killed" killall nmbd # Varias veces hasta que diga "no process killed" Como los demonios están en inetd, cuando se vuelvan a acceder volverán a activarse y leerán la nueva configuración (modo demonio) /etc/init.d/samba stop /etc/init.d/samba start 7) Preparar el servidor DNS (o usar /etc/hosts) El servidor DNS local debe estar a cargo (master) del rango de IP locales (por ejemplo 192.168.0.XX) para devolver "no existe" (o resolver nombres/IP) para evitar peticiones de resolución de nuestras IP locales a Internet y prevenir errores en las conexiones de los Win por timeout Se utiliza el servidor DNS siempre que no tienes las IP de tus máquinas en /etc/hosts, no importa que samba sea el servidor WINS, utilices el archivo lmhosts para declarar las IP de los nombres netbios, o resuelvas los nombres netbios por broadcast (que es mi caso) Mira mi chuleta "I-dns-linuxconf" para la configuración del servidor DNS A FONDO: El servidor samba al recibir una petición (SessionRequest) siempre: - Pregunta al servidor DNS el nombre de host de la IP - Pregunta al servidor DNS la IP del nombre de host que nos acaba de dar - Hasta que no recibe una respuesta del servidor DNS no se envia el paquete de "SessionGranted", dando igual si obtiene lo que pide o si recibe un "no existe" (NXDomain) - Los Win esperan un máximo de 10 segundos el "SessionGranted" y sino devuelven el Error 53 Error 53: No se encuentra el nombre del equipo especificado en la ruta de acceso a la red. --Esto es inexacto, si encontró el equipo, pero no admitió una sesión-- Esto puede suceder si nuestro servidor DNS (caché) no reconoce el rango de IP locales como propio y lo pregunta al proveedor en Internet y este tarda mucho en contestar (y esto puede que pase solo a veces) CONTRASEÑAS DE USUARIOS: ATENCION: el nombre de usuario a crear/cambiar la contraseña debe de ser un usuario válido del sistema SEGURIDAD: En el servidor las contraseñas samba no deben de ser las contraseñas de usuario del sistema, ya que serían una via de entrada (como usuario) cuando ya se ha comprometido un cliente samba Un compromiso de root en un cliente samba permite ver las contraseñas de conexión al servidor samba (en fstab o en texto claro en un script)... smbpasswd -a nombre # Para dar contraseña a un nuevo usuario smbpasswd nombre # Para cambiar un contraseña ya existente PRUEBAS: smbclient -L 192.168.0.1 # Ver listado de recursos disponibles smbclient \\\\192.168.0.1\\recurso # Hay que escapar \ -> \\ por el shell # Conecta como usuario activo smbclient \\\\192.168.0.1\\recurso -U nombre # Conecta como usuario "nombre" ls # para ver lista de archivos put archivo # para poner archivo quit # para salir SOLUCION DE PROBLEMAS: Si no ves los recursos compartidos de la red: - Mira que el valor de la máscara de la red en la config de este sistema sea la correcta, el "browsing" se soluciona por broadcast Si no puedes compartir recursos desde NT: - Añade el usuario con el que entras al grupo "Usuarios avanzados" curiosamente el Administrador no tiene permisos para compartir recursos en NT Si no puedes entrar en un recurso compartido con NT: - Crear una cuenta de usuario en el NT con el nombre con el que intentas conectar y la misma contraseña Errores al imprimir en impresora SAMBA (solo a veces): - Prepara el servidor DNS local (paso 7 en esta chuleta) o declara todos los sistemas en el archivo "/etc/hosts" Paso a paso (Resumen de /usr/doc/samba-doc/DIAGNOSIS.txt.gz) 1) CLI:$ ping SERV SERV:$ ping CLI 2) SERV:$ testparm # errores config 3) SERV:$ smbclient -L SERV # muestra mis recursos 4) SERV:$ nmblookup -B SERV_O_IPSERV __SAMBA__ # muestra IP de SERV 5) SERV:$ nmblookup -B CLI_O_IPCLI '*' # pregunto directamente 6) SERV:$ nmblookup -d 2 CLI # pregunto broadcast 7) SERV:$ smbclient //SERV/RECURSO # conecto a cliente 8) CLI_WIN: net view \\SERV # recursos de servidor 9) CLI_WIN: net use x: \\SERV\RECURSO # conecto servidor 10) SERV:$ nmblookup -M GRUPO_DE_TRABAJO # IP del master browser 11) CLI_WIN: "Ver los recursos" del SERV desde el Explorador USO DESDE WIN95: Archivos: El atributo "readonly" de los archivos en el recurso compartido funciona correctamente (rw-rw---- <-> r--r-----) y se muestra en Win correctamente. ATENCION: Solo puede quitarlo, editar o borrar el archivo el usuario propietario del archivo. Los atributos "Oculto" y "Modificado" no hacen nada Directorios: Los atributos hacen cosas raras, mejor no utilizarlos El atributo "readonly" (drwxrwx--- -> drwxr-x---) no se puede quitar ni se muestra en Win, solo afecta al grupo Si el directorio es (dr-xr-x--- -> drwxrwx---) se muestra "readonly" y se puede quitar desde Win Curiosamente "Oculto" y "Modificado restauran (drwxr-x--- -> drwxrwx---) y no hacen nada más UN POCO DE TEORIA: "IPC$" Es...¿¿¿que es??? Servidor WINS (wins support = yes) Es un conversor de nombres netbios a IP, es recomendable para evitar la resolución de nombres por tráfico broadcast, y es la única forma de que clientes de varias redes se vean entre ellos ATENCION: todos los clientes deben tenerlo configurado para evitar errores Acerca de los permisos de los directorios: El suid group es necesario para que todos los archivos escritos *INCLUSO* desde fuera del SAMBA (escribiendo al directorio algo) sean accesibles por todos los usuarios del grupo El sticky bit evita que un usuario borre los archivos de los otros, sin él puede hacerlo aunque no tenga acceso de escritura a esos archivos ARCHIVOS: (potato) /etc/samba/smb.conf Archivo de configuración del servidor /var/log/smb log del servidor de recursos netbios /var/log/nmb log del servidor de nombres netbios DEFICIENCIAS DE LINUXCONF (se puede hacer de otra forma): No se puede manipular el "create mask" de los recursos desde Linuxconf No se puede manipular el "directory mask" RODEO: Esto obliga a usar "force user" y "force group" en los recursos (o editar smb.conf a mano) No se puede hacer "bind interface only = yes" desde Linuxconf No se puede manipular el "security mask" (permisos modificables por clientes) por fortuna por defecto es igual al create mask Afortunadamente se puede editar smb.conf y Linuxconf respeta los comentarios y los valores introducidos "a mano" BUGS (probado en Slink y Potato) Desde Win95 el "readonly" de los directorios se puede activar, pero luego no se muestra, ni se puede desactivar. A archivos sueltos funciona bien. A PROBAR MAS: Si se produce un error de impresora (HP895cxi) mientras imprime en modo gráfico y la apagamos y encendemos salen paginas en blanco con "una línea críptica"... -Me ha pasado tras quitar los print command de smb.conf, aunque los valores por defecto al hacer "printing = bsd" en "man smb.conf" parecen correctos...- MAS AYUDA: En la doc de samba (/usr/doc/samba-doc/*) del paquete samba-doc /usr/doc/samba-doc/using-samba/index.html # ¡¡¡Es un libro en html!!! BROWSING.txt.gz BROWSING-Config.txt.gz SMB-HOWTO man samba #man genérico de los demonios y utilidades de samba man smb.conf #man de la configuración man smbd #man del demonio servidor de recursos netbios man nmbd #man del demonio servidor de nombres netbios http://www.samba.org /etc/samba/smb.conf de esta config: ---8<--- ; ; /etc/smb.conf ; ; Sample configuration file for the Samba suite for Debian GNU/Linux ; ; Please see the manual page for smb.conf for detailed description of ; every parameter. ; [global] printing = bsd printcap name = /etc/printcap load printers = yes guest account = nobody invalid users = root ; "security = user" is always a good idea. This will require a Unix account ; in this server for every user accessing the server. security = share ; Change this for the workgroup your Samba server will part of workgroup = MIGRUPO server string = %h server (Samba %v) ; If you want Samba to log though syslog only then set the following ; parameter to 'yes'. Please note that logging through syslog in ; Samba is still experimental. syslog only = no ; We want Samba to log a minimum amount of information to syslog. Everything ; should go to /var/log/{smb,nmb} instead. If you want to log through ; syslog you should set the following parameter to something higher. syslog = 0; ; This socket options really speed up Samba under Linux, according to my ; own tests. socket options = IPTOS_LOWDELAY TCP_NODELAY SO_SNDBUF=4096 SO_RCVBUF=4096 ; Passwords are encrypted by default. This way the latest Windows 95 and NT ; clients can connect to the Samba server with no problems. encrypt passwords = yes ; It's always a good idea to use a WINS server. If you want this server ; to be the WINS server for your network change the following parameter ; to "yes". Otherwise leave it as "no" and specify your WINS server ; below (note: only one Samba server can be the WINS server). ; Read BROWSING.txt for more details. wins support = no ; If this server is not the WINS server then specify who is it and uncomment ; next line. ; wins server = 172.16.0.10 ; Please read BROWSING.txt and set the next four parameters according ; to your network setup. There is no valid default so they are commented ; out. ; os level = 0 ; domain master = no ; local master = no ; preferred master = no ; What naming service and in what order should we use to resolve host names ; to IP addresses name resolve order = lmhosts, host, wins, bcast ; This will prevent nmbd to search for NetBIOS names through DNS. dns proxy = no ; Name mangling options preserve case = yes short preserve case = yes ; This boolean parameter controlls whether Samba attempts to sync. the Unix ; password with the SMB password when the encrypted SMB password in the ; /etc/samba/smbpasswd file is changed. unix password sync = no ; For Unix password sync. to work on a Debian GNU/Linux system, the following ; parameters must be set (thanks to Augustin Luton ; for sending the correct chat script for ; the passwd program in Debian Potato). passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n . ; The following parameter is useful only if you have the linpopup package ; installed. The samba maintainer and the linpopup maintainer are ; working to ease installation and configuration of linpopup and samba. ; message command = /bin/sh -c '/usr/bin/linpopup "%f" "%m" %s; rm %s' & ; The default maximum log file size is 5 MBytes. That's too big so this ; next parameter sets it to 1 MByte. Currently, Samba rotates log ; files (/var/log/{smb,nmb} in Debian) when these files reach 1000 KBytes. ; A better solution would be to have Samba rotate the log file upon ; reception of a signal, but for now on, we have to live with this. max log size = 1000 comment = Servidor Linux de Manel map to guest = never password level = 0 null passwords = no allow hosts = 192.168.0.0/255.255.255.0 deny hosts = 0.0.0.0/0 os level = 65 preferred master = yes domain master = no dead time = 0 debug level = 0 interfaces = 127.0.0.1 192.168.0.1 ; ---- Añadido por Manel ---- create mask = 0660 directory mask = 0770 bind interfaces only = yes ; ---- Fin añadido por Manel ---- [homes] comment = Home Directories browseable = no ; By default, the home directories are exported read only. Change next ; parameter to "no" if you want to be able to write to them. read only = yes ; File creation mask is set to 0700 for security reasons. If you want to ; create files with group=rw permissions, set next parameter to 0775. create mask = 0700 ; Directory creation mask is set to 0700 for security reasons. If you want to ; create dirs. with group=rw permissions, set next parameter to 0775. directory mask = 0700 available = yes public = no writable = yes only user = no [printers] comment = All Printers browseable = yes path = /tmp printable = yes public = yes writable = no create mode = 0700 available = yes [publico] comment = todos escriben/borran lo de todos available = yes browseable = yes path = /home/manel/samba/publico public = yes guest only = yes writable = yes only user = no guest account = manel [descarga-w] comment = solo ciertos usuarios escriben/borran todo available = yes browseable = no path = /home/manel/samba/descarga public = no guest only = no writable = yes only user = no valid users = manel, iu, iris force user = manel force group = manel [descarga] comment = lectura por todos available = yes browseable = yes path = /home/manel/samba/descarga public = yes guest only = yes writable = no only user = no guest account = manel --->8---