Menentukan apakah pengguna saat ini memiliki izin menulis di direktori

9

Saya tahu Anda dapat menentukan pemilik direktori dengan melakukan:

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

Anda kemudian dapat membandingkannya dengan pengguna saat ini dengan melakukan ini:

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

Tetapi Anda dapat memiliki izin untuk menulis tanpa menjadi pemiliknya. Bagaimana Anda menentukan ini?

Tyilo
sumber

Jawaban:

20

Saya seharusnya

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

harus melakukan apa yang Anda inginkan.

Juga, stat -c %U ~/foomerupakan cara yang lebih baik untuk mendapatkan pemilik daripada parsing lsoutput.

enzotib
sumber
1
Catatan yang statkhusus untuk sistem Linux modern, kesatuan lain mungkin berbeda statatau tidak sama sekali. Parsing biasanya resep untuk masalah , tetapi menguraikan pemilik sebagai kata ketiga yang paling berhasil (hal-hal rusak setelahnya); itu masih belum sempurna (beberapa sistem memungkinkan spasi dalam nama pengguna).
Gilles 'SANGAT berhenti menjadi jahat'