(Nasıl) normal (root olmayan) bir kullanıcı olarak bir tmpfs oluşturabilir miyim?


39

Dağıtım 2.6.35-30 Linux çekirdeğini çalıştıran bir Ubuntu sunucusudur.

Tamamen hafızada oturan bir dizine sahip olmak istiyorum. Kök ayrıcalıkları olmadan bu mümkün mü?

Yanıtlar:


49

Linux, herhangi bir kullanıcının kullanabileceği bir tmpfs cihazı sağlar /dev/shm. Varsayılan olarak belirli bir dizine bağlı değildir, ancak yine de onu tek olarak kullanabilirsiniz.

Sadece bir dizin oluşturun /dev/shmve istediğiniz yere işaretleyin. Oluşturulan dizine seçtiğiniz izinleri verebilirsiniz, böylece diğer kullanıcılar erişemez.

Bu RAM destekli bir cihazdır, yani varsayılan olarak bellekte ne var. İhtiyacınız olan tüm dizinleri oluşturabilirsiniz/dev/shm

Doğal olarak, buraya yerleştirilen dosyalar yeniden başlatmaya dayanamaz ve makineniz değişmeye başlarsa /dev/shmsize yardımcı olmaz.

Solaris paralel /dev/shmIS /tmpbazlı bir "değiştirilebilir" tipi bölüm, ve aynı zamanda, bellek olan. Olduğu gibi /dev/shm, keyfi kullanıcılar /tmpSolaris'te dosya oluşturabilir .

OpenBSD, bellek tabanlı bir montaj da kullanabiliyor, ancak varsayılan olarak kullanılamaz. Mount_mfs komutu süper kullanıcı tarafından kullanılabilir.

Diğer BSD'ler hakkında emin değilim.


1
Bir sembolik bağı çözebiliriz nerede sorunu.
enzotib

D'oh ... sinir bozucu ufak bağları unuttum.
gabe.

@enzotib çözdü!
gabe.

Sistemde bir şey yok gibi görünüyor /dev/tmpfs(3.0.0 çekirdeğine sahip kendi sistemim de yok). Dağıtımın yarattığı bir şey olmadığından emin misin?
bit maskesi

1
Bu durumun başkaları için de geçerli olup olmadığından emin değilim, ancak ubuntu'nun şu anki sürümünde bu, cevabımı güncellemeden önce değiştirilmiş /runve muhtemelen /run/shmdaha fazla araştırmaya ihtiyaç duyuyor gibi görünüyor .
gabe.

14

/ dev / shm güvensizdir

... aktif takaslı sistemlerde ! Şanslar çok yüksek , bilgisayarınızda etkin.

Daha iyi, güvenli , standart bir alternatif var - ramfs. Özel anahtarlar, Bitcoin veya Ethereum cüzdanlar gibi geçici olarak hassas verileri saklamak ramfsiçin RAM destekli alan kullanmayı planlıyorsanız kullanmak isteyebilirsiniz .

ramfsdaha iyidir tmpfs, çünkü güvenlik söz konusu olduğunda ramfsveri asla ederken takas olur, (fiziksel bir depolama sürücüsüne kaydedilen) tmpfs olabilir değiştirilecek. Üçüncü taraflar daha sonra takas alanını inceleyebilir ve hassas verileri çıkarabilir .

Çözüm

ramfsMount'ı hazırlayabilirsiniz, böylece ayrıcalıklı olmayan herhangi bir kullanıcı isteğe bağlı olarak monte edebilir / çıkarabilir.

Bunu yapmak için , bir kez kök ayrıcalığına ihtiyacınız olacak . Kök ayrıcalıklarınız yoksa, sistem yöneticinizden bunu sizin için ayarlamasını isteyin.

İlk başta, için bir satır eklemeniz gerekir /etc/fstab. Fstab içindeki satır şöyle görünebilir:

none    /mnt/ramfs    ramfs    noauto,user,size=1024M,mode=0770    0    0
  • /mnt/ramfsramfs dosya sisteminin monte edileceği bir montaj noktasıdır. Dizin mevcut olmalı.
  • noauto seçenek, bunun otomatik olarak monte edilmesini önler (örneğin, sistemin açılışında).
  • user Bu, düzenli kullanıcılar tarafından monte edilebilir hale getirir.
  • sizebu "ramdisk's" boyutunu ayarlar ( burada Mve Gburada kullanabilirsiniz ).
  • modeolduğu çok önemli sekizlik kodla, 0770bu dosya sistemini yalnızca kök ve kullanıcı, bunun için okuma ve yazma mümkün olacak diğerlerini (siz de seçtiğiniz farklı bir kod kullanın, ancak bu konuda çok emin olabilir! ).

Bu yapıldığında, herhangi bir kullanıcı talep üzerine bunu monte edebilecektir.

Bazı kullanıcılar bunu bağladıktan sonra, yeni 1024 MB ramfsdosya sistemi oluşturuldu ve bağlandı /mnt/ramfs/. O sahip olacak root:user. Çıkardıktan sonra veya sistem yeniden başlatıldığında, RAM tabanlı bu dosya sistemi tüm verileri ile kaybolacaktır . Hangisi havalı.

Ayrıca, bu dosya sistemi birkaç kullanıcı tarafından bağımsız olarak monte edilebilir, ancak aynı anda değil , yani bir sonraki kullanıcı tarafından kuruluma hazır olmak için önceki kullanıcının bu dosya sistemini çıkarması gerekir.

monte etmek için:

mount /mnt/ramfs/

kaldırmak için:

umount /mnt/ramfs/

Not rsyncYeni takılan / oluşturulan ramfs dosyalarının kök olmayan bir kullanıcı olarak dosyalarına çalışıyorsanız , bir rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]hatayla karşılaşabilirsiniz. Bu tamamen iyi ve beklenen bir durumdur, çünkü kullanıcınız ram dosya sisteminin kökenine sahip değildir. Çözüm basittir, sadece orada bir dizin oluşturun, /mnt/ramfs/copied/örneğin ve rsynciçine.

PPS Debian'da Test Edildi 9. Ubuntu'da da çalışacağından eminim.



5

Genel olarak, hayır, dosya sistemleri sadece root tarafından monte edilebilir. Bir kullanıcının dosya sistemlerini keyfi bir şekilde yerleştirmesine izin verirseniz, bu temel olarak onlara kök sağlar. (Kolay yol: bir tane / etc üstünü yerleştirin, kendi şifrenizi ve gölgenizi buraya yerleştirin, az önce oluşturduğunuz yeni root şifresiyle birlikte kaldırın)

Eğer belirli bir yerde bir tmpfs istiyorsan /etc/fstab, bayraklarını kullanarak onu ekleyebilirsin noauto,userve sonra bir kullanıcı onu bağlayabilecekti.

Kullanıcıların keyfi tmpfs'lara ihtiyacı varsa, birkaç seçeneğiniz vardır:

  • bir tmpf'nin alt dizinlerini kullanın. Muhtemelen en iyi yaklaşım. Muhtemelen birden fazla TMPF'ye ihtiyacınız yoktur.
  • Bir dizin yaratacak ve üzerine bir tmpfs monte edecek bir komut dosyası oluşturun ve ardından nereye koyduğunu yazdırın. sudoKullanıcıların çalıştırmasına izin vermek için kullanın . Emin emin olun değil kullanıcı keyfi yolları seçmenize olanak tanı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.