¿Cuál es el resultado de ejecutar `chmod 7` en un archivo?

¿Cuál es el resultado de ejecutar `chmod 7` en un archivo?

sé que chmod 777permiteleer,escribir, yejecutarparausuario,grupo, yotros

pero ¿y si simplemente lo hago chmod 7?

¿Eso es sólo rwxpara elusuario?

Respuesta1

La respuesta de Ramesh es perfectamente precisa, pero quería intervenir y brindar una explicación más detallada de los modos de archivo.

Si bien los números como 755y 777pueden parecer especiales y solo significan algo para los modos de archivo, en realidad son bastante básicos.

Estos números son en realidad números octales. Los números decimales son de base 10, los números hexadecimales son de base 16, los binarios son de base 2 y los números octales son de base 8. Es decir, a medida que cuentas, vas 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 .... Entonces el número 007es simplemente octal 7. El número octal 755es solo un número y equivale a 493decimal.
Ahora bien, la forma de diferenciar un número octal de cualquier otra base es que los números octales tienen el prefijo 0. Por así decirlo, 755es octal, en realidad deberías referirte a él como 0755. El chmodcomando simplemente supone que todos los números de entrada son octales, ya que esa es la forma más común de referirse a los modos de archivo.

Ahora bien, ¿por qué los modos de archivo utilizan octal? Bueno, primero debemos entender que el modo es solo una máscara de bits que se ve así:

111111111111 - 12 binary bits
============
           1 - Other execute
          1  - Other write
         1   - Other read
        1    - Group execute
       1     - Group write
      1      - Group read
     1       - User execute
    1        - User write
   1         - User read
  1          - Sticky bit
 1           - Set group ID
1            - Set user ID

Tenga en cuenta que hay 3 bits para cada uno de "otro", "grupo" y "usuario". El binario 111es 7, que es el valor octal de un solo dígito más alto. Entonces, al usar la numeración octal, cada uno de los demás permisos, grupos y usuarios obtiene un solo dígito, más un dígito adicional para sticky+setuid+setgid.

Entonces, con esto, podemos volver a su pregunta original de "¿qué es chmod 7"?
Bueno, ahora que sabemos que es sólo un número octal y que es sólo una máscara de bits, podemos resolverlo. Octal 7es binario 111. Usando las posiciones de bits anteriores, podemos determinar que esto establece los 3 bits 'otros', otorgando a 'otros' acceso de ejecución, lectura y escritura. Y como esto es sólo un número, todos los demás bits son 0 y se desarman.

Respuesta2

Es al revés. Dará rwxpermiso paraotros.

touch samplefile
ls -l samplefile
-rw-rw-r-- 1 ramesh ramesh 0 Oct 16 22:29 samplefile

Ahora, después de ejecutar el comando, obtengo el resultado como,

chmod 7 samplefile
ls -l samplefile
-------rwx 1 ramesh ramesh 0 Oct 16 22:29 samplefile

Desde la página de manual de chmod,

El modo numérico es de uno a cuatro dígitos octales (0-7), que se obtienen sumando los bits con valores 4, 2 y 1. Se supone que los dígitos omitidos son ceros a la izquierda.

Ahora, podemos verificar lo mismo ejecutando el comando como,

chmod 47 samplefile
ls -l samplefile
----r--rwx 1 ramesh ramesh 0 Oct 16 22:29 samplefile

Como podemos ver, con chmod 47un archivo daráleerpermiso paragrupoyleer,escribiryejecutarpermiso paraotros.

información relacionada