Bienvenid@ a Guimi.Net
 
 Cambiar a versión para impresión

Instalación de Servidor de Dominio y Ficheros

Servidor de dominio Windows PDC con Samba sobre Debian GNU/Linux

Versión 2 rc1 - Enero de 2007
 
Creative Commons License 2007 Güimi (http://guimi.net)
Está permitido copiar, distribuir y/o modificar los documentos bajo los términos de la licencia
"Reconocimiento-Compartir bajo la misma licencia 3.0 España" de Creative Commons.
Puede ver una copia de esta licencia completa.

Índice


Un gran trabajo mucho más ambicioso que este, pero un poco desactualizado es "Integración de redes con OpenLDAP, Samba, CUPS y PyKota" de Sergio González.
 

 

Resumen

El servidor que vamos a instalar debe cumplir las siguientes expectativas:
  • RAID de nivel 1 (mirror)
  • Servidor de ficheros (SAMBA)
    • Directorios de uso personal y exclusivo (con sistema de cuotas)
    • Directorio de intercambio temporal (con borrado automático diario)
    • Directorio público de solo lectura
    • Directorios de trabajo de uso restringido
  • Controlador primario de dominio -PDC- (SAMBA)
    • Identificación de usuarios
    • Gestión de perfiles de usuario
    • Ejecución de procesos de conexión (logon scripts)
  • Gestión segura
  • Copia de seguridad en DVD
  • Gestión de cuotas
Para ello vamos a utilizar Debian GNU/Linux con, principalmente, Samba.
 

 

Notas sobre el documento

Algunos de los ficheros de configuración se muestran incompletos. en ese caso las lineas aquí mostradas son únicamente las que ha sido necesario modificar o añadir.

Las versiones de los paquetes Debian utilizadas al realizar este documento han sido:
  • Debian Etch RC1 (Copia diaria del 9 de Enero de 2007)
  • linux-image-2.6.18-3-686
  • mdadm-2.5.6-8
  • samba-3.0.23d-4
  • quota-3.14-4
  • quotatools-1.4.9-2
 

 

Planificación

Red(es)

Elegimos las redes a utilizar en las distintas ubicaciones, dentro de los rangos reservados.
 
Rangos de direcciones IP reservadas (Intranets):
- 1 Clase A 10.x.x.x
- 16 Clase B 172.16-172.31
- 256 Clase C 192.168.0-192.168.255
 
Para una red local sencilla se suele utilizar 192.168.0.0/24
 

Particionado del servidor

Para poder implantar cuotas de uso hay que tener en cuenta que el sistema funciona por sistemas de ficheros (FSs), por lo que hay que crear una partición específicamente para ello.
Son convenientes:
  • Una partición para el sistema de arranque (/)
  • Una partición para copias de seguridad del sistema (/copia)
  • Una partición swap
  • Una partición para usuarios -directorios personales- con cuotas, dentro de /home (/home/personal)
    (Esto nos permite mantener los usuarios propios del sistema en /home y que no se mezclen).
  • Una partición para trabajo -directorios de grupos- con cuotas, dentro de /home (/home/trabajo) que contenga:
    • Directorio "publico"
    • Directorio "temporal"
    • Directorios por proyectos, grupos, departamentos...
 

Recogida de información

Antes de comenzar con la instalación del sistema deberemos disponer de:
  • Lista de hardware sobre el que vamos a trabajar (para asegurar su compatibilidad)
  • Configuración de red:
    • IP y Máscara
    • Pasarela o gateway
    • Servidores de DNS
    • Proxy (si procede)
  • CD de Debian GNU/Linux
  • Información sobre los grupos que se van a crear, que permisos deben tener, que usuarios los componen...
 

Definición de políticas de uso del servidor de ficheros

Para realizar la configuración del sistema, debemos establecer las políticas de uso del servidor de ficheros. Unas políticas generales que vamos a seguir en este documento son:
  • El servidor comparte los siguientes recursos:
    • \\(servidor)\netlogon - Para realizar el proceso de conexión (Incluye netlogon/scripts/)
    • \\(servidor)\profiles - Para gestionar los perfiles de usuario
    • \\(servidor)\(nombre de usuario) - Directorios personales
    • \\(servidor)\publico - Acceso público de solo-lectura
    • \\(servidor)\temporal - Acceso público de lectura-escritura con borrado diario automático
    • \\(servidor)\grupo1 - Recurso para el grupo 1
    • \\(servidor)\grupo2 - Recurso para el grupo 2
    • ...
  • Cada usuario tiene acceso de lectura a 'netlogon\scripts' para ejecutar el proceso de conexión (logon script) y de lectura y escritura en 'netlogon\profiles\(usuario)' para guardar su perfil. Ambos se usan de modo automático y no deberían usarse directamente por el usuario.
  • Cada usuario tiene acceso exclusivo a su directorio personal (residente en o /home/personal/(nombre de usuario))
  • Todos los usuarios tienen acceso de solo lectura al directorio "público"
  • El usuario 'admin' tiene acceso de escritura al directorio "público"
  • Todos los usuarios pueden leer y escribir en el directorio "temporal"
  • Cada noche se borra el contenido del directorio "temporal" de forma automática
  • Todos los usuarios tienen acceso a los recursos de grupo, si bien según sus permisos solo podrán leer y escribir en los directorios de los grupos a los que pertenezcan.
  • El script de conexión (netlogon/scripts/default.bat) sincroniza el reloj del cliente con el del servidor y conecta las siguientes unidades de red:
    • h: a \\(servidor)\(directorio personal)
    • p: a \\(servidor)\publico
    • t: a \\(servidor)\temporal
    • z: a \\(servidor)\grupo1
    • y: a \\(servidor)\grupo2
    • x: a \\(servidor)\grupo3
    • ...
  • Cada noche se copia el sistema y los directorios establecidos en '/copia'
  • Cada noche se copia el contenido de '/copia' en soporte DVD
 
Una vez realizada la planificación y disponiendo de lo necesario podemos comenzar...
 

 

Instalación del sistema base

A la hora de realizar este manual el hardware sobre el que se iba a realizar la instalación consistía en una placa base ASUS P5VD2-MX con una controladora VIA VT8237A SATA RAID y dos discos SATA de 160 GB iguales.
Ese chipset de RAID presentó dos problemas:
  • El núcleo utilizado en la instalación de CD netinstall de Debian Etch RC1 (2006-11-13) no lo soporta.
  • No es realmente un chip de RAID por hardware puro, sino lo que se conoce como un "fakeraid", por lo que se decidió implementar el RAID totalmente por software con las herramientas propias de GNU/Linux.

El primer problema nos llevó a instalar el sistema con un CD de Debian Etch de las publicaciones diarias, con kernel linux 2.6.18-3 que permite instalar sin problemas.
Para el segundo problema configuramos la BIOS del equipo para que los discos aparezcan como IDE, y luego el sistema los mapea como SCSI (/dev/sda y /dev/sdb).
Una vez hecho eso realizamos una instalación minima arrancando desde el CD (sin utilizar repositorios en red) instalando solo el sistema base.
 
Generamos las particiones antes mencionadas:
MontajeGBs
/ 30
/copia 30
swap 2.5
/home/personal 37.5
/home/trabajo 60

 

Configuración de RAID

Una vez instalado el sistema desde el CD, configuramos el RAID 1 siguiendo la estupenda guía de philcore. Indico a continuación los pasos dados. Por tanto lo que sigue es básicamente una traducción resumida.
 
Tenemos en /dev/sda nuestro sistema básico instalado y queremos utilizar /dev/sdb como disco espejo.
Instalamos las herramientas de RAID:
# aptitude install mdadm
 
Desmontamos todas las particiones excepto "/" y swap.
Utilizamos fdisk para cambiar los tipos de las particiones a "fd" (raid autodetect). No hay que cambiar la partición swap.
Veremos un error al escribir la nueva tabla por estar el sistema en uso, pero no pasa nada.
Verificamos # fdisk -l /dev/sda

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        3647    29294496   fd  Linux raid autodetect
/dev/sda2            3648        7294    29294527+  fd  Linux raid autodetect
/dev/sda3            7295        7622     2634660   82  Linux swap / Solaris
/dev/sda4            7623       19457    95064637+   5  Extended
/dev/sda5            7623       12292    37511743+  fd  Linux raid autodetect
/dev/sda6           12293       19457    57552831   fd  Linux raid autodetect
 
Usamos sfdisk para copiar la tabla de particiones en /dev/sdb:
# sfdisk -d /dev/sda | sfdisk /dev/sdb
 
Creamos los volúmenes RAID indicando que se componen de dos dispositivos. El primero está perdido (no queremos aún que utilice las particiones donde hemos instalado) y el segundo está en /dev/sdb:
# mdadm --create /dev/md0 --level 1 --raid-devices=2 missing /dev/sdb1
# mdadm --create /dev/md1 --level 1 --raid-devices=2 missing /dev/sdb2
# mdadm --create /dev/md2 --level 1 --raid-devices=2 missing /dev/sdb4
# mdadm --create /dev/md3 --level 1 --raid-devices=2 missing /dev/sdb5
 
Creamos sistemas de fichero en los volúmenes RAID:
# mkfs.ext3 /dev/md0
# mkfs.ext3 /dev/md1
# mkfs.ext3 /dev/md2
# mkfs.ext3 /dev/md3
 
Montamos el volumen que contendrá el sistema y copiamos la raiz:
# mount /dev/md0 /mnt
# cp -dpRx / /mnt
 
Montamos y copiamos el resto de volúmenes:
# mount /dev/md1 /mnt/copia
# cp -dpRx /copia /mnt/copia
# mount /dev/md2 /mnt/home
# cp -dpRx /home/personal /mnt/home/personal
# mount /dev/md3 /mnt/home/trabajo
# cp -dpRx /home/trabajo /mnt/home/trabajo
 
Editamos /etc/fstab:
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>	   <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/hda        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

/dev/md0       /               ext3    defaults,errors=remount-ro 0       1
/dev/md1       /copia          ext3    defaults        0       2
/dev/md2       /home/personal  ext3    nodev,nosuid,noexec,usrquota,grpquota 0       2
/dev/md3       /home/trabajo   ext3    nodev,nosuid,noexec,usrquota,grpquota 0       2

/dev/sda3       none            swap    sw,pri=1        0       0
/dev/sdb3       none            swap    sw,pri=1        0       0

Como se ve hemos preparado md2 y md3 para utilizar cuotas y se han configurado por seguridad para que en esos sistemas de ficheros no se utilicen dispositivos (nodev), ficheros con setuid (nosuid) ni ficheros ejecutables (noexec).
 
Editamos /boot/grub/menu.lst. Opcionalmente podemos activar framebuffer:
(...)
title           Debian GNU/Linux, kernel 2.6.18-3-686
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.18-3-686 root=/dev/md0 md=0,/dev/sda1,/dev/sdb1 ro vga=791
initrd          /boot/initrd.img-2.6.18-3-686
savedefault

title           Debian GNU/Linux, kernel 2.6.18-3-686 (RAID recovery disc-A)
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.18-3-686 root=/dev/md0 md=0,/dev/sda1 ro single
initrd          /boot/initrd.img-2.6.18-3-686
savedefault

title           Debian GNU/Linux, kernel 2.6.18-3-686 (RAID recovery disc-B)
root            (hd1,0)
kernel          /boot/vmlinuz-2.6.18-3-686 root=/dev/md0 md=0,/dev/sdb1 ro single
initrd          /boot/initrd.img-2.6.18-3-686
savedefault
(...)

 
Copiamos los ficheros editados al disco espejo:
# cp -dp /etc/fstab /mnt/etc/fstab
# cp -dp /boot/grub/menu.lst /mnt/boot/grub
 
Instalamos grub en el segundo disco, para que podamos arrancar si falla el primero:
# grub-install /dev/sda
# grub
grub> device (hd0) /dev/sdb
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
 
Y por fin reiniciamos el sistema para utilizar ya los volúmenes RAID y verificar que todo va bien.
# shutdown -r now
 
El sistema debería rearrancar correctamente. Algunas verificaciones que podemos hacer:
# mount
# df
# mdadm -QD /dev/md0
# mdadm -QD /dev/md1
# mdadm -QD /dev/md2
# mdadm -QD /dev/md3
# cat /proc/mdstat
 
Añadimos las particiones de /dev/sda (que no estamos usando) a los volúmenes RAID:
# mdadm --add /dev/md0 /dev/sda1
# mdadm --add /dev/md1 /dev/sda2
...
 
Cada vez que añadimos una partición a un volumen RAID debe sincronizarla. Si se intenta añadir una partición antes de que termine de sincronizar la anterior el sistema nos dará un aviso y encolará la tarea.
No reiniciar hasta que las particiones esten sincronizadas.
Podemos verlo en /proc/mdstat. Cuando indica [UU] es que está correcto.
# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sda5[0] sdb5[1]
      37511616 blocks [2/2] [UU]

md3 : active raid1 sda6[0] sdb6[1]
      57552704 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
      29294400 blocks [2/2] [UU]

md1 : active raid1 sda2[0] sdb2[1]
      29294400 blocks [2/2] [UU]

unused devices: <none>

Si se desea quitar una partición de un volumen:
# mdadm --fail /dev/md2 /dev/sda4
# mdadm --remove /dev/md2 /dev/sda4
No se pueden quitar todas las particiones de un volumen. Si lo que se desea es eliminar el volumen:
# mdadm --stop /dev/md2
Nada de esto afecta al estado de las partiones en sí mismas.
 

Configuración de la red

Configuramos la interfaz.
# vi /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp
### Interfaz EXTERNA
iface eth0 inet static
  address 280.280.280.280 # Aquí debe ir la IP del equipo
                          # Esta es una IP ficticia. De hecho no es una IP válida.
                          # Es la que usaremos como ejemplo en el documento
  netmask 255.255.255.0
  gateway 280.280.280.1   
  up route add default gw 280.280.280.1


auto eth0
 
Configuramos la resolucion DNS.
Tengo disponible una lista de servidores de DNS. Aquí pongo un par de servidores de Telefónica de ejemplo.
# vi /etc/resolv.conf
#Telefonica
nameserver 80.58.0.33
nameserver 80.58.32.97
 

Actualización del sistema

Configuramos los repositorios utilizando el mirror de Francia, ya que el de España sigue dando problemas de vez en cuando (y van un montón de años...)
# vi /etc/apt/sources.list
#
# deb cdrom:[Debian GNU/Linux testing _Etch_ - Official Snapshot i386 Binary-1 (20061111)]/ etch main

#deb cdrom:[Debian GNU/Linux testing _Etch_ - Official Snapshot i386 Binary-1 (20061111)]/ etch main

deb http://ftp.fr.debian.org/debian/ etch main
deb-src http://ftp.fr.debian.org/debian/ etch main

deb http://security.debian.org/ etch/updates main
deb-src http://security.debian.org/ etch/updates main
 
Si es necesario insertamos la clave del repositorio
# gpg --keyserver keyring.debian.org --recv-key 6070d3a1
# gpg --armor --export 6070d3a1 | apt-key add -
 
Actualizamos el sistema
# aptitude update
# aptitude upgrade
# aptitude dist-upgrade
 
Instalamos algunos paquetes utiles y/o necesarios
# aptitude install less vim lynx telnet tofrodos
# aptitude install openssh-server nmap iptables
... y el entorno grafico si lo deseamos
# aptitude install xserver-xorg xserver-common xfonts-base gnome
Otros paquetes opcionales
# aptitude install mozilla-firefox-locale-es-es gftp
# aptitude install openoffice.org2-l10n-es openoffice.org-core openoffice.org
 
Quitamos servicios innecesarios, por ejemplo:
# update-inetd --disable chargen
# update-inetd --disable ident
# update-inetd --disable discard
# /etc/init.d/cups stop
# update-rc.d -f cups remove
# update-rc.d -f gdm remove
# /etc/init.d/lpd stop
# update-rc.d -f lpd remove
# /etc/init.d/nfs-common stop
# update-rc.d -f nfs-common remove
# /etc/init.d/pcmcia stop
# update-rc.d -f pcmcia remove
# /etc/init.d/ppp stop
# update-rc.d -f ppp remove
# /etc/init.d/exim4 stop
# update-rc.d -f exim4 remove
# /etc/init.d/bittorrent stop
# update-rc.d -f bittorrent remove
# update-rc.d -f ntpdate remove
# update-inetd --disable time
# update-inetd --disable daytime
# update-inetd --disable echo
 

Instalación de sistema de cuotas

Instalamos el sistema de cuotas:
# aptitude install quota quotatool
 
Recordemos que debe indicarse en fstab las particiones donde se vayan a utilizar cuotas.
# grep quota /etc/fstab:
/dev/md2       /home/personal  ext3    nodev,nosuid,noexec,usrquota,grpquota 0       2
/dev/md3       /home/trabajo   ext3    nodev,nosuid,noexec,usrquota,grpquota 0       2
Otros comandos útiles son quotacheck (para crear/reparar/eliminar sistema de cuotas), setquota y repquota.  

Configuración del servidor ssh

Configuramos ssh para cambiar el puerto, reducir el tiempo de login, denegar conexiones de root, autorizar el acceso solo a ciertos usuarios y con fichero de clave privada, etc.
 

Otra configuración de seguridad

Permitimos accesos a la máquina desde la red local, excepto desde el equipo que tiene la conexión a internet:
# cat /etc/hosts.*
#/etc/hosts.allow

# Damos permiso a toda la red local
#+ excepto al router de internet
ALL: 280.280.280. EXCEPT 280.280.280.666


#/etc/hosts.deny

# Denegamos cualquier acceso no permitido explicitamente
#+ en hosts.allow
ALL: ALL

Generamos en blanco un par de ficheros peligrosos:
# ls -l /etc/hosts.equiv /etc/ssh/shosts.equiv
ls: /etc/hosts.equiv: No existe el fichero o el directorio
ls: /etc/ssh/shosts.equiv: No existe el fichero o el directorio

# touch /etc/hosts.equiv /etc/ssh/shosts.equiv
# chmod 000 /etc/hosts.equiv /etc/ssh/shosts.equiv

 

 

Configuración de Samba

Una gran parte de la información que viene a continuación ha sido extraída de la documentación de Samba.
 

Posibles problemas con los clientes

Los clientes deben tener instalado el servicio "Cliente de redes Microsoft".
 
Según indica Microsoft:
"Windows XP Home Edition no se puede unir a un dominio. Sólo se puede configurar como un miembro de un grupo de trabajo."
 
Para que una maquina con Windows XP Professional pueda acceder al dominio puede ser necesario cambiar la siguiente entrada del registro:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\parameters
Y poner "requiresignorseal" a 0.
Además en las políticas de seguridad del hay que tener deshabilitadas:
  • Miembro de dominio: Descifrar o firmar digitalmente datos de un canal seguro (siempre)
  • Miembro de dominio: Deshabilitar cambios de contraseña de cuentas de equipo.
  • Miembro de dominio: Requerir clave de sesión protegida (W2000 o más reciente).
 

Configuración del servidor

Una vez configurado el PDC en el servidor a través de Samba dispondremos de:
  • Identificación de usuarios
  • Gestión de perfiles de usuario
  • Ejecución de procesos de conexión (logon scripts)
El controlador primario de dominio es un servidor que "gobierna" un dominio de Windows. Lo que hace es centralizar la gestión de usuarios, identificandolos, gestionando sus perfiles y mandándoles procesos a realizar en la conexión.
La identificación de usuarios la realizaremos a través de tdbsam. Primero se crean los usuarios en Linux, luego se les en el fichero de samba ('smbadduser (usuario):(usuario)') y por último se les incluye en los grupos adecuados para acceder a sus directorios de trabajo. Los ususarios no pueden abrir sesión en el servidor Linux.
Para facilitar la gestión de usuarios utilizamos g-adduser, g-deluser y g-chgpwd.
Los perfiles residen en '/home/personal/netlogon/profiles/(usuario)' y se gestionan de forma automática cada vez que un usuario se identifica y siempre que la máquina esté incluida en el dominio del servidor.
Como ya se ha dicho, el proceso de conexión lanza en el cliente un script ('netlogon/scripts/default.bat') cada vez que un usuario se identifica y siempre que la máquina esté incluida en el dominio del servidor.
 
Instalamos un servidor DHCP
Si no hay ningún servidor de DHCP en la red instalamos uno:
# vi /etc/dhcpd.conf
option domain-name "Mi_Dominio";
option domain-name-servers Servidor.Mi_Dominio;
option subnet-mask 255.255.255.224;
default-lease-time 600;
max-lease-time 7200;

subnet 280.280.280.0 netmask 255.255.255.0 {
    range 280.280.280.100 280.280.280.250;
    option subnet-mask 255.255.255.0;
    option broadcast-address 280.280.280.255;
    option routers 280.280.280.1;
    option domain-name-servers 280.280.280.333;
}

Instalamos samba
# aptitude install samba dhcp samba-common
# vi /etc/samba/smb.conf
#
# smb.conf
#

# Definiciones globales
[global]
	# Identificacion del equipo
	netbios name = MI_SERVIDOR
	workgroup = MI_DOMINIO
	server string = Servidor %h (Samba %v)
	# Definición de dominio
	security = User
	os level = 64
	domain master = Yes
	local master = Yes
	preferred master = Yes
	domain logons = Yes
	wins support = Yes

	# Gestion de inicio de sesion
	logon script = scripts\default.bat
	logon path = \\%N\profiles\%U #logon path = \\%L\profiles\%U
	logon home = \\%N\%U #logon home = \\%L\%U
	logon drive = H:
	# Caracteristicas de claves
	encrypt passwords = Yes
	obey pam restrictions = Yes
	passdb backend = tdbsam
	# Gestion de claves
	unix password sync = yes
	passwd program = /usr/bin/passwd %u
	passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* .

	# Scripts de gestion de usuarios y equipos
	add user script = /usr/sbin/useradd -m %u
	delete user script = /usr/sbin/userdel -r %u
	add group script = /usr/sbin/groupadd %g
	delete group script = /usr/sbin/groupdel %g
	add user to group script = /usr/sbin/groupmod -A %u %g
	delete user from group script = /usr/sbin/groupmod -R %u %g
	add machine script = /usr/sbin/useradd -s /bin/false -d /var/lib/nobody %u
	# IDs de usuarios y equipos
	idmap uid = 15000-20000
	idmap gid = 15000-20000

	# Registro de sucesos
	log level = 2
	log file = /var/log/samba/log.%m
	max log size = 1000

	# Características extra
	time server = Yes
	socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
	hide dot files = Yes

# Compartimos los directorios personales
[homes]
	comment = Directorio personal
	path = /home/personal/%S
	valid users = %S
	read only = No
	create mask = 0664
	directory mask = 0775
	browseable = No

# Compartimos el recurso de inicio en red
[netlogon]
	comment = Network Logon Service
	path = /home/personal/netlogon
	read only = Yes
	write list = root
	browseable = No
	guest ok = Yes

# Recurso para los perfiles en red
[profiles]
	comment = Users profiles
	path = /home/personal/netlogon/profiles
	read only = No
	create mask = 0600
	directory mask = 0700
	browseable = No

# Recurso de acceso solo-lectura publico
[publico]
	comment = Directorio publico
	path = /home/trabajo/publico
	guest ok = Yes
	locking = No

# Recursos específicos para grupos
[grupo1]
	comment = Grupo1
	path = /home/trabajo/grupo1
	read only = No
	force create mode = 0660
	force directory mode = 0660

[grupo2]
	comment = Grupo2
	path = /home/trabajo/grupo2
	read only = No
	force create mode = 0660
	force directory mode = 0660


Creamos los grupos en el servidor:
# vi /etc/group
(...)
winusers:x:200:
winsystem:x:201:
winadmin:x:202:
grupo1:x:1001:
grupo2:x:1002:

 
Generamos grupos de dominio:
# net groupmap add ntgroup="Domain Admins" unixgroup=winadmin rid=512 type=d
# net groupmap add ntgroup="Domain Users" unixgroup=winusers rid=513 type=d
# net groupmap add ntgroup="Domain Guests" unixgroup=nobody rid=514 type=d
En caso de no existir el grupo nobody:
# addgroup winguests
# net groupmap add ntgroup="Domain Guests" unixgroup=winguests rid=514 type=d
 
Comprobamos los grupos del dominio:
# net groupmap list
Domain Users (S-1-5-21-768533834-2550023333-2928700493-1001) -> winusers
Domain Admins (S-1-5-21-768533834-2550023333-2928700493-1005) -> winadmin
Domain Guests (S-1-5-21-768533834-2550023333-2928700493-1006) -> winguests

Tomamos nota del identificador del servidor samba (768533834-2550023333-2928700493).
También se puede obtener mediante el comando:
# net getlocalsid
En caso de cambiar el nombre del servidor Samba se cambiará el SID, con lo que los clientes no podrán validarse.
Al cambiar el nombre del servidor habría que sacar a los clientes del dominio y volverlos a introducir.
Una mejor opción es volver a poner el mismo SID que tenía el servidor antes del cambio de nombre:
# net getlocalsid 'OLDNAME'
# net setlocalsid 'SID'
 
Garantizamos permisos a "Domain Admins":
# net rpc rights grant 'DOMAIN\Domain Admins' SeMachineAccountPrivilege -S server -U domadmin
# net rpc rights grant 'DOMAIN\Domain Admins' SePrintOperatorPrivilege -S server -U domadmin
# net rpc rights grant 'DOMAIN\Domain Admins' SeAddUsersPrivilege -S server -U domadmin
# net rpc rights grant 'DOMAIN\Domain Admins' SeRemoteShutdownPrivilege -S server -U domadmin
# net rpc rights grant 'DOMAIN\Domain Admins' SeDiskOperatorPrivilege -S server -U domadmin
# net rpc rights grant 'DOMAIN\Domain Admins' SeTakeOwnershipPrivilege -S server -U domadmin

Tabla de Privilegios, copiada de la documentación de Samba
PrivilegeDescription
SeMachineAccountPrivilegeAdd machines to domain
SePrintOperatorPrivilege Manage printers
SeAddUsersPrivilege Add users and groups to the domain
SeRemoteShutdownPrivilegeForce shutdown from a remote system
SeDiskOperatorPrivilege Manage disk share
SeTakeOwnershipPrivilege Take ownership of files or other objects
 
Para ver los permisos asignados utilizamos el comando:
# net rpc list
 
Las principales herramientas para gestionar el servidor son smbpasswd, net y pdbedit.
smbpasswd está en proceso de obsolescencia, en su lugar pdbedit permite gestionar y consultar usuarios, grupos y políticas de cuentas y accesos.
 

Definición de recursos

Creamos directorios y asignamos permisos
# cd /home/personal/
# mkdir netlogon
# chmod 770 netlogon/
# cd netlogon/
# mkdir profiles
# mkdir scripts
# chmod 770 profiles/
# chown winuser:winusers profiles/
# chmod 555 scripts/
# wget http://guimi.net/descarga/tec-docs/pdc/default.bat.txt
# ...
 
El directorio 'profiles' queda en el arbol 'personal' para que las cuotas controlen su espacio.
 
Para cumplir las políticas de acceso a los recursos, se ha dado a través de samba acceso a todos los usuarios (identificados). A través del sistema de permisos propio de Linux se ha hecho propietario de cada directorio a root y a un grupo creado al efecto. En cada directorio solo pueden leer y escribir 'root' y los usuarios que pertenezcan al grupo, siendo 'root' el único que puede modificar el directorio en sí.
Al acabar tendremos un árbol similar al siguiente:
Directorio        Permisos    Propietario
---------------------------------------------------
/home/
  |- personal	       755	root:root
    |- (usuarios)     2770	root:(usuario)
    |-netlogon         770	root:root
      |- profiles      770	root:winusers
        |- (usuarios)  700	root:root
      |- scripts       555	root:root
  |- trabajo	       755	root:root
    |- publico        2770      root:winusers
    |- temporal       2770      root:winusers
    |- grupo1         2770      root:grupo1
    |- grupo2         2770      root:grupo2

 
Herramientas para el usuario operador
generamos un usuario operador, llamado por ejemplo 'guimi', con permisos para realizar el mantenimiento de usuarios y grupos a través de unos scripts preparados.
# useradd guimi
 
Como operador, preparamos las herramientas de gestión:
guimi$ mkdir /home/guimi/bin
guimi$ cd /home/guimi/bin
guimi$ wget http://www.guimi.net/descarga/tec-docs/pdc/g-adduser
guimi$ wget http://www.guimi.net/descarga/tec-docs/pdc/g-chgpwd
guimi$ wget http://www.guimi.net/descarga/tec-docs/pdc/g-deluser
guimi$ wget http://www.guimi.net/descarga/tec-docs/pdc/g-noquota
guimi$ wget http://www.guimi.net/descarga/tec-docs/pdc/g-noquotagrp
guimi$ wget http://www.guimi.net/descarga/tec-docs/pdc/g-quota
guimi$ wget http://www.guimi.net/descarga/tec-docs/pdc/g-quotagrp
guimi$ wget http://www.guimi.net/descarga/tec-docs/pdc/g-repquota

Configuramos sudo para que funcionen adecuadamente.
Al hacerlo estamos dando permisos al usuario operador ('guimi') para gestionar usuarios, grupos y archivos. Es decir será un usuario con mucho poder. Sin embargo siempre es mejor usar un usuario operador que necesitar el usuario 'root' para ello.
# vi /etc/sudoers
#
# /etc/sudoers
#

Defaults env_reset

# Host alias specification

# User alias specification
User_Alias ADMINS=guimi

# Cmnd alias specification
Cmnd_Alias APT = /usr/bin/apt-get, /usr/bin/dpkg, /usr/bin/aptitude
Cmnd_Alias APAGADO = /sbin/shutdown, /sbin/halt, /sbin/reboot
Cmnd_Alias RED = /sbin/ifconfig
Cmnd_Alias USUARIOS_ALTA = /usr/sbin/groupadd, /usr/sbin/useradd
Cmnd_Alias USUARIOS_BAJA = /usr/sbin/groupdel, /usr/sbin/userdel
Cmnd_Alias USUARIOS_MOD = /usr/sbin/usermod
Cmnd_Alias USUARIOS_SAMBA = /usr/bin/smbpasswd
Cmnd_Alias GESTION_FICHEROS = /bin/mkdir, /bin/chown, /bin/chmod, /bin/rm
Cmnd_Alias GESTION_CUOTA = /usr/sbin/setquota, /usr/sbin/repquota

# User privilege specification
ADMINS ALL= NOPASSWD: APT
ADMINS ALL= NOPASSWD: APAGADO
ADMINS ALL= NOPASSWD: RED
ADMINS ALL= NOPASSWD: USUARIOS_ALTA
ADMINS ALL= NOPASSWD: USUARIOS_BAJA
ADMINS ALL= NOPASSWD: USUARIOS_MOD
ADMINS ALL= NOPASSWD: USUARIOS_SAMBA
ADMINS ALL= NOPASSWD: GESTION_FICHEROS
ADMINS ALL= NOPASSWD: GESTION_CUOTA

root ALL=(ALL) ALL


 
Creamos el resto de usuarios y les damos permisos
Utilizamos los scripts que hemos bajado:
guimi$ cd
guimi$ bin/g-adduser usuario1
guimi$ sudo usermod -G usuario1,winusers,grupo1,grupo3 usuario1
guimi$ ...
 

Comprobaciones

Empezamos con algunas comprobaciones básicas
# smbclient -L localhost
# smbclient -L localhost -U%
# smbclient -L localhost -U guimi
# smbclient -U guimi //Servidor/guimi
 
También podemos seguir "The samba checklist", que en resumen sería:
# testparm smb.conf
# ping Mi-servidor
# ping Un-cliente
# smbclient -L localhost
# smbclient -L localhost -U%
# smbclient -L localhost -U guimi -W MI_dominio
# smbclient -L Mi-servidor
# smbclient -L Mi-servidor -U%
# smbclient -L Mi-servidor -U guimi -W MI_dominio
# nmblookup -B Mi-servidor __SAMBA__
# nmblookup -B Un-cliente '*'
# nmblookup -d 2 '*'
# smbclient //Mi_servidor/Un_recurso
# nmblookup -M Mi_dominio

En un cliente Windows:
c:\> net view \\Mi-servidor
c:\> net use x: \\Mi_servidor\Un_recurso
 
 

 

Copia de seguridad

Configuramos el sistema para que realice cada noche una copia de la carpeta /home/trabajo.
Para ello utilizamos un par de scripts:
# cd /root/bin
# wget http://www.guimi.net/datos/tec-docs/scripts/g-copia_seg.sh
# wget http://www.guimi.net/datos/tec-docs/scripts/g-dvd.sh

Programamos el sistema:
# crontab -e
# m h  dom mon dow   command

## Cada noche borra 'temporal'
10 23 * * * rm -r /home/trabajo/temporal/* > /dev/null
## Cada noche hace una copia de seguridad
30 23 * * 0 /root/bin/g-copiaseg.sh 0
30 23 * * 1 /root/bin/g-copiaseg.sh 1
30 23 * * 2 /root/bin/g-copiaseg.sh 2
30 23 * * 3 /root/bin/g-copiaseg.sh 3
30 23 * * 4 /root/bin/g-copiaseg.sh 4
30 23 * * 5 /root/bin/g-copiaseg.sh 5
30 23 * * 6 /root/bin/g-copiaseg.sh 6

 
 

 

Documentación de proyecto

 

 

Postinstalación del sistema

Podemos realizar algunos ajustes de postinstalación del sistema que nos resulten interesantes.
 
Para contactar con nosotros escríbe a contacto_ARROBA_guimi.net
Esta página está optimizada para todos los navegadores ;)
Esta página ha sido realizada utilizando CMSXP Valid HTML 4.01!
Estadísticas