Дистрибутив представляет собой сервер Ubuntu с ядром Linux 2.6.35-30.
Я хотел бы иметь каталог, который полностью находится в памяти. Возможно ли это без прав root?
источник
Дистрибутив представляет собой сервер Ubuntu с ядром Linux 2.6.35-30.
Я хотел бы иметь каталог, который полностью находится в памяти. Возможно ли это без прав root?
Linux предоставляет устройство tmpfs, которое может использовать любой пользователь /dev/shm
. По умолчанию он не подключен к определенному каталогу, но вы все равно можете использовать его как один.
Просто создайте каталог, /dev/shm
а затем вставьте в него ссылку, где хотите. Вы можете дать созданному каталогу любые разрешения, которые вы выберете, чтобы другие пользователи не могли получить к нему доступ.
Это устройство с поддержкой оперативной памяти, так что то, что есть в памяти по умолчанию. Внутри вы можете создавать любые нужные вам каталоги/dev/shm
Естественно, файлы, размещенные здесь, не выживут после перезагрузки, и если ваша машина начнет обмениваться, /dev/shm
это вам не поможет.
Solaris параллелен тому /dev/shm
, /tmp
который является разделом типа «подкачки», а также основанным на памяти. Как и в случае /dev/shm
, произвольные пользователи могут создавать файлы в /tmp
Solaris.
OpenBSD также имеет возможность использовать монтирование на основе памяти, но по умолчанию его нет. Команда mount_mfs доступна суперпользователю.
Я не уверен насчет других * BSD.
/dev/tmpfs
в системе нет (как и моя собственная система с ядром 3.0.0). Вы уверены, что это не то, что создано вашим дистрибутивом?/run
и, возможно,/run/shm
необходимо продолжить расследование, прежде чем обновлять мой ответ./ dev / shm небезопасен
... в системах с активной заменой ! Скорее всего , очень высоко ваш компьютер должен быть включено.
Существует лучшая, безопасная , стандартная альтернатива
ramfs
. Возможно, вы захотите использовать это,ramfs
если планируете использовать пространство с оперативной памятью для временного хранения конфиденциальных данных, таких как закрытые ключи, кошельки Bitcoin или Ethereum и т. Д.ramfs
Это лучше, чемtmpfs
когда речь идет о безопасности, посколькуramfs
данные никогда не меняются местами (сохраняются на физический диск), аtmpfs
могут меняться. Затем третьи стороны могут проверить пространство подкачки и извлечь конфиденциальные данные .Решение
Вы можете подготовить
ramfs
монтирование, чтобы любой непривилегированный пользователь мог монтировать / размонтировать его по требованию.Для этого вам понадобятся привилегии root , один раз . Попросите администратора вашей системы настроить это для вас, если у вас нет привилегий root.
Сначала вам нужно добавить строку в
/etc/fstab
. Строка в fstab может выглядеть так:/mnt/ramfs
точка монтирования, где будет смонтирована файловая система ramfs Каталог должен существовать.noauto
Эта опция предотвращает автоматическое монтирование (например, при загрузке системы).user
делает это монтируемым обычными пользователями.size
устанавливает размер этого "ramdisk" (вы можете использоватьM
иG
здесь).mode
Это очень важно , поскольку восьмеричный код0770
только root и пользователь, который смонтировал эту файловую систему, сможет читать и писать в нее, а не другие (вы также можете использовать другой код по вашему выбору, но будьте уверены в этом! ).Когда это будет сделано, любой пользователь сможет смонтировать его по требованию.
После того, как это
ramfs
установит какой-либо пользователь, будет создана и смонтирована новая файловая система на 1024 МБ/mnt/ramfs/
. Это будет принадлежатьroot:user
. Как только он / она отключит его или система перезагрузится, эта файловая система на основе ОЗУ исчезнет со всеми своими данными. Что круто.Кроме того, эта файловая система может быть смонтирована несколькими пользователями независимо, но не одновременно , то есть, чтобы быть готовым к монтированию следующим пользователем, предыдущий пользователь должен отключить эту файловую систему.
установить:
размонтировать:
PS Если вы пытаетесь заархивировать
rsync
файлы в корневой каталог вновь смонтированных / созданных ramfs от имени пользователя без полномочий root, вы можете столкнуться сrsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]
ошибкой. Это вполне нормально и ожидаемо, потому что ваш пользователь не владеет корнем файловой системы оперативной памяти. Решение простое, просто создайте какой-нибудь каталог там,/mnt/ramfs/copied/
например, иrsync
в него.PPS протестирован на Debian 9. Я уверен, что он будет работать и на Ubuntu.
источник
Ваша система может уже иметь такую; В последних системах Linux, основанных на Glibc, всегда есть смонтированные tmpfs
/dev/shm
.Если в вашей системе его нет или он слишком мал, то файловая система, не смонтированная root, в значительной степени означает FUSE . В Ubuntu вы должны быть в
fuse
группе, чтобы использовать FUSE. Просматривая доступные файловые системы FUSE , я вижу только Ramfuse , который, к сожалению, заброшен.источник
В общем, нет, файловые системы могут быть смонтированы только пользователем root. Если вы разрешаете пользователю произвольно размещать файловые системы, это по сути дает им root. (Простой способ: смонтировать один над / etc, поместить туда свой собственный passwd и shadow, su с новым паролем root, который вы только что создали, размонтировать)
Если вы хотите tmpfs в определенном месте, вы можете добавить его
/etc/fstab
с флагамиnoauto,user
и тогда пользователь сможет его смонтировать (но не совсем понятно, почему вы не просто его смонтируете)Если пользователям нужны произвольные tmpfs, у вас есть пара вариантов:
sudo
чтобы позволить пользователям запускать его. Убедитесь, что вы не позволяете пользователю выбирать произвольные пути.источник