Déterminer si l'utilisateur actuel dispose d'une autorisation d'écriture dans un répertoire

9

Je sais que vous pouvez déterminer le propriétaire du répertoire en faisant:

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

Vous pouvez ensuite le comparer à l'utilisateur actuel en procédant comme suit:

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

Mais vous pouvez avoir des autorisations pour écrire sans en être le propriétaire. Comment déterminez-vous cela?

Tyilo
la source

Réponses:

20

Je suppose

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

devrait faire ce que vous voulez.

En outre, stat -c %U ~/fooc'est un meilleur moyen d'obtenir le propriétaire que d'analyser la lssortie.

enzotib
la source
1
Notez que statc'est spécifique aux systèmes Linux modernes, d'autres unités peuvent avoir un différent statou aucun. Analyser ls est généralement une recette pour des problèmes , mais analyser le propriétaire comme le troisième mot fonctionne principalement (les choses se décomposent ensuite); ce n'est toujours pas parfait (certains systèmes autorisent les espaces dans les noms d'utilisateurs).
Gilles 'SO- arrête d'être méchant'