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/shadow
veya /etc/sudoers
daha sonra su
veya ile root elde edebilir sudo
. Ya da muhtemelen mount --bind
bu iki dosyadan birinin üzerine bağla ( ). Veya içine yeni bir dosya /etc/sudoers.d
.
Benzer saldırılar /etc/pam.d
baş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. /media
Yalnı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_clone
varsayı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