Mount neden root ayrıcalıkları gerektiriyor?


54

Linux neden bir kullanıcının bir şeyleri monte etmek için sudo / özellikle mount başına özel olarak yetkilendirilmesini / kullanılmasını gerektirir? Bir kullanıcının bir şeyi monte etmesine izin verilip verilmeyeceği kararı, kaynak birime / ağ paylaşımına ve bağlama noktasına erişim haklarına dayalı olmalıdır. Kök olmayan montaj için birkaç kullanım, dosya sistemi görüntülerini bir kullanıcıya ait bir yöne monte etmek ve bir ağ paylaşımını bir kullanıcı dizinine bağlamaktır. Kullanıcı, montaj denkleminin her iki tarafında da kontrolü elinde tutuyorsa, her şey yolunda olmalı.

Erişim kısıtlamasının açıklanması:

Kullanıcının sahip olduğu bir bağlama noktasına erişebileceği herhangi bir şeyi bağlayabileceğimi hissediyorum.

Örneğin, bilgisayarımda / dev / sda1, kullanıcı köküne ve izinleri olan grup diske aittir brw-rw----. Bu nedenle kök olmayan kullanıcılar / dev / sda1 ile uğraşamazlar ve açıkça mount, bağlamalarına izin vermemelidir. Bununla birlikte, eğer kullanıcı /home/my_user/my_imagefile.img ve mount point / home / my_user / my_image / sahipse, neden bu görüntü dosyasını bu mount noktasına monte edemesinler?

mount /home/my_user/my_imagefile.img /home/my_user/my_image/ -o loop

Kormac'ın belirttiği gibi bir intihar sorunu var. Bu nedenle, bir problemin yanı sıra potansiyel olarak başka bazı meselelerin önlenmesi için bazı kısıtlamaların eklenmesi gerekecektir. Belki de bunu yapmanın bir yolu, işletim sisteminin tüm dosyaları montajı yapan kullanıcıya ait olarak ele almasıdır. Ancak basit okuma / yazma / yürütme için bunun neden bir sorun olacağını anlamıyorum.

Kullanım durumda:

Ev alanımın 8GB ile sınırlı olduğu bir laboratuarda bir hesabım var. Bu küçük ve çok çok sinir bozucu. Aslında sahip olduğum oda miktarını artırmak için kişisel sunucumdan bir nfs birimi bağlamak istiyorum. Bununla birlikte, Linux böyle şeylere izin vermediğinden, 8 GB sınırının altında kalmak için dosyaları tekrar tekrar kapatıyorum.


4
Sorun olarak "linux böyle şeyler izin vermez" o kadar fazla değil gibi geliyor size laboratuarından böyle şeyler yapmak için izin verilmez sistem bunu yapmak için izin verecek şekilde yapılandırılmış olabilir, çünkü. Bu konuyu sistemi yöneten insanlarla tartışabilirsiniz; eğer arkadaş canlısı değillerse, o zaman politika değil, bilgisayarlar hakkında değil;)
goldilocks

Kişinin normal erişime sahip olduğu isteğe bağlı bağlama noktalarını monte etmek mümkün mü? Yöneticinin izin vermek için nfs mount'um için fstab'a açık bir satır eklemesi gerekecek gibi görünüyor. Buna karşılık, bunun muhtemel, anlayabileceğim, anlayamayacağımı düşündüğüm herkes için yapmaları gereken bir emsal teşkil edecek. Bu nedenle, neden Linux'un güvenli olacaklarını keyfi bir şekilde monte etmenize izin vermediği sorgusu (bazı kısıtlı şekilde).
CrazyCasta

