Ini bukan pertanyaan rangkap.
Asumsikan saya punya
- jalur penuh
- ke file biasa bernama
target
- yang mungkin dimiliki oleh beberapa pengguna lain.
- dan lingkungan mungkin dipreteli (kotak sibuk dengan sangat sedikit yang diaktifkan)
Dalam skrip shell, bagaimana saya bisa menguji apakah file ini dapat dieksekusi oleh pemiliknya padahal saya mungkin bukan pemiliknya? Bayangkan tujuan program saya adalah untuk memeriksa apakah semuanya baik-baik saja. diatur dengan baik agar hal-hal lain dapat berjalan (karena lingkungan mungkin telah dirusak oleh pengguna lain) dan mencari di direktori tertentu untuk memastikan pemilik setiap file memiliki izin untuk mengeksekusi file mereka.
Ini adalah konteks profesional, bukan pekerjaan rumah.
Solusi apa pun yang akan saya gunakan harus mencakup semua jenis lingkungan Linux lama yang tidak dapat saya siapkan (sehingga mungkin ada kehilangan hal-hal yang biasanya Anda harapkan seperti which
atau beberapa opsi di find
dll) .
Namun, pertanyaan ini mungkin berguna bagi orang lain yang tidak menghadapi batasan tersebut, jadi saya sangat menghargai solusi lain yang memerlukan lingkungan yang lebih lengkap atau modern.
[ -x "$path" ]
hanya memberi tahu saya apakah Saya bisa menjalankannya.
ls -l "$path"
dan memeriksa apakah karakter keempat adalah x
sepertinya terlalu rapuh: -rwxrw-rw- 1 otheruser group 26 Jun 13 10:57 target
ls -F "$path"
dan memeriksa apakah berakhiran *
tampaknya sedikit lebih baik: target*
Lingkungan yang saya uji memperhitungkan siapa pemilik sebenarnya... Tapi ini sepertinya bukan cara terbaik...
[ -x "$path" ]
secara teknis cukup untuk membedakannya) Program saya adalah validator dan ingin memastikan pemilik setiap file dalam direktori dapat dieksekusi oleh pemilik spesifik tersebut. Saya tidak berpikir grup dihitung karena saya menghilangkan izin pengguna pada sesuatu yang saya miliki yang memiliki grup (saya) dan set x lainnya dan saya tidak dapat menjalankannya. Bukan pekerjaan rumah. Harus kuat dan menangani semua jenis lingkungan Linux yang aneh/lama. - person user1011471   schedule 14.06.2018