Determinare se l'utente corrente dispone dell'autorizzazione di scrittura in una directory


9

So che puoi determinare il proprietario della directory facendo:

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

È quindi possibile confrontarlo con l'utente corrente in questo modo:

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

Ma puoi avere le autorizzazioni per scrivere senza essere il proprietario. Come lo determini?

Risposte:


20

Credo

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

dovrebbe fare quello che vuoi.

Inoltre, stat -c %U ~/fooè un modo migliore per ottenere il proprietario che analizzare l' lsoutput.


1
Nota che statè specifico per i moderni sistemi Linux, altri unices potrebbero avere un diverso stato nessuno. L'analisi di ls è di solito la ricetta per i problemi , ma l'analisi del proprietario come la terza parola funziona principalmente (le cose si rompono in seguito); non è ancora perfetto (alcuni sistemi consentono spazi nei nomi utente).
Gilles 'SO- smetti di essere malvagio' il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.