Sprawdź, czy bieżący użytkownik ma uprawnienia do zapisu w katalogu

9

Wiem, że możesz określić właściciela katalogu, wykonując:

ls -ld ~/foo | awk '{ print $3 }'

Następnie możesz porównać to z bieżącym użytkownikiem, wykonując następujące czynności:

if [[ $(ls -ld ~/foo | awk '{ print $3 }') == "$USER" ]] # or $(id -u -n ) instead of $USER
then
    echo "You are the owner"
else
    echo "You are NOT the owner"
fi

Ale możesz mieć uprawnienia do pisania bez bycia właścicielem. Jak to określić?

Tyilo
źródło

Odpowiedzi:

20

Przypuszczam

if [ -w ~/foo ]; then ....

powinien robić co chcesz.

Ponadto stat -c %U ~/foojest lepszym sposobem na uzyskanie właściciela niż analizowanie lsdanych wyjściowych.

enzotib
źródło
1
Zauważ, że statjest to specyficzne dla współczesnych systemów Linux, inne jednorożce mogą mieć inne statlub wcale. Parsowanie ls jest zwykle receptą na kłopoty , ale parsowanie właściciela, ponieważ trzecie słowo przeważnie działa (rzeczy się psują); wciąż nie jest doskonały (niektóre systemy dopuszczają spacje w nazwach użytkowników).
Gilles „SO- przestań być zły”,