Los mejores permisos / propiedad para la raíz del documento apache

14

Necesito ayuda para configurar los permisos correctos o la propiedad de la raíz del documento apache. Esto es lo que necesito:

  • diferentes sitios web almacenados en /var/www/html/<site>
  • dos usuarios deben actualizar / administrar los sitios web a través de ssh
  • la propiedad debe ser diferente del usuario de apache (por seguridad)

¿Cómo puedo hacer esto? Por el momento, todos los archivos son de escritura mundial, lo que no es bueno. El servidor ejecuta CentOS 5.5

Gracias

Marco
fuente
Para obtener una respuesta más detallada con otras opciones para asegurar un docroot, consulte serverfault.com/questions/357108/…
Quinn Comendant el
Creo que es mejor almacenar cada sitio web en una ubicación separada (no coloque ambos en DocumentRoot, use 2 hosts virtuales), entonces cada usuario de sysadmin posee solo su propio sitio web y establece el propietario del grupo de ambos directorios de sitios web como el grupo Apache
el contador

Respuestas:

22

Crea un nuevo grupo

groupadd webadmin

Agrega tus usuarios al grupo

usermod -a -G webadmin user1
usermod -a -G webadmin user2

Cambiar la propiedad del directorio de sitios

chown root:webadmin /var/www/html/

Cambiar los permisos del directorio de sitios

chmod 2775 /var/www/html/ -R

Ahora cualquiera puede leer los archivos (incluido el usuario de apache) pero solo root y webadmin pueden modificar sus contenidos.

Andy
fuente
Eso se ve bien. Pero, ¿qué sucede si un usuario crea nuevos archivos o copia archivos actualizados? ¿Se aplican esos permisos automáticamente? ¿O necesita chown y chmod cada vez?
Marco
Los archivos copiados mantienen permisos / propiedad. El umaskcomando maneja los permisos de archivo predeterminados para los archivos nuevos . Más información aquí osr507doc.sco.com/en/OSUserG/_default_perms_new_file.html
Andy
3
podría hacer que el dir setgid webadmin lo ayude con los nuevos archivos
covener
1
^ +1. La forma rápida sería: >> chmod 2775 -R / var / www / html /
James Broadhead
@James ta, actualizado
Andy
2

Prefiero montar la partición con -o acl. Esto le permite usar el comando setfacl para otorgar permisos definidos en archivos y carpetas, en lugar de solo especificar permisos de grupo de usuarios y otros.

Por lo tanto, coloque acl en su línea de partición en / etc / fstab, o vuelva a montar con mount -o remount, acl / mnt / xy, y luego otorgue la propiedad de su directorio web a nadie: nadie. Chmod a 770, y use setfacl para otorgar permisos de escritura solo en las carpetas que lo necesitan, por ejemplo. otorgue permisos de escritura a www-data (o al usuario con el que se ejecuta su servidor web) para la carpeta de carga, y otorgue permisos de escritura a su propio usuario para todo el directorio.

mkdir dir
chown nobody:nobody dir
setfacl -m u:www-data:r-x,d:u:www-data:r-x dir
setfacl -m u:www-data:rwx,d:u:www-data:rwx dir/upload
setfacl -m u:youruser:rwx,d:u:youruser:rwx dir

Ahora nadie puede leer sus archivos, aparte de su servidor web y su propio usuario. Puede escribir en todos los archivos de la carpeta, y el servidor web solo puede escribir en la carpeta de carga.

K. Norbert
fuente