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ć?

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.


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”,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.