10
Denedin sshfsmi sshRoot erişimine ihtiyaç duymadan, kendiniz aracılığıyla uzaktaki bir dizini bağlar. Yüklenmesi için sadece FUSE (UserSpacE'deki Dosya Sistemi) gereklidir.
Arcege,

1
Kötü bir sabit disk sorununu duydunuz, vb. Öyleyse, bunu birkaç kez söylediğimi biliyorum, ancak felsefe "keyfi şeyleri monte etmenin" güvenli olamayacağı ve bu yüzden de böyle ayarlandığı (özel istisnalar düzenlenmeli). BTW, FUSE ürününüz yoksa, sftpkullanmaktan biraz daha hoş scp.
goldilocks

1
Bu daha önce burada sorulmuştu (bir varyasyonu) gibi görünüyor: Kök izni olmayan bir döngü dosyası bağla?
Daniel Pryden

Yanıtlar:


37

Hem tarihi hem de güvenlik kısıtlaması.

Tarihsel olarak, çoğu sürücü çıkarılabilir değildi. Bu nedenle, meşru fiziksel erişimi olan insanlara yapılan montajı kısıtlamak mantıklıydı ve muhtemelen kök hesaba erişimi olacaktı. Fstab girişleri, yöneticilerin çıkarılabilir sürücüler için montajı diğer kullanıcılara devretmesine izin verir.

Güvenlik açısından, keyfi kullanıcıların rasgele blok aygıtlarını veya dosya sistemi görüntülerini keyfi konumlara monte etmelerine izin vermenin üç ana sorunu vardır.

  • Sahip olmayan bir yere montaj, bu konumdaki dosyaları gölgelendirir. Örneğin: sayfasındaki istediğiniz bir mount /etcbir ile, /etc/shadowbildiğiniz bir kök şifresini içeren. Bu, bir kullanıcının yalnızca sahip olduğu bir dizine bir dosya sistemi bağlamasına izin vererek giderilir.
  • Dosya sistemi sürücüleri genellikle hatalı biçimlendirilmiş dosya sistemiyle tam olarak test edilmemiştir. Bir hatalı dosya sistemi sürücüsü, hatalı biçimlendirilmiş bir dosya sistemi sağlayan bir kullanıcının çekirdeğe kod enjekte etmesine izin verebilir.
  • Bir dosya sistemini monte etmek, mounter'ın bazı dosyaların oluşturma iznine sahip olmayacak gibi görünmesine neden olmasına izin verebilir. Setuid çalıştırılabilir ve cihaz dosyaları en belirgin örnekleridir ve bunlar tarafından sabitlenir nosuidve nodevsahip ima edilen seçenekler useriçinde /etc/fstab.
    Şimdiye kadar userne zaman zorlayıcımountroot tarafından aranmaz. Ancak daha genel olarak başka bir kullanıcının sahip olduğu bir dosya oluşturabilmek problemlidir: Bu dosyanın içeriği, bağdaştırıcı yerine sahip olunan mal sahibi tarafından atfedilme riskini taşır. Kökten farklı bir dosya sistemine yapılan geçici bir niteliği koruyan kopya, bildirilen ancak açılmayan sahibinin sahip olduğu bir dosya oluşturur. Bazı programlar, bir dosyayı kullanma isteğinin, dosyanın belirli bir kullanıcıya ait olduğunu kontrol ederek meşru olup olmadığını kontrol eder ve bu artık güvenli olmaz (program ayrıca erişim yolundaki dizinlerin bu kullanıcıya ait olup olmadığını kontrol etmelidir; isteğe bağlı montaj izin verilirse, bu dizinlerin hiçbirinin montajın ne kök ne de istenen kullanıcı tarafından yaratılmadığı bir montaj noktası olmadığını da kontrol etmeleri gerekirdi.

Pratik amaçlar için, günümüzde FUSE aracılığıyla kök olmadan bir dosya sistemi kurmak mümkündür . FUSE sürücüleri montaj kullanıcısı olarak çalışır, bu nedenle çekirdek kodunda bir hatadan yararlanarak ayrıcalık yükseltme riski yoktur. FUSE dosya sistemleri, yalnızca yukarıdaki son sayıyı çözen kullanıcının yaratma iznine sahip olduğu dosyaları gösterebilir.


24

Bir kullanıcı bir engelleme aygıtına doğrudan yazma erişimine sahipse ve bu engelleme aygıtını bağlayabilirse, engelleme aygıtına çalıştırılabilir bir suid yazabilir, monte edebilir ve bu dosyayı çalıştırabilir ve böylece sisteme kök erişimi sağlayabilir. Bu nedenle montaj normalde kök ile sınırlıdır.

Şimdi root, normal kullanıcıların belirli kısıtlamalarla monte etmesine izin verebilir, ancak kullanıcının blok cihaza yazma erişimi varsa, montajın intihara meyilli olmadığından ve benzer bir problemi olan aygıtların (kullanıcı tarafından oluşturulabildiğinden) emin olmaları gerekir. Yazma erişimi olmayan, önemli bir aygıta yazma erişimi sağlayan bir aygıt.


8

Her zaman süper ayrıcalıklar gerektirmez. itibarenman mount

   The non-superuser mounts.
          Normally,  only  the  superuser can mount filesystems.  However,
          when fstab contains the user option on a line, anybody can mount
          the corresponding system.

          Thus, given a line

                 /dev/cdrom  /cd  iso9660  ro,user,noauto,unhide

          any  user  can  mount  the iso9660 filesystem found on his CDROM
          using the command

                 mount /dev/cdrom

          or

                 mount /cd

          For more details, see fstab(5).  Only the user  that  mounted  a
          filesystem  can unmount it again.  If any user should be able to
          unmount, then use users instead of user in the fstab line.   The
          owner option is similar to the user option, with the restriction
          that the user must be the owner of the special file. This may be
          useful e.g. for /dev/fd if a login script makes the console user
          owner of this device.  The group option  is  similar,  with  the
          restriction  that  the  user  must be member of the group of the
          special file.

Evet, haklısınız, sorumu biraz kesinti. Özel olarak, montaj bazında izin verilebileceğinin farkındayım. Ancak, bağlama noktası ve birimin her ikisi de kullanıcıya aitse, kullanıcının belirli bir yetkilendirme olmadan bağlanabilmesi gerektiği anlaşılıyor.

3
@CrazyCasta: bağlama noktası kullanıcıya ait olabilir, ancak cihaz düğümü değil. Mülkiyetin, vb bölümdeki verilerde ne olduğunu a) bilinmeyen, b) anlamsız.
goldilocks

