Sé que los permisos de archivos se han cubierto aquí antes, pero estoy luchando por entender el concepto de mi escenario.
- Creé los archivos en una antigua instalación de ubuntu.
- Copié los archivos en mi nueva instalación de ubuntu y los puse en mi raíz web.
- Cuando intento ejecutar los archivos (son archivos PHP) me sale un error relacionado con los permisos
En un intento por solucionar esto, supuse que aún deben ser propiedad del propietario anterior, así que ejecuté chown -R
el directorio, con mi nombre de usuario como argumento, para tomar posesión de todos los archivos del directorio. Cabe señalar que los nombres de usuario entre las instalaciones de ubuntu nuevas y antiguas eran las mismas.
Cuando intento ejecutar los archivos nuevamente, el mismo problema: error 500 debido a problemas de permisos. ¿Alguien puede decirme qué otros pasos debo tomar?
El webroot para mi instalación de apache está dentro de mi carpeta de inicio. Si creo nuevos archivos en mi raíz web, también funcionan como se esperaba, son solo los archivos antiguos los que causan el problema.
fuente
chmod -R 777 dir
en el directorio en cuestión. Sin embargoRespuestas:
Los directorios sobre su raíz web deben tener el bit de ejecución establecido para permitir que Apache descienda a los directorios.
Si usted tiene su Webroot situada en
/home/user/htdocs
el/
,/home
,/home/user
y/home/user/htdocs
debe tener el conjunto bit de ejecución.La solución anterior "funciona", pero no es ideal. Si ha creado una carpeta, Apache no puede escribir en ella. Lo contrario también sucede.
Esto puede "arreglarse" configurando umask 0007 y agregándose al grupo Apache (www-data si no me equivoco), para que el grupo pueda escribir los archivos y carpetas recién creados.
Alternativamente, puede instalar un Apache MPM alternativo: Apache2 MPM ITK ( información sobre la configuración ) y ajustar la configuración para que Apache se ejecute bajo su usuario.
fuente
Si los documentos de su servidor están en el
/home/$USER/public_html
directorio, debe ejecutarpara otorgar la propiedad de la carpeta DocumentRoot al usuario
www-data
y al grupowww-data
.Entonces puedes agregarte al grupo
www-data
Finalmente, debe hacer que el propietario (usuario de www-data) pueda escribir la carpeta DocumentRoot (como parte del
www-data
grupo):Para mayor comodidad, puede crear secuencias de comandos
public_html_fix.sh
con contenido:Guárdelo dentro
/home/$USER/bin
y hágalo ejecutable usando:Luego lo llama cuando lo necesita, desde cualquier parte del sistema de archivos que se encuentre así:
fuente
www-data
grupo lean sus archivos o escriban para el caso?chmod -R 775 /home/$USER/public_html
realmente terriblefind /home/$USER/public_html -type d -exec chmod 775 {} \;
yfind /home/$USER/public_html -type f -exec chmod 664 {} \;
es mucho mejorAdemás de cambiar archivos y editar archivos apache .conf, quiero decir que nada funcionó para mí porque mis archivos estaban en una partición que había montado automáticamente a través de nautilus. Esto limita la partición solo para su usuario.
Para verificar si sus archivos son visibles
www-root
o cualquier usuario que ejecute apache (ejecutarps -aux | grep apache2
para verificar), ejecute el siguiente comando:e intente leer un archivo desde la raíz de su documento.
Si el archivo no es legible, verifique que:
1) ha configurado todos los demás permisos de archivo
2) ha utilizado
FollowSymlinks
en sus.conf
archivos si es necesario3) ha configurado DocumentRoot
3) monte su partición para todos los usuarios. Tuve que editar
/etc/fstab
y especificar mi partición a través de su UUID:Luego desmonte su partición a través de nautilus y haga una
sudo mount -a
. Si todo va bien, sus archivos están ahora bajo/mnt
. Actualiza tus enlaces simbólicos y listo.fuente
La mejor manera que he encontrado para configurar esto siempre es la forma en que VirtualMin lo hace.
crear usuario y grupo "myhome"
Haga que el usuario apache sea miembro del grupo "myhome". No al revés como algunas de las explicaciones aquí descritas
Así que ahora Apache ha leído y ejecutado el acceso a / home / myhome además de / home / myhome / www
El usuario "myhome" tiene acceso de escritura
fuente
www-data
pertenece al grupomyhome
. Todos los archivos y directorios tienen permisos de escritura grupales y pertenecenmyhome:myhome
. Reinicié apache. Apache todavía no puede escribir nuevos archivos y carpetas. (Script PHP usando www-data: usuario / grupo www-data)