* Izin pengguna nix benar-benar sederhana, tetapi segala sesuatunya dapat menjadi berantakan ketika Anda harus memperhitungkan semua akses direktori induk sebelum mencapai file yang diberikan. Bagaimana saya bisa memeriksa apakah pengguna memiliki cukup hak istimewa? Jika tidak, lalu direktori mana yang menolak akses?
Misalnya, anggap pengguna joe
, dan file /long/path/to/file.txt
. Bahkan jika file.txt
chmoded ke 777, joe masih harus dapat mengakses /long/
, dan kemudian /long/path/
dan kemudian /long/path/to/
sebelumnya. Yang saya butuhkan adalah cara untuk memeriksa ini secara otomatis. Jika joe
tidak memiliki akses, saya juga ingin tahu di mana dia ditolak. Mungkin dia bisa mengakses /long/
, tetapi tidak /long/path/
.
sumber
namei <path> || exit 1
memungkinkan Anda untuk mendeteksi masalah izin lebih mudah dalam skrip.Anda dapat menggunakan bash untuk melakukan ini.
Untuk memeriksa ini untuk pengguna tertentu, Anda dapat menggunakan
sudo
.sumber
path
menjadi kosong? atau/
?path
diatur ke/long
pertama kali di sekitar loop, yang benar. Haruskah saya menetapkanpath
apa-apa secara eksplisit (path=
)? Juga, terima kasih telah menyederhanakan penggunaan saya padatr
.Seperti yang saya dapatkan dari pertanyaan Anda, Anda harus memeriksanya untuk pengguna yang berbeda (tidak hanya joe), jadi dalam hal ini cara termudah adalah memeriksa secara berulang melalui sudo seperti ini:
pemakaian:
sumber
0755
,0700
, dan0777
). Saya mengeluarkan./script.sh /root/test/test.txt joe
dan itu bergemaoriginal file /root/test/test.txt is readable for joe
. Juga, ketika mencoba ini, saya salah mengeja tes dir:,./script.sh /root/tst/test.txt joe
dan itu bergemaoriginal file /root/tst/test.txt is readable for joe
. Apakah saya melewatkan sesuatu?-r $FILE
, kan?Inilah upaya saya untuk menyediakan fungsionalitas ini. Saya telah memilih untuk menggunakan
stat
,while
mengulang, dandirname
.Saya telah membuat script ini,
walkdir.bash
:Anda menjalankannya seperti ini:
sumber