Peki ya cihaz düğümü kullanıcıya aitse.
CrazyCasta

Öyleyse, fstab'da yapılan paralel bir istisna olmalı, çünkü bir kullanıcı cihaz düğümüyle başlamak için istisnai olacaktı (dene ve oluştur). Yine, ilke, güvenli bir sistemin kısıtlanması ve insanlara imtiyaz verilmesidir. Bakın, * nix tezgahın üzerinde yüksek kapasiteli dergiler satmıyor - izne ihtiyacınız var
goldilocks

Açık olmak gerekirse, mount()sistem çağrısı her zaman kök gerektirir. suid yardımcı programları root olabilir ve root dışı kullanıcıların bağlanmasına izin verebilir ve eğer mountkomut suid kuruluysa, bunu fstab'daki kullanıcı bayrağına göre yapacaktır. pmountKullanıcıların harici medyayı monte etmelerine olanak tanıyan ve nosuid, nodev gibi uygun kısıtlamaları uygulayan kullanıcıların takılmasına izin vermek için diğer suid çalıştırılabilir dosyaları yazılmıştır .
psusi

5

Kormac ve diğerleri bunun sizin sunduğunuz ikilem olmadığını; Bana öyle geliyor ki bu, tüm kullanıcıların bir dosya sistemi kurmak için değiştirilemez haklara sahip olacakları bir sisteme karşı kullanıcılara imtiyazlara açıkça izin verme felsefesine bağlı .

Gilles, dosya sistemlerini bağlamakla ilişkili bazı güvenlik sorunlarını giderir. Bununla ilgili potansiyel teknik konularla ilgili progresif ve somut bir tartışmadan geriye dönük olarak kaçınacağım (yorumlara bakın) ancak güvenilmeyen kullanıcıların sabit disk sürücülerini takma konusunda değişmez bir hakka sahip olmalarının adil olmadığını düşünüyorum.

Sanal ve uzak dosya sistemleri (ya da sanal dosya sistemleri üzerinden uzak dosya sistemleri, la FUSE) ile ilgili sorun daha az önemlidir, ancak bu güvenlik sorusunu çözmez (FUSE olsa da ve kesinlikle sorununuzu çözer). Ayrıca, bu tür dosya sistemlerinde yer alan verilere, bir aygıtı monte etmeye gerek kalmadan, dosya aktarımı veya montajsız görüntülerden elde edilen araçlar aracılığıyla hemen hemen her zaman erişilebildiğini göz önünde bulundurmak önemlidir; Bir görüntü dosyasına tuhaf bir şekilde yerleştirdiğiniz veya daha anlaşılır bir şekilde uzak bir sistemden almak istediğiniz verilere erişim konusunda aşılmaz bir sorunu temsil etmeyin. Durumun böyle olmadığı bir durum varsa, şunu sormaya değebilir:

  1. Tam olarak ne yapmaya çalışıyorum?

  2. Nerede yapmaya çalışıyorum?

