Problemas de permisos FTP y Apache

10

Tengo problemas con respecto a qué usuario debería ser propietario de mi directorio www: ftp o apache. Cuando se configura para el usuario ftp, el usuario puede agregar, eliminar y modificar archivos fácilmente, pero las acciones del sistema de archivos php generan errores de permiso denegado (por supuesto, porque requieren que el usuario sea apache). Sin embargo, si el directorio www se conoce como apache, el ftpuser no podrá realizar algunas acciones, como la modificación y eliminación de archivos. ¿Alguna vez ha encontrado un problema similar? ¿Cuál es la solución? Gracias

rayo
fuente

Respuestas:

12

Para eso están los grupos.

Puede agregar el ftpusuario al apachegrupo y viceversa. O, mejor aún, podría agregarlos a un tercer grupo que cree específicamente para este propósito.

p.ej

# groupadd mygroup
# useradd -G mygroup ftp
# useradd -G mygroup apache
# chown -R: mygroup / var / www
# chmod -R g + rw / var / www

Esos comandos hacen lo siguiente:

  1. Crea un nuevo grupo 'mygroup'
  2. Agrega usuario ftp a mygroup
  3. Agrega un usuario de apache a mygroup
  4. Otorga recursivamente la propiedad del grupo a los contenidos de / var / www / a mygroup
  5. Otorga recursivamente permisos de lectura y escritura grupales a los contenidos de / var / www /

Solo necesita asegurarse de que los archivos agregados en el futuro pertenezcan al grupo 'mygroup' y tengan los permisos apropiados para que apache y ftp los lean / escriban.

hobodave
fuente
3
La combinación de " find /var/www -type d -print0 | xargs -0 chmod g+s /var/www" con una umask de 002 asegurará que los nuevos archivos y directorios en / var / www hereden el grupo apropiado y los permisos para que el grupo tenga acceso r / w. Muchas distribuciones de Linux ahora tienen por defecto una umask de 002 (las mismas que por defecto crean un nuevo grupo para cada nuevo usuario)
Freiheit
¡Esta respuesta funciona perfectamente! Pero tengo un problema en el que el usuario aún puede ver todos los demás directorios fuera de var/www¿hay algún método para restringir esto?
maxisme
3
Las líneas 2 y 3 no funcionarán si los usuarios ya existen (en CentOS 7). En este caso, usermodpor ejemplo, useusermod -G mygroup ftp
nick
¡Simple, autoexplicativo, comprensible! ¡Perfecto! Gracias, @hobodave!
GTodorov
4

La mayor parte de su contenido debe ser propiedad de un usuario que no sea apache. Suponiendo que use FTP para actualizar su contenido, puede configurar que todos los archivos sean propiedad de ftp: apache. Sugeriría usar SCP para SFTP en lugar de ftp. Los archivos deben tener permisos 644 o 640 y permisos de directorios 755 o 750.

Para archivos y directorios, la aplicación necesita escribir para agregar acceso de escritura grupal.

BillThor
fuente
0

Tuve un problema similar con una página php construida que copiaría una carpeta en el servidor con un nombre diferente. Lo arreglé apagando el modo seguro de php.

karl
fuente
2
El modo seguro de PHP está ahí por una razón. Apagarlo no es una buena idea en absoluto.
user9517