Solo necesito saber si estos permisos son correctos:
site --> 775
site/default -->775
site/default/files --> 775
site/default/setting.php --> 555
Solo necesito saber si estos permisos son correctos:
site --> 775
site/default -->775
site/default/files --> 775
site/default/setting.php --> 555
Respuestas:
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.
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.
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
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 ejecutarlo drush 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
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