... 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 stat
programa (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
%a
son los "Derechos de acceso en octal"%n
es 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 sistemastat
que 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 chmod
comando (y también elchmod
función), porque es octal, y lachmod
El 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