En éste caso, lo que se hace es permitir al apache "entrar" al directorio personal /home/juanita para que tenga acceso al public_html, pero sin permitirle ver los archivos, y usar un grupo dedicado para los directorios visibles al servidor web; como sigue (ls simulado):
/etc/groups: users... juanita,pedrito... web...apache rwx--x--x 711 juanita users /home/juanita rwx--x--x 711 pedrito users /home/pedrito rwxr-s--- 2750 juanita web /home/juanita/public_html rwxr-s--- 2750 pedrito web /home/pedrito/public_html x para directorios significa: tiene acceso al nivel bajo el directorio; por lo tanto el 711 permite a todos acceso a /home/zzz, pero a no leer su contenido. Una vez que el apache puede llegar a /home/zzz/public_html, le damos permiso a su grupo (web) para que no sólo entre, sino que lea (el 5 en grupos es r-x), pero a nadie más (0 al final). Nótese que juanita no puede ver ni los archivos de pedrito ni tampoco los archivos bajo su cuate /home/pedrito/public_html; sólo puede verlos a través de su sitio http://server.mx/~pedrito... Truco especial: el 2 en el permiso, que el ls muestra con una letra 's', permite que todos los archivos y directorios nuevos creados bajo public_html reciban automáticamente el grupo web. Para aplicar éstos permisos para usuarios existentes se puede usar (un script "cambia" con $1 en lugar de juanita, etc... y luego "./cambia juanita", "./cambia pedrito", etc.): #-- permisos base chown +R juanita:users /home/juanita find /home/juanita -type d chmod 700 "{}" \; find /home/juanita -type f chmod 600 "{}" \; chmod 711 /home/juanita #-- permisos para web chown -R juanita:web /home/juanita/public_html find /home/juanita/public_html -type d chmod 2750 "{}" \; find /home/juanita/public_html -type f chmod 640 "{}" \; Para evitar tenerlo que hacer con los nuevos usuarios, se configura el directorio ejemplo /etc/skel tal y como lo queremos, y los nuevos usuarios reciben su copia inicial a partir de él: mkdir -p /etc/skel/public_html echo "Sitio pendiente" > /etc/skel/index.html chmod 711 /etc/skel chmod 2750 /etc/skel/public_html chown -R root:web /etc/skel/public_html Luego crear los usuarios con: useradd -b /home -g users -m -k /etc/skel -s /sbin/nologin -c "Luisito Perez" luisito (man useradd) Quiero suponer que las interfaces gráficas de creación de usuarios respetan /etc/skel, etc... Todo sea para darles a nuestros queridos usuarios su página, pos ya que... Saludos, Fjor 2011/10/6 Miguel Cardenas <warlock...@yahoo.com>: > Holas > > Pues ya pude resolver lo del DNS, ahora tengo otra situacion, en realidad no > es un problema operativo sino de seguridad... > > Me avente la creacion de VirtualHosts a mano y ya quedo, el "problema" es que > los accesos web a los diferentes sitios hospedados me regresan "You don't > have permission to view / Directory" o algo asi... Revisando el <VirtualHost> > todo era correcto y de repente me fije en esta directiva > > > DocumentRoot /home/usuario/public_html > y cai en que la cuestion era el permiso de acceso al directorio public_html, > asi que le di permiso 755 pero no fue suficiente, resulta que a "usuario" > tambien le tuve que poner 755 lo cual NO ME GUSTA NADA pero bueno ahorita la > urgencia era que funcionara nuevamente... > > Necesito volver a dejar los accesos en 700 (rwx------) pero que puedo hacer > para garantizar que el servidor apache tenga acceso a > /home/usuario/public_html sin tener que poner permisos rwxr--r-- ? > > Los usuarios los he generado manualmente y no seran mas de 4 o 5 asi que > puedo arreglar a mano los public_html y directorios para subdominios, pero no > se cual sea la mejor solucion. > > Por ahora como segunda aproximacion a la solucion se me ocurrio utilizar los > grupos de usuario para permitir el acceso. En este momento solo he creado 2 > usuarios con su propio GID y UID, lo que se me ocurre primero es cambiarle el > grupo a los usuarios por uno *GENERAL* para todos, hay un grupo ya existente > "users", acabo de cambiar el grupo a todos mis usuarios a "users" y agregue > el usuario apache al grupo "users", el detalle es que aun tengo que usar > permiso en directorio home y public 750 (rwxr-x---) > > Digamos que mis usuarios quedaron asi en /etc/passwd > > apache:x:48:48:Apache:/var/www:/sbin/nologin > fulano:x:1000:100::/home/fulano:/sbin/nologin > mengano:x:1001:100::/home/mengano:/sbin/nologin > perengano:x:1002:100::/home/perengano:/sbin/nologin > > y mis grupos quedaron asi > > users:x:100:apache > > Los permisos de directorio los puse asi > > /home/usuario* 700 > /home/usuario*/public_html 700 > > Y ya se encuentra funcionando el primer sitio que he subido... Aunque me > gustaria saber si hay alguna otra alternativa para permitir el acceso a > Apache a estos directorios sin tener que poner manualmente permiso para cada > usuario o subdominio que agrego... igual no seran muchos pero me interesa mas > por saber como se hace... > > Saludos y gracias! -- Caminar y caminar por la vereda del saber... ... de vez en cuando, mirar una estrella. Francisco de Jesús Orozco Ruiz Administración de Redes e Internet Centro de Enseñanza Técnica Industrial - GDL