Sistemin yönetimi adil ise, # 2 neden 1'in sizin için imkansız olduğunu açıklar. Sistemin yönetimi adil değilse, bu politikadır . "Sistem yöneticim adil değil" sorununa çözüm, işletim sistemini yeniden tasarlamamaktır, böylece sys yöneticileri her yerde kullanıcıları kısıtlayamaz.

Sistem, süper kullanıcının, etkinliklerinizi açıkça veya ihmal ederek kısıtlamasını sağlar ("SİGORTA sağlamıyoruz", vb.). Ayrıcalıklar, bunun yerine getirilmesinde bir mekanizmadır. "Bunu yapmana gerek yok" denmesi hoş olmayabilir, ama doğruysa ... que sera ... bunu yapmana gerek yok. Ftp, vb kullanın. Doğru değilse, sorumlu olanları rahatsız etmelisiniz.


Cevabınız kafa karıştırıcı, cildin kendisi (örneğin / dev / sda1, / dev / sda2, vb.) Kullanıcıları okuyup / yazarak korunmuyor mu? Bir kullanıcının neden başka türlü erişebileceği bir şeyi bağlayamadığını merak ediyorum. Netleştirmek için, ext2 diyen bir resim dosyasına sahipsem, bahsedilen resmi okuma / yazma / bana izin veren bir uygulama yazabilirim (işletim sisteminin dosya sisteminin bir parçası olarak değil). Bahsedilen uygulama / dev içindeki bölümlerden okuma / yazma yapamaz (bu bölümler, kullanıcının kendilerine erişimine izin verecek şekilde değiştirilmediği sürece, genellikle anlam ifade etmemektedir).
CrazyCasta

PS Kullanıcıların, belirli bir yetkilendirme olmadan erişemeyecekleri bir dosya sistemini, sadece birleştirme eyleminin potansiyel olarak bu türün istemediği bir çeşit eyleme (dosya sistemi denetimi gibi) neden olabileceği için bağlayabilmeleri gerektiği konusunda hemfikir değilim.
CrazyCasta

Bir görüntünün montajı hala cihaz düğümlerini içerir (örneğin, / dev / loop). Bunun bir güçlük yaratması konusunda haklısınız, ancak bunun için “düzenlemeler yapmak” sistemden sisteme (bir şey için sonlu döngü cihazlarının tedariki var) var, o yüzden yine de varsayılan olarak her şey kısıtlı. Ancak, bu varsayılan, başka bir kişi adına, süper kullanıcı tarafından hala geçersiz kılınabilir.
goldilocks

Geri döngü cihaz düğümlerinin sınırı hakkında iyi bir nokta. Neden bir geridönüş aygıtı olması gerektiğine gerçekten karar veremiyorum, biraz gereksiz görünüyor. Bunun nedeni, montajın normal bir dosya yerine blok şeklinde bir dosya gerektirmesidir. Bunun neden böyle olduğunu anlamıyorum. Çekirdek blok aygıtlarına ve normal dosyalara önemli ölçüde farklı davranıyor gibi herhangi bir fikir verebilir misiniz?
CrazyCasta

1
@goldilocks: Bu cevabın bollock olmasının sebebi, kısıtlamanın ardındaki teorinizin çok ikna edici olmasıdır, ancak atıfta bulunduğunuz konu mevcut değil, tamamen yanlış. Sanal bir dosya sistemi (FUSE gibi) oluşturulmasına izin vermek, IPC kullanarak daha dolambaçlı bir şekilde mümkün olmayan hiçbir şey yapmanıza izin vermez. Cihazlardaki kesintilerle ilgili notunuz tamamen alakasızdır; Uzak dosya sistemi için meydana gelen tek önemli kesinti, tamamen çekirdek tarafından ele alınan ağ kartından geliyor.
Yalan Ryan

5

Bilginize: En yeni çekirdeğin "ad alanı" desteği vardır. Sıradan kullanıcılar bir ad alanı oluşturabilir ve bu ad alanı içinde root mount dosya sistemleri gibi eğlenceli şeyler olabilir ve bunları yapabilir.

Ancak size "gerçek" süper kullanıcı izinleri vermez - yalnızca yapmanıza izin verilenleri yapabilirsiniz (yani, yalnızca önceden okuyabileceğiniz aygıtları bağlayabilirsiniz).

