> >     �Que tengo que configurar para que un usuario pueda poner su
> > p�gina web y que el apache lo ceda a internet?
>
> si tienes cargado el m�dulo user (creo que es as�), basta con que el
> usuario tenga la carpeta public_html en el directorio raiz y con
> permisos 755 tanto su home como el public_html. M�s gr�fico:
>
> ls -l /home
> drwxr-xr-x   33 paco    usuarios     4096 nov 20 14:23 paco
>
> ls -l /home/paco
> drwxr-xr-x    9 paco    usuarios     4096 nov 14 19:09 public_html
>
>       Pues s� que funciona y muy bien por cierto, pero esto genera un
> problema de seguridad, ya que cualquier usuario que tenga acceso al
> sistema puede ver las capetas personales de los dem�s usuarios.
>
>       As� como por ejemplo, yo soy usuario del servidor y quiero tener
> una p�gina web, pero eso implica que el resto de los usuarios pueden
> acceder a los archivos que guardo.

Simple.

Apache corre como el usuario www-data. Como puedes ver, el usuario
www-data pertenece al grupo www-data:

$ grep www /etc/passwd
www-data:x:33:33:www-data:/var/www:/bin/sh
$ grep 33 /etc/group
www-data:x:33:

----------------
Con esta informaci�n en mente, pasemos un poquito a hablar de los permisos
de tu directorio. Qu� significan los permisos de lectura (r, valor octal
4) y ejecuci�n (x, valor octal 1) en un directorio? El de lectura
significa que puedo pedir el listado de archivos. El de ejecuci�n
significa que puedo entrar al directorio en cuesti�n, y trabajar en �l
siempre que sepa el nombre del archivo que busco. Te pongo un ejemplo:

Primero que nada, creo un directorio y le pongo un archivo dentro:

/tmp$ mkdir prueba
/tmp$ cat > prueba/prueba.txt
Esta es una prueba.
/tmp$ ls -la prueba
total 12
drwxr-xr-x    2 gwolf    gwolf        4096 Nov 21 09:56 .
drwxrwxrwt    6 root     root         4096 Nov 21 09:55 ..
-rw-r--r--    1 gwolf    gwolf          20 Nov 21 09:56 prueba.txt

Ahora, lo pongo en un modo restrictivo, permiti�ndome s�lo la ejecuci�n
del directorio:

/tmp$ chmod 100 prueba/
/tmp$ ls -la prueba
ls: prueba: Permission denied
/tmp$ cat prueba/prueba.txt
Esta es una prueba.

Como puedes ver, ejecutar el directorio no me permite ver el listado de
archivos, pero s� usarlos. Ahora, veamos si doy �nicamente lectura:

/tmp$ chmod 400 prueba/
/tmp$ ls -la prueba
ls: prueba/.: Permission denied
ls: prueba/..: Permission denied
ls: prueba/prueba.txt: Permission denied
total 0
/tmp$ cat prueba/prueba.txt
cat: prueba/prueba.txt: Permission denied

Suena curioso, verdad? Pues no, es bastante l�gico: Pude ver el contenido
del directorio, pero no pude tocar nada de lo que est� dentro - El comando
ls hace un 'stat' a cada archivo para ver su modo, tama�o, fecha de
modificaci�n y dem�s atributos. Con estos mismos permisos, puedo emular un
ls b�sico perfectamente (meto un poco de mano para que maneje los
archivos iniciados en '.':

/tmp$ for arch in prueba/.* prueba/*; do echo $arch; done
prueba/.
prueba/..
prueba/prueba.txt

----------------
Ahora, apliquemos esto a tu directorio: Quieres que ning�n usuario pueda
entrar a tu directorio, y que el usuario www-data pueda entrar hasta tu
public_html. Para ello, yo te sugiero:

~$ su
Password:
/home/gwolf# ls -ld .
drwxr-xr-x   35 gwolf    gwolf        4096 Nov 21 08:53 .
/home/gwolf# chgrp www-data .
/home/gwolf# chmod 710 .
/home/gwolf# ls -ld .
drwx--x---   35 gwolf    www-data     4096 Nov 21 08:53 .
/home/gwolf# ls -ld public_html/
drwxr-xr-x    7 gwolf    gwolf        4096 Nov 21 09:11 public_html/


De este modo:
1. Ning�n usuario que no pertenezca a www-data (o no seas t�) puede hacer
   nada en tu home
2. Los miembros del grupo www-data pueden ejecutar tu home, pero no
   listarlo.
3. Todo quien tenga derecho de llegar a tu public_html tiene acceso de
   lectura y ejecuci�n

Claro, podr�as ac� tambi�n limitar a tu public_html a www-data �nicamente.
Podr�as usar varios esquemas diferentes, se me ocurrieron ya varios, pero
es hora de que siga trabajando ;-)

Saludos,

-- 
Gunnar Wolf - [EMAIL PROTECTED] - (+52-55)5623-1118
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973  F800 D80E F35A 8BB5 27AF

Responder a