Bisakah saya memasang gambar sistem file tanpa izin root? Biasanya saya akan melakukan:
mount -o loop DISK_IMAGE FOLDER
Tanpa menggunakan sudo atau menyetel suid mount
, apakah ada cara yang cocok untuk melakukan ini?
Saya tahu saya dapat menggunakan fusermount
dengan beberapa gambar ISO, tapi itu cukup terbatas, bahkan untuk gambar ISO, beberapa gambar saya tidak dapat dipasang, tetapi mount
selalu berfungsi.
mount
biner Anda tidak memerlukan izin SUID maka Anda harus dapat menggunakan fakeroot tanpa masalah.fakeroot
tidak akan membantu di sini: itu berpura-pura kepemilikan file berbeda, tetapi tidak bisa memberi Anda izin yang tidak Anda miliki, seperti meneleponmount(2)
ketika Anda tidak melakukan root.Jawaban:
Anda tidak dapat me-mount apa pun yang entah bagaimana administrator belum memberi Anda izin untuk melakukan mount. Hanya root yang dapat memanggil
mount
system call. Alasan untuk ini adalah bahwa ada banyak cara untuk meningkatkan hak istimewa melalui pemasangan, seperti memasang sesuatu di lokasi sistem, membuat file tampak milik pengguna lain dan mengeksploitasi program yang bergantung pada kepemilikan file, membuat file setuid, atau mengeksploitasi bug dalam driver sistem file.The
mount
perintah setuid root. Tapi itu hanya memungkinkan Anda me-mount hal-hal yang disebutkan difstab
.The
fusermount
perintah setuid root. Itu hanya memungkinkan Anda untuk me-mount segala sesuatu melalui driver FUSE, dan membatasi kemampuan Anda untuk memberikan file dengan kepemilikan sewenang-wenang atau izin seperti itu (di bawah kebanyakan pengaturan, semua file pada mount FUSE milik Anda).Taruhan terbaik Anda adalah menemukan sistem file FUSE yang mampu membaca gambar disk Anda. Untuk gambar ISO 9660, cobalah dukungan ISO 9660 fuseiso dan UMfuse (tersedia di bawah Debian sebagai
fuseiso9660
paket ).sumber
sudo
(walaupun bit SUID diset) hanya memungkinkan seseorang untuk memasangfstab
entri. Dari sini dapat disimpulkan bahwa (a) bit SUID masuk akal, karena pengguna biasa dapat me-mountfstab
entri (dan diizinkan untuk melakukanmount
syscall) dan (b) bahwa itu adalahmount
pembatasan utilitas untuk hanya memungkinkanfstab
entri untuk dipasang oleh non- pengguna root.fstab
adalah untuk rootfs dan boot. Untuk memasang drive USB saya melihatlsblk
danmount
sesuai. Saya tidak punya masalah melakukan ini.The Debian Wiki menunjukkan beberapa cara untuk melakukan hal ini. Ini satu cara. (Ini membutuhkan
udisks2
paket.)Pertama
/dev/loop0
akan digunakan untuk yang berikut ini.Tetapi jika
udisksctl loop-setup
perintah telah kembali/dev/loop1
, maka/dev/loop1
akan digunakan untuk yang berikut.Anda mungkin perlu menjalankan jika perangkat loopback (yang dibuat sebelumnya) tidak dipasang secara otomatis:
Anda dapat melihat file di disk
Anda dapat melepasnya setelah selesai
dan jika perlu:
sumber
sudo
hanya. setid atau shenanigans terkait ?-r
opsiudisksctl loop-setup
berarti read-only, yang tidak diminta OP, jadi jatuhkan untuk mendapatkan mount yang dapat ditulisi.Anda dapat menggunakan guestmount modul FUSE untuk memasang beberapa jenis gambar disk. Itu bagian dari ekosistem guestfs dan tidak akan memerlukan izin root.
Lihatlah halaman manual untuk perincian lebih lanjut.
Contohnya
1. Untuk tamu Windows biasa yang memiliki sistem file utama di partisi pertama:
2. Untuk tamu Linux biasa yang memiliki sistem file / boot pada partisi pertama, dan sistem file root pada volume logis:
sumber
Cara yang mungkin dilakukan adalah dengan menambahkan
/etc/fstab
entri untuk ISO dengan parameter 'pengguna', seperti/test.iso /mnt/iso auto defaults,user 0 1
Tetapi Anda biasanya memerlukan akses root untuk mengedit file ini, jadi itu tidak terlalu membantu.
sumber
Sebenarnya sangat mudah untuk memasang kurang lebih apa pun yang Anda inginkan sebagai pengguna normal tanpa hak akses root, asalkan entri yang tepat telah dibuat
/etc/fstab
.Tentu saja, modifikasi
/etc/fstab
membutuhkan hak akses root. Tetapi satu entri dapat digunakan dengan banyak fleksibilitas untuk (u) me-mount banyak file berbeda pada titik mount yang berbeda, tanpa mengedit lebih lanjut/etc/fstab
.Berikut adalah dua skrip Bash yang sangat pendek (5 baris + komentar) yang akan melakukan pekerjaan:
untuk pemasangan
dan untuk turun
Direktori
/tmp/UFS/
dibuat untuk mengisolasi tautan dan menghindari bentrokan. Tetapi symlink dapat berada di mana saja di ruang pengguna, selama mereka tetap di tempat yang sama (jalur yang sama). The/etc/fstab
entri tidak pernah berubah baik.PERINGATAN VITAL: Pemasangan dibatasi untuk alasan keamanan yang baik. Membuatnya lebih fleksibel dapat membuka pintu bagi perangkat lunak berbahaya. Saya bukan ahli keamanan dan saya akan merekomendasikan agar Anda membuka pintu tidak lebih dari yang diperlukan ... menggunakan opsi untuk membatasi apa yang dapat dilakukan dengan sistem file yang dapat dipasang. Jika kontributor yang berpengetahuan luas dapat berkomentar lebih lanjut tentang masalah keamanan, mungkin bermanfaat.
Berbagai opsi tersedia untuk membatasi penggunaan sistem file yang dipasang, seperti
noexec
yang mencegah eksekusi binari, ataunosuid
, dan dengan demikian berkontribusi terhadap keamanan. Sebenarnya, opsi-opsi ini ditambahkan sebagai opsi default ketika opsiuser
atauusers
digunakan, yang tentu terjadi dalam apa yang kita lakukan di bawah ini. Berpikir dua kali sebelum Anda menimpa default ini. http://en.wikipedia.org/wiki/FstabOpsi lain dapat ditambahkan untuk perlindungan lebih lanjut. Misalnya, opsi
owner
dalam/etc/fstab
entri akan memungkinkan pengguna hanya berurusan dengan file atau perangkat yang mereka miliki. Lihatman mount
daftar opsi: http://linux.die.net/man/8/mount .Penggunaan
/etc/fstab
entri ini juga dapat dibatasi melalui kepemilikan user.group dari direktori (atau direktori) yang berisi symlinks.Penjelasan
Penjelasan ini ditulis sebelum saya menyadari bahwa saya dapat menyederhanakan banyak hal dengan dua skrip di atas. Saya tidak langsung memikirkan mereka sebagian karena saya punya masalah yang sedikit lebih rumit yang tidak dapat mereka selesaikan tanpa mesin tambahan. Jadi penjelasan saya mungkin sedikit lebih rumit dari yang seharusnya, tetapi saya tidak memiliki keberanian untuk menulis ulang semuanya dari awal.
Ide dasarnya adalah membuat entri
/etc/fstab
yang menyertakan opsiuser
atauusers
agar pengguna dapat memintamount
untuk melakukan pemasangan yang ditentukan dalam entri itu dengan memberikan argumen file yang akan dipasang atau titik mount untuk digunakan (tetapi tidak keduanya dalam pengalaman saya) .Anda juga perlu entri yang tepat
umount
(yang merupakan masalah yang sedikit berbeda - lihat di bawah). Opsiuser
ini biasanya lebih baik daripadausers
karena membatasi izin untukumount
pengguna yang memasang sistem file, sementara ituusers
akan memungkinkan itu untuk semua. Sayangnya opsiuser
ini tidak selalu berfungsi, dan mungkin memerlukan beberapa langkah lain untuk dibuat berfungsi. Ini dibahas dalam Opsi "pengguna" berfungsi untuk mount, bukan untuk umount .Pertama, Anda menambahkan
/etc/fstab
entri seperti:dan gunakan
/tmp/UFS/drive
sebagai tautan simbolik (atau symlink) ke perangkat atau file apa pun yang ingin Anda pasang, katakan file yang berisi gambar sistem file ISO/home/johndoe/john-image-file.iso
.Anda juga mendefinisikan
/tmp/UFS/mountpoint
sebagai symlink ke titik mount yang ingin Anda gunakan, katakanlah/mnt/iso
.Anda kemudian dapat melakukan mount
john-image-file.iso
dengan perintah:Ini sudah cukup di Mageia Linux saya, karena penggunaan perangkat loop sekarang telah dibuat tersirat, dan tidak lagi memerlukan penggunaan
-o loop
secara eksplisit. Saya tidak tahu seberapa umum hari ini. Lihat Saat memasang, kapan saya harus menggunakan perangkat loop?Pemasangan ini muncul dalam tabel dan perintah:
Operasi pemasangan dapat berfungsi untuk file atau drive apa pun dan hanya perlu membuat tautan simbolis dari
/tmp/UFS/drive
ke file itu atau ke perangkat untuk drive tersebut. Tentu saja, nama dan lokasi lain dapat dipilih untuk tautan simbolik, asalkan tidak pernah berubah.Turun dari file bergantung pada cara yang sama pada penggunaan yang tepat dari tautan simbolik. Dalam hal perangkat normal yang terkait dengan beberapa drive harware, Anda cukup menggunakan tautan yang sama.
Namun, file yang berisi gambar sistem file dipasang melalui jenis khusus perangkat yang disebut perangkat loop, secara otomatis dialokasikan ketika Anda memasang file.
Untuk turun dari file, Anda harus merujuk ke perangkat loop, bukan file. Karenanya, Anda perlu
/etc/fstab
entri yang cocok dengan perangkat loop yang digunakan/etc/mtab
, di sini/dev/loop0
, dan titik pemasangan, di sini/mnt/iso
.Anda tidak dapat membuat entri seperti itu sebelumnya karena perangkat loop dapat bervariasi, karena dialokasikan secara dinamis. Perhatikan bahwa juga dimungkinkan untuk menggunakan perangkat loop tetap, tetapi tidak nyaman dengan cara lain. Lihat http://igurublog.wordpress.com/2011/01/22/how-to-allow-mounting-of-iso-files-by-a- Regular-user/ ( blog ini sebenarnya mengilhami balasan di sini ).
Namun, Anda dapat menemukan nama perangkat loop, di sini
/dev/loop0
, dengan menanyakan sistem, seperti yang kami lakukan di atas dalam beberapa cara berbeda. Kemudian/etc/fstab
entri standar kami dapat dibuat untuk menunjuk ke perangkat loop kanan melalui symlink/tmp/UFS/drive
, dan ke titik mount seperti yang dilakukan sebelumnya dengan/tmp/UFS/mountpoint
. Ini dilakukan, file dapat diturunkan dengan salah satu dari perintah berikut (asalkan tidak ada ambiguitas dengan/etc/mtab
, yang merupakan masalah yang berbeda):Karena dua symlink hanya diperlukan ketika perintah dikeluarkan, mereka dapat diubah secara dinamis. Jadi
/etc/fstab
entri tunggal kami memungkinkan pemasangan sejumlah file, dan membuat umountnya dalam urutan apa pun, tanpa hak akses root.Referensi lain:
Memasang dan memodifikasi file loopback tanpa sudo / root, apakah mungkin?
http://www.tuxfiles.org/linuxhelp/fstab.html
sumber
mount
perintah untuk setiap pengguna normal ?, dan masalah keamanan yang terkait dengannya? Koreksi saya jika saya salah.device
ataumountpoint
bagian dari fstab tidak menunjuk ke sebuah entri yang valid. Pengguna harus masuk melalui sesi konsol dan masukstartx
untuk secara eksplisit memulai manajer tampilan.Paket libguestfs-tools-c memiliki perintah guestmount begitu
df akan menampilkan image.iso terpasang
untuk umount yang kita miliki:
sumber