Comando para listar a permissão do arquivo e todas as pastas da raiz para o caminho do arquivo

7

Dado um arquivo, digamos /var/some_dir_1/some_dir_2/some_dir_3/some_file , Existe um único comando que listará as permissões de some_file e todos os diretórios em seu caminho da raiz, ou seja, as permissões para var , some_dir_1 , some_dir_2 , some_dir_3 ?

    
por George 02.02.2012 / 14:12

2 respostas

8

Você pode usar namei com -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 digitá-lo, use realpath ou readlink .

namei -l $(readlink -m relative_path_to/file)
    
por 29.11.2014 / 22:21
2

O seguinte script bash imprime todas as permissões da entrada de 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

Salvar como por exemplo parent_permissions.sh e executado usando /path/to/parent_permissions.sh /path/to/file .

Funciona somente com caminhos absolutos, a menos que combinado com readlink -f ou o script abspath desta resposta , em 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 à chamada ls ou substitua-a. com getfacl , conforme apropriado em seu sistema, para imprimir ACLs e atributos estendidos se você estiver interessado neles.

    
por 02.02.2012 / 14:23

Tags