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/…
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
Copie esto en un archivo y nómbrelo como "fix-permissions.sh"
#!/bin/bashif[ $(id -u)!=0];then
printf "This script must be run as root.\n"exit1fi
drupal_path=${1%/}
drupal_user=${2}
httpd_group="${3:-www-data}"# Help menu
print_help(){
cat <<-HELPThis script is used to fix permissions of a Drupal installation
you need to provide the following arguments:1)Path to your Drupal installation.2)Usernameof the user that you want to give files/directories ownership.3) HTTPD group name (defaults to www-data forApache).Usage:(sudo) bash ${0##*/} --drupal_path=PATH --drupal_user=USER --httpd_group=GROUPExample:(sudo) bash ${0##*/} --drupal_path=/usr/local/apache2/htdocs --drupal_user=john --httpd_group=www-data
HELPexit0}# Parse Command Line Argumentswhile[ $# -gt 0 ]; docase"$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";exit1esac
shiftdoneif[-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_helpexit1fiif[-z "${drupal_user}"]||[ $(id -un ${drupal_user}2>/dev/null)!="${drupal_user}"];then
printf "Please provide a valid user.\n"
print_helpexit1fi
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
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
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.
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
Respuestas:
En realidad, los permisos deberían ser
Ver los 3 mejores respuestas a esta pregunta para algunos grandes detalles.
fuente
Del manual oficial de Drupal :
Copie esto en un archivo y nómbrelo como "fix-permissions.sh"
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.
fuente
Así es como decidí establecer permisos para mi instancia de Drupal:
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
Otros permisos deben ser predeterminados.
Guía completa de instalación de Drupal: http://itvictories.com/node/21
fuente
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
~/.drush
subdirectorio y simplemente ejecutarlodrush file-permissions
mientras se encuentre en cualquier subdirectorio del sitio de Drupal.Se Bootstraps su sitio Drupal, comprueba si hay
file_private_path
,file_public_path
y 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
fuente
Como los otros chicos mencionaron, el permiso correcto es
Los comandos apropiados para lograr las reglas mencionadas se encuentran a continuación, en la raíz de su sitio web de Drupal
fuente