Uji izin file yang efektif untuk pengguna

24

Apakah mungkin untuk menguji izin file yang efektif untuk pengguna tertentu?

Saya biasanya melakukan ini dengan su userdan kemudian mengakses file, tetapi saya sekarang ingin menguji ini pada pengguna tanpa shell (yaitu pengguna Sistem)

dtech
sumber

Jawaban:

23

The sudoperintah dapat menjalankan apa pun sebagai pengguna tertentu dengan -upilihan. Alih-alih mengkhawatirkan kerang, coba cat(atau laksanakan, apa pun) file Anda sebagai pengguna target Anda:

$ sudo -u apache cat .ssh/authorized_keys 
cat: .ssh/authorized_keys: Permission denied
ckhan
sumber
catmungkin bukan pilihan terbaik ... Anda menguji file besar atau file biner ...
Alexis Wilke
24

Saya menemukan nyaman untuk digunakan dalam skrip sesuatu seperti

 sudo -u <user> test -r <file-to-test> && ...
pengguna72025
sumber
1
jawaban terbaik, karena Anda dapat menguji untuk dibaca (-r), dapat ditulis (-w) dan dieksekusi (-x) tanpa benar-benar memodifikasi / membuat file. man testuntuk lebih jelasnya
Thomas
12
sudo -u <user> test -r <file-to-test>; echo $?

Bagian echo $?akan menampilkan status keluar dari tes.

Hanya ingat di sini bahwa hasilnya akan 0jika operasi berhasil! Atau non-nol, misalnya 1, jika tidak.

Seperti komentar @ Thomas pada jawaban @ user72025, gunakan man testuntuk mendapatkan lebih banyak tes operasi, seperti test -xuntuk menguji kemampuan eksekusi, test -wuntuk kemampuan menulis, dll.

Tyler Collier
sumber
1
Bagi saya, ini adalah jawaban yang paling membantu. Yang oleh user72025 sudah dekat, tapi saya tidak tahu apa hasilnya. Anda sudah menjelaskannya. Terima kasih. Memilih.
inspirednz
6

Saya menemukan Anda dapat menggunakan su -s <shellname> <username>untuk memasukkan shell tertentu sebagai pengguna tertentu. Anda kemudian dapat menguji izin file seperti biasa.

Misalnya:

su -s /bin/bash Debian-exim
touch /etc/exim4/exim4.conf.template
dtech
sumber
Opsi yang sangat menarik.
Alex