Comando para enumerar los permisos del archivo y todas las carpetas desde la raíz hasta la ruta del archivo

Comando para enumerar los permisos del archivo y todas las carpetas desde la raíz hasta la ruta del archivo

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_filey todos los directorios en su ruta desde la raíz, es decir, los permisos para var,,,, ?some_dir_1some_dir_2some_dir_3

Respuesta1

Puedes usar nameicon -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 realpatho readlink.

namei -l $(readlink -m relative_path_to/file)

Respuesta2

El siguiente bashscript 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.shy ejecútelo usando /path/to/parent_permissions.sh /path/to/file.

Sólo funciona con rutas absolutas a menos que se combine con readlink -fo elabspathguión de esta respuesta, en cuyo caso deberá cambiar la asignación inicial de FILEPATHa:

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 lsllamada o reemplácelo, por ejemplo, con getfacl, según corresponda en su sistema para imprimir ACL y atributos extendidos si está interesado en ellos.

información relacionada