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/fstabkö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/fstabGiriş 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 noexecikili dosyaların yürütülmesini önleyen veya nosuiddolayısıyla güvenliğe katkıda bulunan çeşitli seçenekler mevcuttur . Aslında, bu seçenekler, seçenekler kullanıldığında userveya userskullanı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/fstabgiriş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/fstabseçeneği içeren girişler oluşturmaktır userya usersda bir kullanıcı, mounteklenecek 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 usergenellikle dosya sistemini kuran kullanıcının usersiznini 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 .umountusersuser
İlk önce aşağıdaki /etc/fstabgibi bir girişe ekleyin :
/tmp/UFS/drive /tmp/UFS/mountpoint auto users,noauto, 0 0
ve /tmp/UFS/drivemonte 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/mountpointkullanmak istediğiniz bağlama noktasına bir bağlantı olarak da tanımlayabilirsiniz /mnt/iso.
Daha sonra john-image-file.isoaş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 loopaçı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/driveo 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/fstabkullanılan döngü aygıtıyla ve /etc/mtabburada /dev/loop0bağ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/fstabgirişimiz sembolik bağlantı üzerinden sağ döngü cihazına /tmp/UFS/driveve 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/mtabfarklı 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/fstabgiriş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:
mountikili SUID izin gerektirmiyor ardından kullanmak mümkün olmalıdır fakeroot sorunsuz.