Dystrybucja to serwer Ubuntu z jądrem Linux 2.6.35-30.
Chciałbym mieć katalog, który jest całkowicie w pamięci. Czy jest to możliwe bez uprawnień roota?
Dystrybucja to serwer Ubuntu z jądrem Linux 2.6.35-30.
Chciałbym mieć katalog, który jest całkowicie w pamięci. Czy jest to możliwe bez uprawnień roota?
Odpowiedzi:
Linux dostarcza urządzenie tmpfs które każdy użytkownik może korzystać, /dev/shm
. Domyślnie nie jest on montowany w określonym katalogu, ale nadal można go używać jako jednego.
Wystarczy utworzyć katalog w, /dev/shm
a następnie dowiązać symbolicznie do dowolnego miejsca. Możesz nadać utworzonemu katalogowi dowolne wybrane uprawnienia, aby inni użytkownicy nie mieli do niego dostępu.
Jest to urządzenie z pamięcią RAM, więc domyślnie jest to, co jest w pamięci. Możesz utworzyć dowolne katalogi, których potrzebujesz/dev/shm
Oczywiście umieszczone tutaj pliki nie przetrwają ponownego uruchomienia, a jeśli maszyna zacznie się zamieniać, /dev/shm
nie pomoże.
Równolegle do Solaris /dev/shm
jest /tmp
partycją typu „swap”, a także opartą na pamięci. Podobnie jak w przypadku /dev/shm
, dowolni użytkownicy mogą tworzyć pliki w /tmp
systemie Solaris.
OpenBSD ma również możliwość korzystania z montowania opartego na pamięci, ale domyślnie nie jest dostępne. Polecenie mount_mfs jest dostępne dla superużytkownika.
Nie jestem pewien co do innych * BSD.
/dev/tmpfs
w systemie (podobnie jak mój własny system z jądrem 3.0.0). Czy na pewno nie jest to coś stworzonego przez twoją dystrybucję?
/run
i być może /run/shm
muszę to zbadać przed zaktualizowaniem mojej odpowiedzi.
... w systemach z aktywną zamianą ! Szanse są bardzo duże, że Twój komputer ma włączony.
Istnieje lepsza, bezpieczna , standardowa alternatywa - ramfs
. Możesz użyć tej opcji, ramfs
jeśli planujesz używać miejsca z pamięcią RAM do tymczasowego przechowywania poufnych danych, takich jak klucze prywatne, portfele Bitcoin lub Ethereum i tym podobne.
ramfs
jest lepszy niż w tmpfs
przypadku bezpieczeństwa, ponieważ ramfs
dane nigdy nie są zamieniane (zapisywane na fizycznym dysku), ale tmpfs
mogą zostać zamienione. Strony trzecie mogą następnie sprawdzić przestrzeń wymiany i wyodrębnić poufne dane .
Możesz przygotować ramfs
mount, aby każdy nieuprzywilejowany użytkownik mógł zamontować / odmontować go na żądanie.
Aby to zrobić, trzeba będzie główny przywilej raz . Poproś administratora swojego systemu, aby skonfigurował to dla ciebie, jeśli nie masz uprawnień roota.
Najpierw musisz dodać linię do /etc/fstab
. Linia w fstab może wyglądać następująco:
none /mnt/ramfs ramfs noauto,user,size=1024M,mode=0770 0 0
/mnt/ramfs
to punkt montowania, w którym zostanie zamontowany system plików ramfs. Katalog powinien istnieć.noauto
opcja zapobiega automatycznemu montowaniu (np. podczas uruchamiania systemu).user
czyni to możliwym do zamontowania przez zwykłych użytkowników.size
ustawia rozmiar „ramdysku” (możesz użyć M
i G
tutaj).mode
jest bardzo ważne , ponieważ w kodzie ósemkowym 0770
tylko root i użytkownik, który zamontował ten system plików, będą mogli go czytać i zapisywać, a nie inne (możesz użyć innego kodu, który wybierzesz, ale bądź tego pewny! ).Gdy to zrobisz, każdy użytkownik będzie mógł zamontować to na żądanie.
Gdy jakiś użytkownik to zamontuje, nowy ramfs
system plików 1024 MB jest tworzony i montowany w /mnt/ramfs/
. Będzie własnością root:user
. Gdy on / ona odmontuje go lub system zostanie zrestartowany, ten system plików oparty na pamięci RAM zniknie wraz ze wszystkimi danymi. Co jest fajne.
Ponadto ten system plików może być zamontowany przez kilku użytkowników niezależnie, ale nie w tym samym czasie , tzn. Aby był gotowy do zamontowania przez następnego użytkownika, poprzedni użytkownik powinien odmontować ten system plików.
zamontować:
mount /mnt/ramfs/
odmontować:
umount /mnt/ramfs/
PS Jeśli próbujesz rsync
utworzyć pliki do katalogu głównego nowo zamontowanych / utworzonych ramfs jako użytkownik inny niż root, możesz napotkać rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]
błąd. Jest to całkowicie w porządku i oczekiwane, ponieważ użytkownik nie jest właścicielem katalogu głównego systemu plików RAM. Rozwiązanie jest proste, po prostu stwórz tam /mnt/ramfs/copied/
na przykład jakiś katalog i rsync
do niego.
Testy PPS na Debianie 9. Jestem pewien, że zadziała również na Ubuntu.
Twój system może mieć już dostępny; najnowsze systemy Linux oparte na Glibc zawsze mają zainstalowane tmpfs/dev/shm
.
Jeśli twój system nie ma go lub jest za mały, to system plików nie zamontowany przez root w zasadzie oznacza FUSE . W systemie Ubuntu musisz być w fuse
grupie, aby korzystać z FUSE. Przeglądając dostępne systemy plików FUSE , widzę tylko Ramfuse , który niestety jest porzucony.
Zasadniczo nie, systemy plików mogą być montowane tylko przez root. Jeśli pozwalasz użytkownikowi na dowolne umieszczanie systemów plików, to w zasadzie daje to rootowi. (Łatwy sposób: zamontuj jeden nad / etc, umieść tam własne hasło i cień, su z nowym hasłem roota, odinstaluj)
Jeśli chcesz tmpfs w określonej lokalizacji, możesz go dodać /etc/fstab
, z flagami, noauto,user
a następnie użytkownik będzie mógł go zamontować (ale nie jest szczególnie jasne, dlaczego nie chcesz go po prostu automatycznie montować)
Jeśli użytkownicy potrzebują dowolnych plików tmpfs, masz kilka opcji:
sudo
aby zezwolić użytkownikom na uruchomienie. Upewnij się, że nie pozwalasz użytkownikowi wybierać dowolnych ścieżek.