2011-10-27 23 views
19

Próbuję sprawdzić, czy plik ma ustawiony bit wykonania dla właściciela w skrypcie bash.Sprawdzanie uprawnień właściciela pliku

Wiem, że if [ -x filename ] sprawdza, czy użytkownik jest uprawniony do wykonywania polecenia, ale musi wiedzieć, czy właściciel go posiada. Czy istnieje sposób na określenie właściciela?

Odpowiedz

34

Możesz użyć stat, aby uzyskać uprawnienia do pliku i przeanalizować je za pomocą innego polecenia, aby uzyskać żądaną postać.

stat -c %A someFile 

Zwraca coś takiego:

-rw-rw-r-- 

EDIT: Proszę bardzo:

stat -c %A someFile | sed 's/...\(.\).\+/\1/' 

Returns albo - lub x jeśli właściciel ma wykonać.

EDIT 2: Na litość Zakończenie za:

if [ `stat -c %A someFile | sed 's/...\(.\).\+/\1/'` == "x" ] 
then 
    echo "Owner has execute permission!" 
fi 
+1

Pracował wielki. Dzięki – aport002

+14

jeśli [$ (stat -c% a some-file)! = 600]; wtedy ... było to, czego chciałem. –

+3

'% a' to świetny format. Prostszym sposobem na odzyskanie czwartej litery jest 'stat -c% A someFile | wyciąć -c4'. –

Powiązane problemy