Di Linux, bagaimana saya bisa menemukan semua file dan direktori yang dapat ditulis (atau, sebenarnya, tidak bisa ditulis) oleh pengguna tertentu?
Sunting: Untuk memperjelas, maksud saya di bawah subdirektori tertentu, bukan seluruh sistem. Dan ya, itu berarti semua permutasi dan kombinasi pengguna, grup, dan kemampuan menulis dunia yang memungkinkan pengguna untuk menulis. Saya tahu apa pertanyaannya semantik, saya berharap satu atau beberapa-liner untuk mengeksekusi untuk mendapatkan daftar file-file ini.
Jawaban:
Gunakan perintah 'find' jika Anda memiliki findutils versi 4.3.0 atau lebih besar diinstal:
Untuk semua file di bawah direktori saat ini yang dapat ditulis oleh pengguna saat ini:
Untuk semua file di bawah direktori saat ini yang tidak dapat ditulis oleh pengguna saat ini:
Menurut halaman manual:
sumber
2>&1 | grep -v "Permission denied"
menjadifind . -writable 2>&1 | grep -v "Permission denied"
Anda dapat membuat skrip Perl (
writable.pl
) seperti ini:dan kemudian gunakan skrip ini, sebagai root, sebagai berikut:
mengisi
USERNAME
danDIRECTORY
jika perlu.sumber
Apakah Anda yakin itu benar-benar pertanyaan yang ingin Anda tanyakan?
Untuk mengatakan "Saya ingin melihat semua file yang dapat ditulisi oleh akun X" berarti setiap file yang dimiliki oleh mereka dengan u + w, setiap file yang dimiliki oleh grup mana pun milik mereka yang ditetapkan g + w, dan setiap dunia file dapat ditulis (o + w).
Tidak dapat ditulis akan lebih sulit. Sebaiknya Anda membuat daftar setiap file, lalu mengecualikan yang dapat mereka tulis.
sumber
Untuk jawaban Eddie jika Anda memasukkan:
Kemudian akan melintasi direktori dengan spasi di namanya juga.
sumber
Saya akan menggunakan sintaks gnu find untuk flag -perm dalam contoh ini:
Pada dasarnya - jika Anda membuang ekstensi aneh seperti ACL, Anda punya 3 chocies - pemilik, grup, dan akses tulis "lainnya". Kedengarannya seperti pekerjaan untuk satu lingkaran.
Ada banyak ruang untuk mengoptimalkan ini tetapi saya akan menyerahkannya kepada orang lain ... Juga, saya tidak pernah dapat mengingat semua detail dari menemukan dan melintasi sistem file dan omong kosong semacam itu. Juga, pastikan output kelompok sama dengan pada sistem pengujian linux saya
Ini adalah contoh kasar bagaimana Anda akan menemukan file yang dapat ditulis oleh pengguna. Ini akan ketika dijalankan sebagai pengguna mana pun, tetapi jika Anda menjalankannya sebagai pengguna non-uid0 Anda hanya akan menemukan hal-hal yang ada di direktori dimana pengguna yang menjalankan skrip telah membaca dan menjalankan izin.
sumber
Perintah ini harus menemukan semua direktori yang dapat ditulis, Anda dapat mengubah izin sesuai keinginan Anda:
sumber
Saya tidak yakin apakah ini cara terbaik, tetapi harus melakukan apa yang Anda minta:
kuncinya tentu saja dalam
-w
saklar, yang juga bisa dinegasikanEDIT: Memikirkan lebih lanjut tentang ini, skrip ini mencetak apa yang dapat ditulis oleh pengguna saat ini, itu jelas tidak akan berfungsi untuk beberapa pengguna tertentu.
sumber