Bazıları çoğunlukla güvenli, bazıları olmayan, birkaç yaklaşım vardır.
Güvensiz yol
Herhangi bir kullanımın mountörneğin sudo aracılığıyla çalışmasına izin verin . Onlara kök verebilirsin; aynı şey. Kullanıcı bash, anında kök veren ( mountçalıştırılan gerçekliğin ötesinde herhangi bir günlüğe kaydetmeden büyük olasılıkla) günlük bir derinlikli kopya kopyası içeren bir dosya sistemini bağlayabilir .
Alternatif olarak, bir kullanıcı kendi dosya sistemini üstüne kurabilir /etc, kendi kopyasını içeren /etc/shadowveya /etc/sudoersdaha sonra suveya ile root elde edebilir sudo. Ya da muhtemelen mount --bindbu iki dosyadan birinin üzerine bağla ( ). Veya içine yeni bir dosya /etc/sudoers.d.
Benzer saldırılar /etc/pam.dbaşka yerlere de çekilebilirdi .
Dosya sistemlerinin bir cihazda bile olması gerekmediğini -o loop, kullanıcının sahip olduğu (ve dolayısıyla değiştirilebilen) bir dosyayı monte edeceğini unutmayın.
En güvenli yol: udisks veya benzeri
Çeşitli masaüstü ortamları, kullanıcıların çıkarılabilir medyayı monte etmelerini sağlamak için zaten buna çözümler üretti. /mediaYalnızca bir alt dizine monte ederek ve set seçenekleri / grup kimliği desteğini çekirdek seçenekleri aracılığıyla kapatarak çalışırlar . Burada Seçenekler şunlardır udisks, udisks2, pmount, usbmount,
Gerekirse, benzer bir şey yapmak için kendi betiğinizi yazabilir ve onu sudo aracılığıyla çağırabilirsiniz - ancak kök istismarlar bırakmamak için bu betiği yazarken çok dikkatli olmalısınız. Kullanıcılarınızın sudo'yu hatırlamalarını istemiyorsanız, bir komut dosyasında böyle bir şey yapabilirsiniz:
#!/bin/bash
if [ $UID -ne 0 ]; then # or `id -u`
exec sudo -- "$0" "$@"
fi
# rest of script goes here
Güvende olacak bir gün yol: kullanıcı ad alanları
Linux ad alanları, çok hafif bir sanallaştırma biçimidir (daha belirgin olmak üzere kapsayıcılar). Özellikle, kullanıcı ad alanları ile sistemdeki herhangi bir kullanıcı, kendi köklerini oluşturduğu kendi ortamını oluşturabilir. Bu, birkaç sanal dosya sistemi dışında açıkça engellenmiş olması dışında dosya sistemlerini monte etmelerini sağlar. Sonunda, FUSE dosya sistemlerine muhtemelen izin verilecek, ancak bulabildiğim en son yamalar blok cihazlarını, sadece sshfs gibi şeyleri kapsamıyor.
Ayrıca, birçok dağıtım çekirdeği (güvenlik nedeniyle) imtiyazsız kullanıcıların kullanıcı ad alanlarını kullanmalarına izin vermemek için varsayılanlara sahiptir; örneğin Debian , kernel.unprivileged_userns_clonevarsayılan olarak 0'dır. Diğer dağıtımlar, genellikle biraz farklı adlarla olsa da, benzer ayarlara sahiptir.
Kullanıcı ad alanları hakkında bildiğim en iyi dokümantasyon işlemdeki
Ad Alanları adlı bir LWN makalesidir , bölüm 5: Kullanıcı ad alanları .
Şimdilik udisks2 ile giderdim.
gvfs-mount-d /dev/sdX