Dado un archivo, digamos , ¿hay un /var/some_dir_1/some_dir_2/some_dir_3/some_file
único comando que enumere los permisos some_file
y todos los directorios en su ruta desde la raíz, es decir, los permisos para var
,,,, ?some_dir_1
some_dir_2
some_dir_3
Respuesta1
Puedes usar namei
con -l
(long) en una ruta absoluta:
namei -l /absolute/path/to/file
Te dará algo como:
dr-xr-xr-x root root /
drwxr-xr-x root root absolute
drwx------ user1 group1 path
drwxr-xr-x user1 group1 to
-rw-r--r-- user1 group1 file
Debe proporcionar la ruta completa. Si no deseas escribirlo, puedes usar realpath
o readlink
.
namei -l $(readlink -m relative_path_to/file)
Respuesta2
El siguiente bash
script imprime todos los permisos de la entrada del directorio pasada como argumento y todos sus padres hasta /
:
#!/usr/bin/env bash
[[ $# -eq 1 ]] || exit 1
FILEPATH="$1"
while true ; do
ls -ld "$FILEPATH"
[[ "$FILEPATH" != "/" ]] || exit
FILEPATH="$( dirname "$FILEPATH" )"
done
Guárdelo como, por ejemplo, parent_permissions.sh
y ejecútelo usando /path/to/parent_permissions.sh /path/to/file
.
Sólo funciona con rutas absolutas a menos que se combine con readlink -f
o elabspath
guión de esta respuesta, en cuyo caso deberá cambiar la asignación inicial de FILEPATH
a:
FILEPATH="$( abspath "$1" )"
En Linux, esto podría funcionar (no probado):
FILEPATH="$( readlink -f "$1" )"
Salida de ejemplo:
drwxr-xr-x 66 danielbeck staff 2244 2 Feb 12:38 /Users/danielbeck
drwxr-xr-x 11 root admin 374 1 Feb 15:21 /Users
drwxrwxr-t 35 root admin 1258 22 Jan 23:09 /
Agregue argumentos a la ls
llamada o reemplácelo, por ejemplo, con getfacl
, según corresponda en su sistema para imprimir ACL y atributos extendidos si está interesado en ellos.