Stellen Sie fest, ob der aktuelle Benutzer über Schreibrechte in einem Verzeichnis verfügt

9

Ich weiß, dass Sie den Eigentümer des Verzeichnisses ermitteln können, indem Sie Folgendes tun:

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

Sie können es dann mit dem aktuellen Benutzer vergleichen, indem Sie Folgendes tun:

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

Sie können jedoch die Berechtigung zum Schreiben haben, ohne der Eigentümer zu sein. Wie bestimmen Sie das?

Tyilo
quelle

Antworten:

20

Schätze ich

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

sollte tun was du willst.

Dies stat -c %U ~/fooist auch ein besserer Weg, um den Eigentümer zu erhalten, als die lsAusgabe zu analysieren .

Enzotib
quelle
1
Beachten Sie, dass dies statfür moderne Linux-Systeme spezifisch ist. Andere Unices haben möglicherweise einen anderen statoder gar keinen. Das Parsen von ls ist normalerweise ein Rezept für Probleme , aber das Parsen des Besitzers, da das dritte Wort meistens funktioniert (die Dinge brechen danach zusammen); Es ist immer noch nicht perfekt (einige Systeme erlauben Leerzeichen in Benutzernamen).
Gilles 'SO - hör auf böse zu sein'