70 votos

¿Cómo puedo chmod 777 todas las subcarpetas de /var/www?

Estoy ejecutando un servidor web y un servidor FTP, en el que /var/www está vinculado a /home/user/www .

He puesto ambos directorios en chmod 777 (lo cual está bien ya que es sólo para pruebas).

Puedo cargar archivos en /home/user/www pero cada vez que creo un nuevo directorio, siempre tengo que ejecutar chmod 777 en esa carpeta.

De lo contrario, cuando intento navegar por él, me aparece el mensaje de error

No tienes permiso para acceder a /test/ en este servidor.

¿Hay alguna manera de hacer que todas las subcarpetas dentro de /var/www ser accesible para cualquiera? ¿O se podrían establecer automáticamente sus permisos en 777 ? Es molesto que tenga que escribir chmod 777 siempre.

14 votos

Sólo voy a dejar esto aquí POR FAVOR CONSIDERE NO USAR 777 EN UN SERVIDOR WEB . Una mejor pregunta es "¿Cómo puedo hacer que mi servidor web funcione sin usar permisos 777?"

12 votos

Lo siento, es una mala práctica y me niego a responder a esto :) Espero que todos estén de acuerdo :)

0 votos

114voto

dan08 Puntos 2998

Esto es una mala práctica, pero es de esperar que sólo esté utilizando esto para el desarrollo, o que tenga otra buena razón. Puedes especificar los permisos cuando creas un directorio usando la función -m opción:

mkdir -m 777 dirname

También puede establecer los permisos de forma recursiva.

sudo chmod -R 777 /var/www

Antes de utilizar cualquiera de ellos, considere realmente si quiere que su sistema de archivos sea tan accesible.


Editar: Como mencionó Rinzwind aquí hay una mejor manera de lograr lo que quieres.

Compruebe a qué grupo pertenece su /var/www y añada su usuario a ese grupo.

sudo adduser yourusername group

El grupo es probablemente www-data .

Entonces estará bien con establecer sus permisos a 775.

4 votos

Esto hace lo que has pedido pero por favor lee esto primero ¿Por qué /var/www no debería tener chmod 777? . Es realmente no es una práctica recomendada.

11 votos

Por favor, no ayudes a la gente con un método que es una mala práctica. Preferiría que explicaras cómo hacerlo: añadiendo su usuario a un grupo www-data o apache ;)

0 votos

Esta es una buena respuesta. Aunque tengas razón y la gente no deba dar soluciones que puedan ser perjudiciales, esto responde perfectamente a lo que se pide en la pregunta. Hay que tener en cuenta que la gente quiere hacer lo que quiere. Y en ciertos casos la gente necesita respuestas explícitas y directas a sus preguntas, no alternativas. Estoy a favor de utilizar procedimientos seguros y no permitir permisos 777 en /var/www pero no es lo que se está preguntando aquí.

9voto

Los archivos y directorios en Unix pueden tener tres tipos de permisos: lectura ( r ), escribe ( w ), y ejecutar ( x ). Cada permiso puede ser on o off para cada una de las tres categorías de usuarios: el propietario del archivo o directorio; otras personas del mismo grupo que el propietario; y todos los demás. Para cambiar el modo de un archivo, utilice el comando chmod. La forma general es chmod X@Y archivo1 archivo2 ...

chmod a-w file (removes all writing permissions)
chmod o+x file (sets execute permissions for other (public permissions))
chmod u=rx file        (Give the owner rx permissions, not w)
chmod go-rwx file      (Deny rwx permission for group, others)
chmod g+w file         (Give write permission to the group)
chmod a+x file1 file2  (Give execute permission to everybody)
chmod g+rx,o+x file    (OK to combine like this with a comma)

u = user that owns the file
g = group that owns the file
o = other (everyone else)
a = all (everybody)

r = read aces to the file
w = write access
x = execute (run) access

5voto

Jose Pla Puntos 51
cd /var/www
find -type d ! -perm 777 -exec chmod 777 {} \;

para el ftp crear todos los archivos con diferentes permisos, es posible que desee buscar el umask de ftpd, cómo se inicia ese demonio

Consulte este sitio web https://linuxaria.com/article/linux-Shell-entendiendo-el-umask-con-ejemplos

1 votos

+1 porque esta es la única respuesta que actualiza SOLO las carpetas y no los archivos

5voto

thomasrutter Puntos 12856

Anuncio de servicio público:


No utilices nunca chmod 777 para solucionar problemas


  • Es un riesgo de seguridad importante si ejecuta cualquier servicio disponible al público, especialmente aplicaciones web (por ejemplo, PHP).

    El modelo de seguridad del sistema operativo asume que muchos servicios (como su servidor web) se ejecutan con privilegios reducidos, para evitar que puedan modificar archivos. Establecer 777 en los archivos rompe este diseño.

    Un usuario remoto podría escribir o subir archivos y luego engañar al servidor (o a algún otro proceso de su sistema) para que los lea o ejecute. Los scripts o el software pueden tener fallos que permitan esto. Es muy difícil bloquear todas las formas en que esto podría suceder si hay directorios que se pueden escribir en el mundo.

  • Utilizado en ciertos directorios del sistema (/usr, /etc, /var, etc.), puede romper su sistema de manera sorprendente.

    Algunos archivos esenciales del sistema necesitan permisos especiales, como los permisos setuid/setgid, para poder ejecutarse. Por ejemplo, sudo. Evite cambiar los permisos de los directorios y archivos establecidos por el propio sistema.

  • No hay manera de deshacerlo y recuperar los antiguos permisos.

    Es decir, si antes tenías archivos y carpetas con varios permisos diferentes, no hay forma de volver a esos permisos específicos, sino de cambiarlos todos por lo mismo, lo que puede hacer que se pierda la configuración de permisos específicos que se necesitaban en archivos concretos.

  • Siempre hay una forma más adecuada de lograr lo que se quiere conseguir.

En este caso, parece que sólo quiere que su servidor web sea capaz de leer un directorio. Dar permiso de escritura al mundo es mucho más de lo que necesitas hacer.

Averigua por qué el servidor web no puede leer ese directorio (pista: probablemente sea porque tu directorio personal no es legible a nivel mundial. World-readable es mucho más seguro que world-writable - pon tu directorio home a algo como 755, o mueve ese dir www fuera de tu home a algún lugar como /var/www o /srv).

1voto

Amir Khalil Puntos 11

Si quieres copiar los permisos y/o la propiedad de otro archivo con el que estés satisfecho, puedes hacerlo usando sudo chmod --reference=ruta/al/archivo/al/referencia ruta/al/archivo/que/quieres/cambiar/permiso/al

Y también puedes hacer lo mismo con la propiedad de los archivos.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: