¿Cómo dar permiso de lectura y escritura a una carpeta y sus subcarpetas y archivos?

10

He cambiado la propiedad de mi archivo localhost /var/www/y sus subcarpetas y le he dado permiso 777. Sin embargo, cada vez que agrego una nueva carpeta, la nueva carpeta no obtiene automáticamente ese permiso. ¿Cómo puedo dar permiso a una carpeta 777 para siempre de modo que si agrego una nueva carpeta o archivo obtenga el mismo permiso?

kamal
fuente
El 777 es una mala idea . Pero usar ACL podría encajar muy bien. ¿Podrías leer esta solución en ACL para ver si te funciona bien?
1
De manera similar, para modificar todos los directorios, puede usar find . -type d -exec chmod 777 {} +para cambiar todos los directorios a 777. Recuerde, debe iniciar sesión como root para obtener mejores resultados, y asegúrese de estar en la carpeta.
Redy S

Respuestas:

1

Los permisos para los archivos recién creados son fijados por umask

Vojtech Trefny
fuente
¿Puedes escribir el comando para hacer / var / www / writable y darle permiso de manera que obtenga el mismo permiso (777) para el sitio que agregué recientemente?
Kamal
1
Dar permiso 777 a su servidor web no es bueno.
saji89
¿Podría por favor agregar más detalles?
saji89
@ Vojtech Trefny. El enlace no funciona en este momento, dice 404 No encontrado.
all4naija
12

Puede usar la opción recursiva en cualquier momento. sudo chown -R username /var/www

BZ1
fuente
¡Necesitas más votos a favor!
Sheharyar
10

Como otros ya han mencionado , otorgar permisos 777 /var/wwwes una muy mala idea, especialmente en producción.

Una mejor solución sería otorgar permisos de escritura solo a los usuarios que necesiten modificar los archivos. Una de las formas de hacerlo es:

  • crear un nuevo grupo

  • agregar los usuarios que necesitan modificar los datos en /var/wwwese grupo

  • cambiar recursivamente la propiedad de /var/wwwese grupo

  • conjunto umaskde /var/wwwarchivos por lo que todo recién creados son propiedad del grupo que hemos creado.

Otra opción sería usar ACL, nuevamente, para otorgar permisos de escritura solo a los usuarios que los necesiten.

Aquí hay instrucciones detalladas sobre serverfault .

En general, el servidor web u otros servicios de red o cuentas de usuario del sistema no deberían tener permisos de escritura para los archivos servidos por el servidor web, ya que esto abre la posibilidad de ejecución de código arbitrario.

Sergey
fuente
2

Debería editar /etc/apache/envvarscomo root con el editor de su elección.

Ejemplo: ALT+F2
gksudo gedit /etc/apache2/envvars

Ve al final del archivo y agrega una línea umask XXX.

Donde umask es el opuesto binario del valor de permisos deseado.
Para 774 esto sería 003. Para 777 mala idea sería 000.

Salvar.

Reiniciar apache.

Ejemplo: sudo apache2ctl restart

Esto solo afectará a los archivos / carpetas recién creados por el usuario de apache.

Nota adicional, leer y escribir es 6 en la ranura de usuario, grupo o cualquier persona.

RobotHumanos
fuente
0

Además, una solución "lista para usar" es configurar su servidor http para usar una carpeta diferente. Si usa Apache, simplemente edítelo en los archivos de configuración. De esta manera, no tiene que cambiar los permisos para / var / www, lo que puede ser una mala idea (posibles problemas de seguridad).

Y umask es la respuesta a tu pregunta. Se puede usar para restringir los privilegios predeterminados para carpetas y archivos recién creados. Y los desarrolladores de distribución tienden a usarlo para restringir el acceso a algunas carpetas del sistema.

przemo_li
fuente
0

Creo que desea tener acceso de escritura /var/wwwpara modificar archivos y directorios. Creo que la mejor solución es instalar apache2-mpm-itky agregar en el archivo de configuración del host virtual /etc/apache2/sites-available/default:

<IfModule mpm_itk_module>
    AssignUserId your-username your-group
</IfModule>

y ejecutar de chown your-username\: /var/www -Rvesta manera apache para ese host virtual se ejecutará con su UID / GID y podrá editar archivos. Incluso los archivos creados por PHP tendrán su UID / GID

Dawid
fuente