Listar permissões de arquivo para um diretório e seus pais

2

Tanto quanto eu sei, não há um comando unix que lista as permissões para um arquivo e todos os seus diretórios pai. Existe algo que eu não conheço?

    
por Edward Anderson 30.01.2013 / 20:26

2 respostas

1

Para permissões tradicionais do Unix, há namei :

$ namei -l ~/bin/git-resurrect 

f: /home/grawity/bin/git-resurrect
drwxr-xr-x root    root    /
drwxr-xr-x root    root    home
drwxr-xr-x grawity grawity grawity
drwxr-xr-x grawity grawity bin
lrwxrwxrwx grawity grawity git-resurrect -> ../src/git/contrib/git-resurrect.sh
drwxr-xr-x grawity grawity   ..
drwxrwxr-x grawity grawity   src
drwxr-xr-x grawity grawity   git
drwxr-xr-x grawity grawity   contrib
-rwxr-xr-x grawity grawity   git-resurrect.sh

Um programa semelhante para exibir também ACLs POSIX:

#!/usr/bin/env perl

sub follow {
    my @items = split(m|/+|, shift);
    my @paths = ();
    my $path = "/";
    while (defined(my $item = shift @items)) {
        my $file = $path . ($path eq "/" ? "" : "/") . $item;
        if (-l $file) {
            my $target = readlink($file)
                // die "Could not read link: $!\n";
            unshift @items, split(m|/+|, $target);
            push @paths, $file;
        } else {
            push @paths, $path = $file;
        }
    }
    return @paths;
}

for my $file (@ARGV) {
    system("getfacl", "-aPpt", $_) for follow($file);
}
    
por 30.01.2013 / 21:30
1

Você pode usar um one-liner bash para listar as permissões da hierarquia de diretórios. Primeiro, mude para o diretório em questão e, em seguida, execute:

pushd .; while [ 'pwd' != / ]; do ls -ld 'pwd'; cd ..; done; popd
    
por 30.01.2013 / 20:26