http://lwn.net/Articles/531114/ Bkz. bölüm 4.


İsim alanları bundan daha sınırlıdır. rootBir kullanıcı ad alanının içinde görünebilir , ancak blok aygıtını okuyup yazabiliyor olsanız bile normal dosya sistemi türlerini eklemenize izin vermez. Buradaki deney 2'ye bakın: unix.stackexchange.com/questions/517317/…
sourcejedi

0

Zira dosya sistemindeki veriler, monte etmek istedikleri, sunucunun güvenliğini tehlikeye atabilir veya hatta çökertebilir (bilerek yapılmışsa).


Ayrıntılı misiniz? "Bağlamak istedikleri dosya sistemindeki verilerin" güvenliği nasıl tehlikeye sokacağından emin değilim. Eğer dosyayı normal olarak okuyabilir / yazabilirseniz, onu bağlayabilmelisiniz (benim argümanım). Bir bağlama noktası okuyabilir / yazabilirsem, onu gerçekten bir dizine eklemek dışında, her şeyi yapabilmeliyim. Okuyamıyor / yazamıyorsanız veya varsa dizini göremiyorsanız mount bir ls veya cat type komutunun yaptığı gibi başarısız olur.

Tek kullanıcılıysanız, argüman geçerlidir; Linux (ve Unix) 'in kullanıcıların mutlaka güvenilmeyeceği çok kullanıcılı sistemler olduğunu unutmayın.
sendmoreinfo

suid ikili dosyaları bir cihaza eklenebilir, kutunuza monte edilebilir ve bir kutunun kökünü oluşturmak için kullanılabilir, bu yüzden varsayılan olarak ayarlanmış ownerve user(s)ayarlanmıştır nosuid. Birisinin nosuid
RS

@sendmoreinfo Linux'un çok kullanıcılı bir sistem olduğunun farkındayım, patronlaştırmaya gerek yok. Neden ağ erişimimi ve başka türlü erişime sahip olduğumu gösteren resim dosyalarını bağlamakla sınırlandırıldığımı merak ediyorum. kormoc'un yanıtı aydınlatıcı olsa da, bazı bayrakların neden kök olmayan kullanıcılar (nosuid gibi) bunu düzeltmeye zorlamadığını merak ediyorum. Sanırım sahip olduğum bir bağlama noktasına erişebildiğim bir görüntü dosyasını / ağ paylaşımını basit okuma / yazma amacıyla bağlayabilmem gerekiyor gibi görünüyor.
CrazyCasta

1
@CrazyCasta WRT "sistemin çökmesine neden oluyor", donanım arayüzündeki güvenlik açıklarından yararlanan hatalı donanımların takılması kesinlikle mümkündür. Üzerinde yeterince bozuk blok bulunan bir sabit diski olan herkes, çekirdeği (ve dolayısıyla tüm sistemi) nasıl etkileyebileceğini size söyleyebilir - yoğun bir döngüye girer ve tüm takımı ve kaboodle'ı etkili bir şekilde felç eder. Kökünde çözülmeyi imkansız kılan bir mantık var, çünkü uzun zamandır çözümü olmayan, iyi bilinen bir mesele.
goldilock

0

GNOME'da, gvfs uzak dosya sistemini (ftp veya ssh) monte etmek için kök gerektirmez ve gnome-mount ayrıca harici depolamayı (usb sürücü, CD / DVD, vb.) Monte etmek için kök gerektirmez.

Çoğu sistem muhtemelen sadece bazı uzaktan montajlar için GNOME'un tamamına sahip olmak istemez, o zaman luf , sshfs veya ftpfs kullanabilirsiniz .

gvfs, lufs, sshfs ve ftpfs, kök olmayan kullanıcıların sanal dosya sistemini bağlamasına izin vermek için FUSE kullanır; ve mount'lerin aksine -o user, FUSE, sysadmin'in belirli mount'lar düzenlemesini gerektirmez. Mount dizini ve dosya sistemini oluşturmak için gereken her türlü kaynak için ayrıcalıkınız olduğu sürece, FUSE mount oluşturabilirsiniz.

Mount neden root ayrıcalıkları gerektiriyor?

Çünkü mountöncelikle / başlangıçta neredeyse her zaman bir donanım içeren yerel dosya sistemi için tasarlanmıştır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.