¿Cuál es el significado de "chmod 666"?

47

Estoy usando Linux ¿Cuál es el significado de chmod 666?

Seno
fuente
28
aka, el comando de Satanás.
Moab
66
Si eso te molesta (o si no puedes molestarte en recordar esos números) también puedes escribirlo como chmod a=rw.
Starblue
comando inútil, ya que el tercer argumento no se da ^^
kokbira
también puede producir fallas de seguridad (todos los usuarios pueden escribir el archivo / carpeta) o permisos inútiles de archivo / carpeta
kokbira

Respuestas:

112

chmod atributos de cambio de comando de un archivo / carpeta:

  • chmod 666 file/folder significa que todos los usuarios pueden leer y escribir pero no pueden ejecutar el archivo / carpeta;
  • chmod 777 file/folder permite todas las acciones para todos los usuarios;
  • chmod 744 file/folderpermite que solo el usuario (propietario) realice todas las acciones; el grupo y otros usuarios solo pueden leer.

    permission to:  user(u)   group(g)   other(o)     
                    /¯¯¯\      /¯¯¯\      /¯¯¯\
    octal:            6          6          6
    binary:         1 1 0      1 1 0      1 1 0
    what to permit: r w x      r w x      r w x
    
    binary         - 1: enabled, 0: disabled
    
    what to permit - r: read, w: write, x: execute
    
    permission to  - user: the owner that create the file/folder
                     group: the users from group that owner is member
                     other: all other users
    

Alternativamente, puede ejecutar el comando con una sintaxis más intuitiva, sin necesidad de pensar en binario u octal (pero el conocimiento de la sintaxis numérica es muy importante): chmod u=rw, g=rw, o=rw file/folder

Recuerde que el permiso cambia con el chmodcomando requiere al menos 3 argumentos, por lo chmod 666que no hace nada sin una carpeta / archivo explícito para cambiar los permisos.

También asegúrese de criticar si no produce problemas inseguros o simplemente si se trata de un cambio de permiso inútil, ya chmod 666que permitirá que el archivo / carpeta escriba a todos y la ejecución a ninguno.

kokbira
fuente
55
Solo es "octal", no "decimal". +1 de todos modos.
Ben Voigt
1
El tercer punto mencionado en la primera publicación es incorrecto: ¡chmod 711 permite que solo el propietario realice todas las acciones, el grupo y otros solo pueden leer! [Ingrese la descripción de la imagen aquí] [1] Esta es la tabla para rwx para octal rwx 000 001 010 011 100 101 110 111 Octal 001, o 1 denota el permiso de ejecución Octal 7, 111 denota el permiso de lectura, escritura y ejecución, por lo tanto, 711 denota, rwx para el propietario yx para los grupos y otros.
3
De todos modos, solo va a 7, por lo que no hay diferencia entre octal y decimal en este caso. : /
Rob
Sí, @Yash, y después de 1 año, 2 meses y 18 días después de la publicación original, alguien vio ese error :) Lo corregiré a 744, por ejemplo.
kokbira
1
@KyleVassella, owneres el propietario del archivo o carpeta, generalmente el que lo creó. groupes el grupo de usuarios asociados con ese archivo o carpeta, generalmente el grupo en el que está el propietario. Así que imagina que soy rootbira y mi groop es rootusers y tú también estás en ese grupo, y todos los demás miembros del foro SU están en otro grupo. Si creo un archivo y hago un chmod 750, lo leería, escribiría y ejecutaría, solo leerías y ejecutarías y los usuarios de SU no harían nada - es nuestro secreto ¬¬
kokbira
7

En pocas palabras: hace que un archivo sea legible y escribible por el propietario del archivo, el grupo del propietario del archivo y todos los demás que usan la máquina (todos). Aplicado contra un directorio, permite a todos leer (obtener listas de contenido de archivos) de un directorio y escribir (crear, editar archivos en el directorio) pero no ejecutar archivos desde el directorio.

Para obtener información más detallada sobre cómo chmodfunciona, consulte este práctico tutorial .

Ian C.
fuente
2
... ¿No quiere decir que todos lean / escriban archivos pero no los ejecuten, y que todos lean / escriban archivos en un directorio, pero no enumeren todos los archivos?
Earlz
2
lo que dice @earlz, además de escribir en un directorio no significa que pueda editar archivos allí (escribir permisos en un archivo sí) sino que solo significa que puede crear nuevas entradas (directorios, archivos, enlaces simbólicos, etc.). Además, es amable de su parte mencionar los directorios para completar, pero 666 no tiene sentido para un directorio; nunca eliminarías x para el propietario.
Rich Homolka
1
@ Earlz: gracias por eso. Siempre olvido lo que 666 hace para los directorios porque, bueno, nunca configuré rw- para un usuario en un directorio. :)
Ian C.
7

Como se menciona en otras respuestas, chmod significa modo de cambio. Afecta los permisos de lectura, escritura y ejecución para el propietario, el grupo y otras categorías de usuarios. Los números que siguen al comando (en este caso 666) indican cómo se modifican esos permisos para el archivo en el que se ejecuta el comando (para 666, significa que el propietario, el grupo y otros tienen permisos de lectura y escritura, pero no tienen permisos de ejecución) .

Al cambiar los números a diferentes valores, efectivamente cambia los permisos para el archivo. El enlace al que he hecho referencia anteriormente tiene una pequeña herramienta para descubrir qué valores necesita poner para obtener el esquema de permisos que busca. También repasa las opciones de cambio disponibles para el comando y algunos ejemplos para ayudarlo a comprender mejor cómo funciona.

MaQleod
fuente
1
Ese es un gran sitio. Va en mis marcadores. ¡Gracias!
Kirk
5

El comando chmod (abreviado del modo de cambio) es un comando Unix que permite que un operador le diga al sistema cuánto (o poco) acceso debe permitir a un archivo. Comando chmod 666significa que todos los usuarios tendrán permisos de lectura y escritura.

Seno
fuente
2

Si sus preguntas se refieren más a la parte 666 que a la parte chmod, lo recomendaría al Proyecto de documentación de Linux, donde hay una explicación decente de cómo funcionan los permisos de archivos en Linux.

Iglesia
fuente