Bagaimana cara menipu / mengejek direktori yang digunakan oleh aplikasi biner sebagai direktori lain?

9

Misalkan ada aplikasi biner yang selalu menulis datanya /tmp.

Bagaimana saya bisa menipu / mengejek /tmpdemi biner ini sebagai direktori lain (misalnya home/tmp)?

Mari kita asumsikan saya tidak memiliki sarana untuk memodifikasi biner ini untuk memaksanya menggunakan direktori yang berbeda.

Nobilis
sumber

Jawaban:

11

Anda dapat menjalankan aplikasi dalam suatu chrootlingkungan yaitu /aplikasi yang dilihatnya bukan yang asli /. Anda membuat hierarki sistem file baru lengkap dan me-mount ( --bind) semua yang Anda butuhkan ke dalamnya. Poin yang relevan adalah: Anda dapat memasang yang asli ~/tmpke yang ada /tmpdi chrootlingkungan.

Alih-alih menggunakan chroot(yang membutuhkan hak superuser) Anda dapat melakukan lebih atau kurang sama dengan wadah Linux ( lxc). Saya tidak terbiasa dengan lxctetapi karena ini adalah proses pengguna normal ke sistem host Anda tidak perlu menjadi superuser untuk konfigurasi seperti itu di dalam wadah.

Hauke ​​Laging
sumber
Jawaban yang bagus, saya belum pernah mendengar chrootatau lxcmampu melakukan ini. Sangat menyenangkan mengetahui ada cara untuk mencapainya tanpa menjadi pengguna super.
Nobilis
3
@Nobilis 98 upvotes hilang karena ini diakui sebagai jawaban yang bagus ...
Hauke ​​Laging
2
Hati-hati, bagaimanapun, bahwa chrootmemerlukan pengaturan tambahan (Anda mengganti seluruh /, bukan hanya /tmp, sehingga akses ke /etc, /var, dll, akan juga berada di dalam "penjara") dan menciptakan kekhawatiran keamanan (yang "dipenjara" program sendiri mungkin dapat memanipulasi bagian dari sistem file yang biasanya terlarang jika Anda tidak berhati-hati dengan izin saat mengatur palsu Anda /).
IMSoP
@IMSoP Maukah Anda menjelaskan "mungkin dapat memanipulasi bagian dari sistem file yang biasanya di luar batas" secara lebih rinci?
Hauke ​​Laging
@ HaukeLaging Jika yang baru /tidak dibatasi hanya untuk ditulis oleh root, pengguna yang "dipenjara" dapat membuat atau mengganti file yang tampaknya berada di lokasi sistem utama, seperti /etc/passwd; ini kemudian dapat digunakan untuk eskalasi hak istimewa yang tidak mungkin dilakukan di luar chroot. Banyak server FTP Linux, yang biasanya digunakan chrootuntuk menyembunyikan sisa sistem file, sekarang menolak untuk melakukannya jika direktori dapat ditulisi oleh pengguna yang bukan root.
IMSoP
8

Sebagian besar perangkat lunak yang memenuhi syarat POSIX akan menghormati variabel lingkungan TMPDIR misalnya

env TMPDIR=~/mytmp  /path/to/application
HBruijn
sumber