Відповіді:
Linux забезпечує пристрій TMPFS , який може використовувати будь-який користувач, /dev/shm
. За замовчуванням він не встановлений у певному каталозі, але ви все одно можете використовувати його як один.
Просто створіть каталог у, /dev/shm
а потім позначте його там, де вам потрібно. Ви можете надати створеному каталогу будь-які обрані вами дозволи, щоб інші користувачі не мали доступу до нього.
Це пристрій з підтримкою оперативної пам’яті, тому те, що є в пам'яті за замовчуванням. Ви можете створювати все необхідні вам каталоги всередині/dev/shm
Звичайно, розміщені тут файли не переживуть перезавантаження, і якщо ваша машина почне мінятися, вам /dev/shm
це не допоможе.
Паралель Solaris /dev/shm
- /tmp
це розділ типу "swap", а також заснований на пам'яті. Як і у випадку /dev/shm
, довільні користувачі можуть створювати файли в /tmp
Solaris.
OpenBSD також має можливість використовувати кріплення на основі пам'яті, але за замовчуванням не має такого. Команда mount_mfs доступна для суперкористувача.
Я не впевнений в інших * BSD.
/dev/tmpfs
системі немає (як і моя власна система, яка має ядро 3.0.0). Ви впевнені, що це не щось створене вашим розповсюдженням?
/run
і, можливо, /run/shm
потрібно вивчити далі перед оновленням моєї відповіді.
... у системах з активним свопом ! Швидше за все , дуже високо ваш комп'ютер повинен бути включено.
Є краща, безпечна , стандартна альтернатива - ramfs
. Ви можете скористатися, ramfs
якщо плануєте використовувати захищений оперативною пам’яттю простір для тимчасового зберігання конфіденційних даних, таких як приватні ключі, гаманці Bitcoin або Ethereum тощо.
ramfs
є кращим, ніж tmpfs
коли йдеться про безпеку, оскільки ramfs
дані ніколи не змінюються (зберігаються на фізичному накопичувачі), в той час як tmpfs
можуть бути замінені. Потім треті сторони можуть перевірити простір обміну і витягнути конфіденційні дані .
Ви можете підготувати ramfs
монтаж, щоб будь-який непривілейований користувач міг змонтувати / відключити його на вимогу.
Для цього вам знадобиться коренева привілей, один раз . Попросіть адміністратора вашої системи встановити це для вас, якщо вам не вистачає привілеїв root.
Спочатку потрібно додати рядок до /etc/fstab
. Рядок у fstab може виглядати так:
none /mnt/ramfs ramfs noauto,user,size=1024M,mode=0770 0 0
/mnt/ramfs
є точкою монтажу, де буде змонтована файлова система ramfs. Каталог повинен існувати.noauto
опція запобігає автоматичному монтажу (наприклад, при завантаженні системи).user
робить це встановити постійними користувачами.size
встановлює цей розмір "ramdisk" (можна використовувати M
і G
тут).mode
є дуже важливою , з восьмеричним кодом 0770
тільки кореневої і користувачем, який змонтований цієї файлової системою, матиме можливість читати і писати до нього, а не іншим (ви можете використовувати інший код за вашим вибором , а також, але бути дуже впевнений в цьому! ).Коли це буде зроблено, будь-який користувач зможе встановити це на вимогу.
Після того, як якийсь користувач змонтує це, ramfs
створена та встановлена нова файлова система 1024 Мб /mnt/ramfs/
. Він буде належати root:user
. Після того як він / вона відключить його або перезавантажиться система, ця файлова система на основі ОЗУ зникне з усіма своїми даними. Що класно.
Також цю файлову систему можна монтувати декількома користувачами незалежно, але не одночасно , тобто, щоб бути готовим до монтажу наступним користувачем, попередній користувач повинен відключити цю файлову систему.
для монтажу:
mount /mnt/ramfs/
демонтувати:
umount /mnt/ramfs/
PS Якщо ви намагаєтесь подати rsync
файли до кореня нещодавно змонтованого / створеного ramfs як некорінного користувача, ви можете зіткнутися з rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]
помилкою. Це абсолютно добре і очікувано, оскільки ваш користувач не має корінь файлової системи RAM. Рішення просте, просто створіть там якийсь каталог, /mnt/ramfs/copied/
наприклад, і rsync
в нього.
PPS Тестовано на Debian 9. Досить впевнений, що він буде працювати і на Ubuntu.
У вашій системі може бути вже наявна; останні системи Linux на базі Glibc завжди мають змонтований tmpfs/dev/shm
.
Якщо у вашій системі немає такої або вона занадто мала, то файлова система, яка не змонтована кореневим файлом, в значній мірі означає ФУЗИ . Для Ubuntu вам потрібно бути в fuse
групі, щоб використовувати FUSE. Переглядаючи доступні файлові системи FUSE , я бачу лише Ramfuse , який, на жаль, покинутий вгору за течією.
Взагалі, ні, файлові системи можуть бути змонтовані тільки під корінь. Якщо ви дозволяєте користувачеві розміщувати файлові системи довільно, це по суті дає їм корінь. (Простий спосіб: встановити один над / і т.д., покласти туди свій власний пароль та тінь, відповідно до нового пароля, який ви тільки що створили, відключити)
Якщо ви хочете, щоб tmpfs у певному місці ви могли додати його до /etc/fstab
прапорів, noauto,user
а потім користувач зможе його встановити (але не особливо зрозуміло, чому ви не просто встановите його автоматично)
Якщо користувачі потребують довільних tmpfs, у вас є пара варіантів:
sudo
щоб дозволити користувачам запускати його. Переконайтеся, що ви не дозволяєте користувачеві вибирати довільні шляхи.