Doğru giriş oluşturuldukça, kök ayrıcalıklara sahip olmayan normal bir kullanıcı olarak ne istersen ya da daha az monte etmek aslında çok kolaydır /etc/fstab
.
Tabii ki, /etc/fstab
kök ayrıcalıklarını gerektiren değişiklikler . Ancak, tek bir giriş daha fazla düzenleme yapmadan (u) birçok farklı dosyayı farklı bağlama noktalarına monte etmek için çok esnek bir şekilde kullanılabilir /etc/fstab
.
İşte iki çok kısa (5 satır + yorum) İşi yapacak Bash komut dosyaları:
montaj için
#!/bin/sh
# usage: usmount device dir
# author: babou 2013/05/17 on https://unix.stackexchange.com/questions/32008/mount-an-loop-file-without-root-permission/76002#76002
# Allows normal user to mount device $1 on mount point $2
# Use /etc/fstab entry :
# /tmp/UFS/drive /tmp/UFS/mountpoint auto users,noauto 0 0
# and directory /tmp/UFS/
# Both have to be created (as superuser for the /etc/fstab entry)
rm -f /tmp/UFS/drive /tmp/UFS/mountpoint
ln -s `realpath -s $1` /tmp/UFS/drive
ln -s `realpath -s $2` /tmp/UFS/mountpoint
mount /tmp/UFS/drive || mount /tmp/UFS/mountpoint
# The last statement should be a bit more subtle
# Trying both is generally not useful.
ve sökmek için
#!/bin/sh
# usage: usumount device dir
# author: babou 2013/05/17 on https://unix.stackexchange.com/questions/32008/mount-an-loop-file-without-root-permission/76002#76002
# Allows normal user to umount device $1 from mount point $2
# Use /etc/fstab entry :
# /tmp/UFS/drive /tmp/UFS/mountpoint auto users,noauto 0 0
# and directory /tmp/UFS/
# Both have to be created (as superuser for the /etc/fstab entry)
rm -f /tmp/UFS/drive /tmp/UFS/mountpoint
ln -s `realpath -s $1` /tmp/UFS/drive
ln -s `realpath -s $2` /tmp/UFS/mountpoint
umount /tmp/UFS/drive || umount /tmp/UFS/mountpoint
# One of the two umounts may fail because it is ambiguous
# Actually both could fail, with careless mounting organization :-)
Dizin /tmp/UFS/
, bağlantıları yalıtmak ve çakışmaları önlemek için oluşturulur. Ancak sembolik bağlantılar, aynı yerde kaldıkları sürece (aynı yol), kullanıcı alanında herhangi bir yerde olabilirler. /etc/fstab
Giriş ya hiç değişmez.
VİTAL UYARI:
İyi güvenlik nedenleriyle montaj sınırlandırılmıştır. Daha esnek hale getirmek, kötü amaçlı yazılımlar için kapılar açabilir. Ben bir güvenlik uzmanı değilim ve bu yüzden monte edilebilecek dosya sistemleri ile yapılabilecekleri kısıtlamak için seçenekleri kullanarak, kesinlikle gerekmeyenlerden fazlasını açmanızı öneririm. Bilgili bir katılımcı güvenlik konularında daha fazla yorum yapabilirse, faydalı olabilir.
Takılan dosya sistemlerinin kullanımını kısıtlamak için, örneğin noexec
ikili dosyaların yürütülmesini önleyen veya nosuid
dolayısıyla güvenliğe katkıda bulunan çeşitli seçenekler mevcuttur . Aslında, bu seçenekler, seçenekler kullanıldığında user
veya users
kullanıldığında varsayılan seçenekler olarak eklenir, bu mutlaka aşağıda yaptığımız işte geçerlidir. Bu varsayılanları geçersiz kılmadan önce iki kez düşünün. http://en.wikipedia.org/wiki/Fstab
Daha fazla koruma için başka seçenekler de eklenebilir. Örneğin owner
, /etc/fstab
girişteki seçenek , kullanıcıların yalnızca sahip oldukları dosya veya aygıtlarla uğraşmasına izin verir. man mount
Seçeneklerin bir listesini görmek için bkz : http://linux.die.net/man/8/mount .
Bu /etc/fstab
girişin kullanımı , sembolik bağlantıları içeren dizinin (veya dizinlerin) user.group sahipliği ile de sınırlandırılabilir.
açıklama
Bu açıklama, yukarıdaki iki senaryoda işleri basitleştirebileceğimi fark etmeden önce yazılmıştı. Onları hemen düşünmedim, çünkü elimde biraz fazla makine olmadan çözemedikleri biraz daha karmaşık bir sorun var. Bu yüzden açıklamam olması gerekenden biraz daha karmaşık olabilir, ama hepsini sıfırdan yeniden yazma cesaretine sahip değilim.
Temel fikir, /etc/fstab
seçeneği içeren girişler oluşturmaktır user
ya users
da bir kullanıcı, mount
eklenecek dosyayı veya kullanılacak montaj noktasını argüman olarak vererek bu girişte belirtilen montajı yapmak isteyebilir (ancak ikisinde de değil) .
Ayrıca umount
(biraz farklı bir sorundur - aşağıya bakınız) için uygun bir giriş yapmanız gerekir . Bu seçenek user
genellikle dosya sistemini kuran kullanıcının users
iznini kısıtladığından daha iyidir . Ne yazık ki seçenek her zaman işe yaramaz ve çalışmak için atılması gereken başka adımlar da içerebilir. Bu seçenek "user" seçeneğinde tartışılır, mount için çalışır, umount için değil .umount
users
user
İlk önce aşağıdaki /etc/fstab
gibi bir girişe ekleyin :
/tmp/UFS/drive /tmp/UFS/mountpoint auto users,noauto, 0 0
ve /tmp/UFS/drive
monte etmek istediğiniz cihaz veya dosyaya sembolik bir bağlantı (veya sembolik bağlantı) olarak kullanın, bir ISO dosya sisteminin görüntüsünü içeren bir dosya söyleyin /home/johndoe/john-image-file.iso
.
Ayrıca /tmp/UFS/mountpoint
kullanmak istediğiniz bağlama noktasına bir bağlantı olarak da tanımlayabilirsiniz /mnt/iso
.
Daha sonra john-image-file.iso
aşağıdaki komutu kullanabilirsiniz:
$ mount /tmp/UFS/drive
Bu, Mageia Linux'um için yeterli, çünkü döngü cihazlarının kullanımı artık örtük hale getirildi ve artık -o loop
açıkça kullanılmasını gerektirmiyor . Bugünün ne kadar genel olduğunu bilmiyorum. Bkz
. Monte ederken, ne zaman bir döngü cihazı kullanmalıyım?
Bu montaj tablo ve komutlarda görünür:
$ df | tail -1
/dev/loop0 5,1G 5,1G 0 100% /mnt/iso
$ tail -1 /etc/mtab
/dev/loop0 /mnt/iso udf ro,nosuid,nodev,noexec,relatime,utf8 0 0
$ mount | tail -1
/home/johndoe/john-image-file.iso on /mnt/iso type udf (ro,nosuid,nodev,noexec,relatime,utf8)
$ tail -1 /proc/mounts
/dev/loop0 /mnt/iso udf ro,nosuid,nodev,noexec,relatime,utf8 0 0
$ tail -1 /proc/self/mountinfo
46 22 7:0 / /mnt/iso rw,nosuid,nodev,noexec,relatime - udf /dev/loop0 ro,utf8
$ tail -1 /proc/self/mountstats
device /dev/loop0 mounted on /mnt/iso with fstype udf
Montaj işlemi herhangi bir dosya veya sürücü için işe yarayabilir ve yalnızca /tmp/UFS/drive
o dosyaya veya sürücü için aygıta sembolik bir bağlantı yapılmasını gerektirir . Elbette, sembolik bağlantı için, hiç değişmediği sürece, başka bir ad ve konum seçilebilir.
Dosyanın sökülmesi, aynı şekilde sembolik bağların uygun kullanımına dayanır. Bazı sabit disk sürücüsüne karşılık gelen normal bir aygıt durumunda, yalnızca aynı bağlantıları kullanın.
Bununla birlikte, bir dosya sisteminin görüntüsünü içeren dosyalar, dosyayı bağladığınızda otomatik olarak atanan, döngü cihazı adı verilen özel bir tür cihaz aracılığıyla monte edilir.
Dosyayı kaldırmak için, dosyaya değil döngü aygıtına başvurmanız gerekir. Bu nedenle , burada /etc/fstab
kullanılan döngü aygıtıyla ve /etc/mtab
burada /dev/loop0
bağlantı noktasıyla eşleşen bir girdiye ihtiyacınız var
/mnt/iso
.
Bu tür bir girişi önceden oluşturamazsınız, çünkü döngü cihazı dinamik olarak tahsis edildiğinden değişkendir. Sabit bir döngü cihazı kullanmanın da mümkün olduğunu, ancak başka şekillerde uygunsuz olduğunu unutmayın. Bkz
http://igurublog.wordpress.com/2011/01/22/how-to-allow-mounting-of-iso-files-by-a-regular-user/ ( bu blog aslında burada cevap ilham ).
Ancak, döngü aygıtının adını burada /dev/loop0
, sisteme sorarak, yukarıda birkaç farklı şekilde yaptığımız gibi bulabilirsiniz. Ardından standart /etc/fstab
girişimiz sembolik bağlantı üzerinden sağ döngü cihazına /tmp/UFS/drive
ve daha önce yapıldığı gibi bağlantı noktasına yönlendirilebilir /tmp/UFS/mountpoint
. Bu yapılırsa, dosya aşağıdaki komutlardan herhangi biriyle çıkarılabilir ( /etc/mtab
farklı bir sorun olmadığı için belirsizlik olmaması kaydıyla ):
$ umount /tmp/UFS/drive
$ umount /dev/loop0
$ umount /mnt/iso
$ umount /tmp/UFS/mountpoint
İki sembolik komutlar yalnızca komutlar verildiğinde gerekli olduğundan, dinamik olarak değiştirilebilirler. Böylece, tek /etc/fstab
girişimiz herhangi bir sayıda dosyayı birleştirme ve kök ayrıcalıklarına gerek kalmadan herhangi bir sırayla dosyalamaya izin verir.
Diğer referanslar:
mount
ikili SUID izin gerektirmiyor ardından kullanmak mümkün olmalıdır fakeroot sorunsuz.