Instalar un servidor - XII
Añadiendo usuarios al sistema
La idea de añadir usuarios al sistema, tiene como finalidad que los usuarios:
– dispongan de espacio web para publicar sus páginas
– tengan acceso vía ftp para subir los ficheros de sus web’s personales
– dispongan de una cuenta de correo en nuestro dominio (por ejemplo: usuario@lubrin.org)
– no tengan acceso al shell del sistema, de forma que no puedan acceder directamente ni remotamente a la línea de comandos
También sería conveniente establecer cuotas de espacio en disco para los usuarios, tanto para el correo como para el espacio dedicado a web personal. Una manera fácil de establecer cuotas de disco para el espacio web es mediante el servidor de ftp (el inconveniente es que sería la misma cuota para todos los usuarios). Si queremos cuotas individualizadas, tendremos que valernos de aquote
Puesto que se trata de una red casera con pocos y fiables usuarios, la autentificación la haremos con /etc/passwd, es decir, como usuarios del sistema. Cada usuario dispondrá de su login y password que les servirá tanto para su cuenta de correo como para su espacio web.
De todas formas, en el apartado Seguridad de este manual, aconsejaré como método más seguro la autentificación mediante LDAP.
Respecto a las contraseñas, se habilitará un plugin para el correo-web de forma que los usuarios puedan cambiar sus contraseñas cuando lo consideren conveniente.
Añadiendo usuarios
Básicamente el añadir un usuario al sistema consta de varios pasos (aunque se puede automatizar creando un script, dando contenido a /etc/skel, modificando el adduser.conf, etc.)
Nótese que existen dos órdenes: useradd y adduser que no son lo mismo (lo mejor es practicar ambas para aprender sus diferencias).
# useradd -m -s /bin/false pepico
# passwd pepico
# mkdir /home/pepico/public_html
# chown pepico:users -R /home/pepicoHemos añadido al usuario pepico, creando su carpeta /home/pepico (-m) y dejándolo sin shell (-s /bin/false)
En la segunda línea le asignamos una contraseña
Le creamos la carpeta public_html (en caso de que queramos darle espacio web). No es necesario crearle la carpeta /home/pepico/mail puesto que la configuración de nuestros programas de correo lo harán automáticamente.
Em la última línea ponemos como dueño a pepico de su carpeta personal (/home/pepico) y todo lo que incluya (-R)
Permitiendo web’s personales a los usuarios
Debemos modificar la configuración de apache para que permita que los usuarios tengan web’s personales. Se accederá a esas web personales mediante:
http://www.midominio.xxx/~usuario
También necesitaremos un pequeño scrip para quitar el carácter '~', de forma que se pueda acceder mediante:
http://www.midominio.xxx/usuario (ejemplo: http://www.lubrin.org/dani)
Para ello debemos activar en primer lugar el módulo de apache userdir
Los módulos activos de apache están en la carpeta /etc/apache2/mods-enabled/
Por tanto podemos saber si el módulo userdir está activado tecleando:
$ ls /etc/apache2/mods-enabled/
cgi.load userdir.conf userdir.loadObservamos que tenemos activo el módulo userdir
el módulo userdir posibilita que los usuarios tengan sus webs personales
Si no queremos que tengan web personal, desactivamos el módulo:
# a2dismod userdir[apache2 disable modulo userdir]
Si nos arrepentimos, para activarlo:
# a2enmod userdirLas webs personales tienen que incluirlas en su directorio:
/home/usuario/public_html/
Se puede cambiar la carpeta por defecto: public_html por otra. Para ello se lo decimos a apache en su fichero /etc/apache2/apache2.conf mediante la línea:
UserDir public_htmlque cambiaremos por:
UserDir otra_carpetaSi cambiamos los ficheros de configuración debemos reiniciar apache:
# /etc/init.d/apache2 restart La carpeta public_html hay que crearla para cada usuario.
Además hay que asegurarse que apache tiene permiso para entrar en esas carpetas.
(descomentado el #UserDir public_html)
Supongamos que ya hemos dado de alta al usuario pepe
Ahora pepe no tendría más que poner sus web's en su carpeta /home/pepe/public_html
y para verlas desde Internet:
http://dominio/~pepe
Cuando 'pepe' entre por FTP (con su login y password) verá que ya hay creada una carpeta en su esepacio (public_html) y debe saber que lo que quiera publicar tiene que estar dentro de esa carpeta.
Pues ahora pepe está contento, ha creado su web personal y le ha dado la url a sus amigos/as para que vean su web, pero resulta que algunos le dicen que no saben poner el "~", que no está en sus teclados [ese carácter especial se pone con la combinación de teclas AltGr+4].
Quitando el "gusanillo":"~"
Pondremos un script en perl en el fichero /etc/apache2/httpd.conf [fichero que, en Debian, normalmente estará vacío] de forma que los usuarios puedan acceder a sus web’s mediante:
http://dominio/usuario
<perl>
opendir H, '/home/';
my @dir = readdir(H);
closedir H;
foreach my $u (@dir) {
next if $u =~ m/^\./;
if (-e "/home/$u/public_html"){
push @Alias, ["/$u", "/home/$u/public_html/"];
}
}
</perl>Además, para que funcione, debemos instalar el módulo de perl y reiniciar apache:
# apt-get install libapache2-mod-perl2
# /etc/init.d/apache2 restart
lubrin.org
Software libre y Matemáticas