¿Cómo puedo obtener los permisos de un archivo en formato octal?

¿Cómo puedo obtener los permisos de un archivo en formato octal?

... y ¿cómo puedo configurarlos? ¿Esto funciona para directorios de la misma manera? ¿Qué pasa con las cosas pegajosas y esas cosas más "exóticas"?

Respuesta1

Como lo sugiere@gustave, el statprograma (que forma parte dePrincipales utilidades de GNUy esencialmente un programa "Linux" por esa razón, aunque es posible que tenga unpuertoopaqueteen sistemas BSD) puede hacer esto. El comando

stat -c "%a %n"archivo

produce una lista formateada con solo el modo octal (incluidos setuid, setgid y bits adhesivos codificados) y el nombre del archivo. Según la documentación

  • %ason los "Derechos de acceso en octal"
  • %nes el "Nombre de archivo"

Por ejemplo, dado este script:

#!/bin/sh
for name in $*
do       
    ls -ld "$name"
    stat -c '%a %n' "$name"
done

es posible que vea resultados como este de myscript /usr/bin /usr/bin/X /usr/bin/bsd-write:

drwxr-xr-x 5 root root 118784 Jul 11 19:55 /usr/bin
755 /usr/bin
-rwsr-sr-x 1 root root 9232 Dec 16  2011 /usr/bin/X
6755 /usr/bin/X
-rwxr-sr-x 1 root tty 11000 Jun 17  2010 /usr/bin/bsd-write
2755 /usr/bin/bsd-write

Verá que se devuelven 3 o 4 dígitos octales para elderechos de acceso, dependiendo de si están configurados el setuid, etc. El dígito inicial (cuarto) combina

  • 4 (setuido)
  • 2 (establecido)
  • 1 (pegajoso)

Elderechos de accesodevuelto excluye los bits adicionales devueltos por la llamada al sistemastatque indica si el nombre es un directorio ( S_IFDIR) o un archivo ( S_IFREG). Todos esos bits, por cierto, caben en un valor de 16 bits debido a las implementaciones antiguas de Unix en los años 1970 y principios de los 1980, y tienenvalores estándar. Porque elderechos de accesoexcluir el tipo de archivo, puede usar ese valor tal como está en el chmodcomando (y también elchmodfunción), porque es octal, y lachmodEl comando espera eso. Incluso el setuid, etc., funcionan con octal aunque cosas como

chmod u+s /usr/bin/whatever

son más legibles.

Para leer más

Respuesta2

stat -c "%a %n" <file>

Parece funcionar, pero no sé más.

Respuesta3

Obteniendo: como respondió Gustave.

Configuración:

chmod 0755 myfile

Lo mismo para los directorios. Para el bit adhesivo, el primer dígito debe ser 1. Acerca del bit adhesivo:https://askubuntu.com/a/432703

información relacionada