Dado um arquivo, digamos , existe um único comando que /var/some_dir_1/some_dir_2/some_dir_3/some_file
listará as permissões some_file
e todos os diretórios em seu caminho desde o root, ou seja, as permissões para var
,,,, ?some_dir_1
some_dir_2
some_dir_3
Responder1
Você pode usar namei
with -l
(long) em um caminho absoluto:
namei -l /absolute/path/to/file
Isso lhe 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
Você deve fornecer o caminho completo. Se você não quiser digitar, você pode usar realpath
ou readlink
.
namei -l $(readlink -m relative_path_to/file)
Responder2
O bash
script a seguir imprime todas as permissões da entrada do diretório passada como argumento e todos os seus pais até /
:
#!/usr/bin/env bash
[[ $# -eq 1 ]] || exit 1
FILEPATH="$1"
while true ; do
ls -ld "$FILEPATH"
[[ "$FILEPATH" != "/" ]] || exit
FILEPATH="$( dirname "$FILEPATH" )"
done
Salve como, por exemplo, parent_permissions.sh
e execute usando /path/to/parent_permissions.sh /path/to/file
.
Ele só funciona com caminhos absolutos, a menos que seja combinado com readlink -f
ou com oabspath
script desta resposta, nesse caso você precisa alterar a atribuição inicial de FILEPATH
para:
FILEPATH="$( abspath "$1" )"
No Linux, isso pode funcionar (não testado):
FILEPATH="$( readlink -f "$1" )"
Exemplo de saída:
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 /
Adicione argumentos à ls
chamada ou substitua-os, por exemplo, por getfacl
, conforme apropriado em seu sistema para imprimir ACLs e atributos estendidos se você estiver interessado neles.