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

54

Estoy ejecutando un servidor web y un servidor FTP, en el que /var/wwwestá obligado /home/user/www.

Configuré ambos directorios en chmod 777(lo cual está bien ya que es solo para pruebas).

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

De lo contrario, cuando intento buscarlo, aparece el mensaje de error

No tiene permiso para acceder / probar / en este servidor.

¿Hay alguna manera de que /var/wwwcualquiera pueda acceder a todas las subcarpetas ? ¿O podrían sus permisos configurarse automáticamente 777? Es molesto que tenga que escribir chmod 777todo el tiempo.

usuario1645034
fuente
12
Solo voy a dejar esto aquí. TENGA EN CUENTA QUE NO UTILIZA 777 EN UN SERVIDOR WEB . Una mejor pregunta es "¿Cómo puedo hacer que mi servidor web funcione sin usar los permisos 777?"
Marco Ceppi
12
lo siento, es una mala práctica y me niego a responder esto :) Espero que todos estén de acuerdo :)
Rinzwind

Respuestas:

90

Esta es una mala práctica, pero espero que solo la esté utilizando para el desarrollo, o tenga otra buena razón. Puede especificar los permisos cuando crea un directorio utilizando la -mopción:

mkdir -m 777 dirname

O puede establecer los permisos de forma recursiva.

sudo chmod -R 777 /var/www

Antes de usar cualquiera de estos, considere realmente si desea que su sistema de archivos sea tan accesible.


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

Verifique qué grupo posee su /var/wwwdirectorio y agregue su usuario a ese grupo.

sudo adduser yourusername group

El grupo es probablemente www-data.

Entonces estará de acuerdo con establecer sus permisos en 775.

Dan
fuente
44
Esto hace lo que ha pedido, pero lea esto primero ¿Por qué / var / www no tiene chmod 777 ? Realmente no es una práctica recomendada.
Warren Hill
8
No ayude a las personas con un método que sea una mala práctica. Preferiría que explicara cómo hacerlo: agregando su usuario a un grupo www-data o apache;)
Rinzwind
44
La educación es lo primero. Ayudar a las personas a arruinar su máquina no es la forma de Linux. Así que estoy totalmente en desacuerdo contigo.
Rinzwind
2
El autor de la pregunta dijo que esto es solo para probar. Definitivamente puedo entender querer que su lado de desarrollo sea fácilmente accesible para que pueda trabajar más rápidamente. Voy a darle el beneficio de la duda, que no es tan tonto como para hacer esto con un servidor de producción.
Dan
1
@ dan08 Hay mejores formas de realizar pruebas, incluido el uso de su directorio personal. Consulte askubuntu.com/questions/46331/… y kimbriggs.com/computers/computer-notes/linux-notes/… . Hay formas seguras de lograr estos objetivos;)
Panther
7

Los archivos y directorios en Unix pueden tener tres tipos de permisos: lectura ( r), escritura ( w) y ejecución ( x). Cada permiso puede ser ono offpara cada una de las tres categorías de usuarios: el propietario del archivo o directorio; otras personas en el mismo grupo que el propietario; y todos los demas Para cambiar el modo de un archivo, use el comando chmod. La forma general es chmod X @ Y file1 file2 ...

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 
Lokesh Kumar Bandi
fuente
4
cd /var/www
find -type d ! -perm 777 -exec chmod 777 {} \;

para el ftp que crea todos los archivos con diferentes permisos, es posible que desee buscar la máscara de ftpd, cómo se inicia ese demonio

Eche un vistazo a este sitio https://linuxaria.com/article/linux-shell-understanding-umask-with-examples

Jose Pla
fuente
1
+1 para esta es la única respuesta que actualiza SOLAMENTE carpetas y no archivos
janmyszkier
3

Anuncio de servicio publico:


Nunca use chmod 777 para solucionar problemas


  • Es un gran riesgo de seguridad si ejecuta algún servicio disponible para el público, especialmente aplicaciones web (por ejemplo, PHP).

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

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

  • Utilizado en ciertos directorios del sistema (/ usr, / etc, / var, etc.), puede dañar su sistema de formas sorprendentes.

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

  • No hay forma de deshacerlo y recuperar todos los permisos anteriores.

    Es decir, si antes tenía archivos y carpetas con varios permisos diferentes, no hay forma de volver a esos permisos específicos, solo para cambiarlos a lo mismo, lo que puede perder cualquier configuración de permisos específica que se necesitaba en archivos específicos.

  • Siempre hay una forma más apropiada de lograr lo que quieres lograr.

En este caso, parece que solo desea que su servidor web pueda leer un directorio. Otorgar permisos de escritura mundial es mucho más de lo que necesita hacer.

Localice por qué el servidor web no puede leer ese directorio (sugerencia: probablemente se deba a que su directorio personal no puede leerse en todo el mundo. El mundo en lectura es mucho más seguro que en todo el mundo: configure su directorio de inicio en algo así como 755, o mueva ese directorio www fuera de su casa a algún lugar como / var / www o / srv).

thomasrutter
fuente
0

Esto no me funciona.

sudo chmod -f 777 /path/to/your/file/or/directory

Tengo que usar -ftambién.

sudo chmod -R -f 777 /path/to/your/file/or/directory
Janaka Pushpakumara
fuente
0

Si desea copiar permisos y / o propiedad de otro archivo con el que esté satisfecho, puede hacerlo usando sudo chmod --reference = path / to / file / to / reference path / to / file / you / want / a / cambio / permissino / a

Y también puede hacer lo mismo para la propiedad del archivo.

Amir Khalil
fuente