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?

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.


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'
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.