Permiso correcto para el sitio, por defecto y carpetas de archivos?

10

Solo necesito saber si estos permisos son correctos:

site --> 775
site/default -->775
site/default/files --> 775
site/default/setting.php --> 555
chefnelone
fuente
55
Esta pregunta no se puede responder sin saber cuál es el usuario predeterminado: grupo está en los archivos y qué usuario y grupos ejecuta su servidor web. Debe cerrarse como "no está claro lo que está preguntando". Alternativamente, como un duplicado de: drupal.stackexchange.com/questions/373/…
Radical gratuito

Respuestas:

13

En realidad, los permisos deberían ser

sites -> 755
sites/default -> 755
sites/default/files -> 775
sites/default/settings.php -> 444

Ver los 3 mejores respuestas a esta pregunta para algunos grandes detalles.

keithm
fuente
3
Si bien votado y aceptado, esta no es una buena respuesta. La pregunta está incompleta y no hay forma de saber si esta respuesta es correcta para la configuración de OP (o para cualquier otra persona). Lo único bueno es el enlace.
Radical libre
Sin mencionar que el directorio es sitios, no sitio. : D
Ryan Szrama
5

Del manual oficial de Drupal :

Copie esto en un archivo y nómbrelo como "fix-permissions.sh"

#!/bin/bash
if [ $(id -u) != 0 ]; then
        printf "This script must be run as root.\n"
        exit 1
fi
drupal_path=${1%/}
drupal_user=${2}
httpd_group="${3:-www-data}"
# Help menu
print_help() {
cat <<-HELP
This script is used to fix permissions of a Drupal installation
you need to provide the following arguments:
1) Path to your Drupal installation.
2) Username of the user that you want to give files/directories ownership.
3) HTTPD group name (defaults to www-data for Apache).
Usage: (sudo) bash ${0##*/} --drupal_path=PATH --drupal_user=USER --httpd_group=GROUP
Example: (sudo) bash ${0##*/} --drupal_path=/usr/local/apache2/htdocs --drupal_user=john --httpd_group=www-data
HELP
exit 0
}
# Parse Command Line Arguments
while [ $# -gt 0 ]; do
        case "$1" in
                --drupal_path=*)
drupal_path="${1#*=}"
;;
--drupal_user=*)
drupal_user="${1#*=}"
;;
--httpd_group=*)
httpd_group="${1#*=}"
;;
--help) print_help;;
*)
printf "Invalid argument, run --help for valid arguments.\n";
exit 1
esac
shift
done
if [ -z "${drupal_path}" ] || [ ! -d "${drupal_path}/sites" ] || [ ! -f "${drupal_path}/core/modules/system/system.module" ] && [ ! -f "${drupal_path}/modules/system/system.module" ]; then
printf "Please provide a valid Drupal path.\n"
print_help
exit 1
fi
if [ -z "${drupal_user}" ] || [ $(id -un ${drupal_user} 2> /dev/null) != "${drupal_user}" ]; then
printf "Please provide a valid user.\n"
print_help
exit 1
fi
cd $drupal_path
printf "Changing ownership of all contents of "${drupal_path}":\n user => "${drupal_user}" \t group => "${httpd_group}"\n"
chown -R ${drupal_user}:${httpd_group} .
printf "Changing permissions of all directories inside "${drupal_path}" to "rwxr-x---"...\n"
find . -type d -exec chmod u=rwx,g=rx,o= '{}' \;
printf "Changing permissions of all files inside "${drupal_path}" to "rw-r-----"...\n"
find . -type f -exec chmod u=rw,g=r,o= '{}' \;
printf "Changing permissions of "files" directories in "${drupal_path}/sites" to "rwxrwx---"...\n"
cd sites
find . -type d -name files -exec chmod ug=rwx,o= '{}' \;
printf "Changing permissions of all files inside all "files" directories in "${drupal_path}/sites" to "rw-rw----"...\n"
printf "Changing permissions of all directories inside all "files" directories in "${drupal_path}/sites" to "rwxrwx---"...\n"
for x in ./*/files; do
find ${x} -type d -exec chmod ug=rwx,o= '{}' \;
find ${x} -type f -exec chmod ug=rw,o= '{}' \;
done
echo "Done settings proper permissions on files and directories"

Ahora ejecute este script como: sudo bash fix-permissions.sh --drupal_path = your / drupal / path --drupal_user = your_user_name

¡Viola! Sus permisos se corrigen automáticamente.

Codificador inspirado
fuente
Asegúrate de leer toda la publicación y los comentarios.
mpdonadio
Y pegar este archivo donde? ¿En que directorio?
Bruno Vincent
3

Así es como decidí establecer permisos para mi instancia de Drupal:

mkdir sites/default/files
chgrp -Rv apache sites/default/files
chmod 2775 sites/default/files

Hacemos esto usando 2775 en nuestro comando chmod. El 2 significa que la identificación del grupo se conservará para cualquier archivo nuevo creado en este directorio. Lo que eso significa es que Apache siempre será el grupo en cualquier archivo, asegurando así que el servidor web y el usuario siempre tendrán permisos de escritura para cualquier archivo nuevo que se coloque en este directorio. Los primeros 7 significan que el propietario (ejemplo) puede R (Leer) W (Escribir) y X (Ejecutar) cualquier archivo aquí. El segundo 7 significa que el grupo (www-data) también puede RW y X cualquier archivo en este directorio. Finalmente, el 5 significa que otros usuarios pueden archivos R y X, pero no escribir.

Otro punto es establecer los permisos correctos para su settings.php

chmod 444 sites/default/settings.php

Otros permisos deben ser predeterminados.

Guía completa de instalación de Drupal: http://itvictories.com/node/21

Aleks
fuente
2

La respuesta seleccionada no es del todo correcta, especialmente cuando hay pocas incógnitas allí, sin embargo, Aleks lo explicó ampliamente, y es un enfoque muy similar el que adopto en los sitios de Drupal.

Además, pensé que también compartiría mi script aquí, pero como Módulo Drupal, que he creado hace algún tiempo. Puede colocarlo en el ~/.drushsubdirectorio y simplemente ejecutarlo drush file-permissionsmientras se encuentre en cualquier subdirectorio del sitio de Drupal.

Se Bootstraps su sitio Drupal, comprueba si hay file_private_path, file_public_pathy los pone para corregir usuario y el grupo Apache. El usuario / grupo de Apache se determina automáticamente, por lo que no depende de que el usuario los especifique manualmente o los codifique en un archivo de script.

Página del módulo: https://www.drupal.org/project/file_permissions

Turek
fuente
Sería genial portar el módulo a Drupal 8
Benedikt
El módulo no cambia el permiso para la carpeta tmp. ¿Es eso intencional? En mi configuración, tmp se establece en site / default / tmp y no se aplica ningún cambio de permiso a ese directorio.
kiranking
0

Como los otros chicos mencionaron, el permiso correcto es

Todos los directorios -> 755
Todos los archivos -> 755
sitios / predeterminado -> 755 (esta regla de anulación de este directorio)
sitios / predeterminado / archivos -> 775 (esta regla de anulación de este directorio y sus contenidos)
sitios / predeterminado / configuración. php -> 444 (esta regla de anulación para este archivo)

Los comandos apropiados para lograr las reglas mencionadas se encuentran a continuación, en la raíz de su sitio web de Drupal

find . -type f | xargs chmod 644
find . -type d | xargs chmod 755
chmod 444 sites/default/settings.php
chmod 775 -R sites/default/files
Yusef
fuente