Различия между символической ссылкой на / tmp и tmpfs

767
Mark

Я пытаюсь сделать файловую систему только для чтения (Raspbian). Одним из распространенных способов является размещение некоторого каталога (который должен быть доступен для записи) в tmpfs.

Например, я нашел несколько уроков, которые предлагают:

rm -rf /var/lib/dhcp/ /var/run /var/spool /var/lock ln -s /tmp /var/lib/dhcp ln -s /tmp /var/run ln -s /tmp /var/spool ln -s /tmp /var/lock 

и в /etc/fstab:

tmpfs /tmp tmpfs nosuid,nodev 0 0 tmpfs /var/log tmpfs nosuid,nodev 0 0 tmpfs /var/tmp tmpfs nosuid,nodev 0 0 

насколько я понимаю:

  • /var/lib/dhcp/, /var/run, /var/spoolИ /var/lockявляются символьными ссылками на /tmpкоторый установлен в TMPFS
  • но /var/logи /var/tmpсмонтированы на отдельных тмпфс

Почему вы не можете монтировать так же, /tmpкак tmpfs и symlink, там все остальные каталоги?

1
Странная техника ... обычно пользователи без полномочий root могут писать в / tmp, но не в / var / log или / var / run. С указанными выше ссылками запись в / tmp аналогична записи в эти каталоги. По-прежнему объяснением могут быть права доступа или избежание конфликта имен. xenoid 6 лет назад 0
Это имеет смысл. О "странной" технике - не могли бы вы предложить лучшую? Mark 6 лет назад 1
Насколько я могу судить, можно создать отдельные каталоги в `/ tmp /` (или даже быть чище '/ tmp / var`) и связать каждый `/ var / что-нибудь` с соответствующим` / tmp / var / что-то` (с адекватными правами доступа). xenoid 6 лет назад 1
Хорошо, это я пытался сказать с помощью * Почему вы не можете смонтировать просто / tmp как tmpfs и symlink там все остальные каталоги? * Mark 6 лет назад 0

1 ответ на вопрос

0
Zombie Feynman

Хотя единственного правильного подхода не существует, один из лучших - это вариант, предложенный xenoid : mount /tmpas tmpfsи создание там подкаталогов с соответствующими разрешениями. Затем свяжите соответствующие подкаталоги /varс теми.

В общем, вероятно, не стоит монтировать несколько временных файловых систем, если вы вручную не укажете их размер. По умолчанию (согласно man tmpfs) каждый получит половину объема доступной оперативной памяти. Ваш пример будет использовать в общей сложности 87,5% от всей свободной памяти во время монтирования, и каждый последующий экземпляр будет вдвое меньше предыдущего. Это очень странная вещь.

В качестве альтернативы, если вам действительно нужна только временная файловая система, вы можете создать одну большую tmpfsи использовать UnionFS или что-то подобное для создания временного наложения с возможностью записи /. Возможная безопасность, которую вы теряете, имея принципиально доступную для записи запись /(с разрешениями, обеспечивающими обычный уровень безопасности в любом случае), компенсируется тем, что все очищается при перезагрузке.

Похожие вопросы