The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Монтирование директории пользователя при его входе в Linux систему
Имеем: неизменную базовую /home директорию.
Хотим: отдельно держать изменения внесенные пользователями, чтобы они не влияли на базовую /home.
            изменения держать в рамдиске, так чтобы они не сохранялись при следующем входе
Решение: 
  - unionfs - для отделения данных пользователя от read-only основы.
  - tmpfs - для создания /tmp директории с временными файлами, хранимой в ОЗУ.
  - pam-mount (http://pam-mount.sourceforge.net/) - PAM модуль для автоматического 
  монтирования разделов в момент входа пользователя в систему.

Устанавливаем пакеты (пример для Debian  и Ubuntu):
   apt-get install unionfs-modules-`uname -r`
   apt-get install libpam-mount 

Настраиваем pam_mount (/etc/security/pam_mount.conf)

   volume debiosk tmpfs - tmpfs /tmp/tmpfs "size=15M,uid=debiosk,gid=debiosk,mode=0700" - - 
   volume debiosk unionfs - unionfs /home/debiosk "dirs=/tmp/tmpfs:/home/debiosk=ro" - - 


где
 "volume" - ключевое слово, сигнализирующее об описании раздела;
 "debiosk" - имя пользователя, для которого определены правила монтирования;
  "tmpfs" - тип файловой системы;
  " - " - сигнализирует о неиспользовании монтирования с удаленного сервера;
  "/tmp/tmpfs" - точка монтирования;
  "size=15M,uid=debiosk,gid=debiosk,mode=0700" - параметры монтирования tmpfs:
          "size=15m," - размер;
          "uid=debiosk,gid=debiosk,"  - владелец;
          "mode=0700" - права доступа;
   "dirs=/tmp/tmpfs:/home/debiosk=ro" - параметры монтирования unionfs: 
           указывают отобразить изменения /home/debiosk в директории /tmp/tmpfs


Добавляем строку "@include common-pammount" в /etc/pam.d/login, /etc/pam.d/su и /etc/pam.d/xdm 

Теперь пользователь debiosk каждый раз будет получать исходную домашнюю директорию,
а изменения будут действовать только в пределах сессии.
 
26.03.2008 , Источник: http://www.debian-administration.or...
Ключи: ramdisk, tmpfs, mount, unionfs, debian, linux, limit / Лицензия: CC-BY
Раздел:    Корень / Безопасность / Помещение программ в chroot

Обсуждение [ RSS ]
  • 1.1, begemot (??), 11:53, 27/03/2008 [ответить]  
  • +/
    Идеальное решение для школ и других образовательных учреждений.

    Большое спасибо за материал.

     
  • 1.2, ии (?), 08:44, 28/03/2008 [ответить]  
  • +/
    Что-то мне подсказывает, что изменения лучше держать не на диске в оперативной памяти (которая не для этого создана, ибо размеры ее не безграничны), а во временной директории (той же /tmp/userhome к примеру. Для скорости эту /tmp мона в Рейзер ФС форматнуть.
    Ну и естественно, при запуске /tmp очищается на всякий случай (вдруг была неправильная перезагрузка).
     
     
  • 2.3, Дмитрий Ю. Карпов (?), 11:28, 28/03/2008 [^] [^^] [^^^] [ответить]  
  • +/
    > изменения лучше держать не на диске в оперативной памяти (которая не для этого создана, ибо размеры ее не безграничны), а во временной директории

    В компьютере есть вде оперативные памяти: физическая (модули памяти DIMM) и виртуальная (физическая + swap + файлы запущенных программ). Так вот, RAM-FS держится именно в виртуальной памяти, а при недостатке физической памяти свопится (из чего следует, что swap-раздел надо сделать побольше). Главное отличие RAM-FS от обычных FS в том, что данные из RAM-FS сбрасываются на диск не регулярно, а только по мере исчерпания свободного места, т.е. в терминах кэширования это очень сильно отложенная запись. Долгое откладывание записи на диск способствует повышению производительности и приводит к потере данных пи сбое питания; но т.к. в RAM-FS хранят данные, которые не нужны после перезагрузки, мы получает то что надо.

    PS: Умные люди монтируют /tmp в RAM-FS.

     
     
  • 3.6, Черников Антон (?), 17:00, 02/04/2008 [^] [^^] [^^^] [ответить]  
  • +/
    В линуксах, начиная с ядра 2.6, если я все правильно помню, под дисковый кэш можно выделить хоть всю свободную оперативную память, поэтому соображения кэширования особой роли не играют, важна лишь политика кэширования. Ну это так, к слову.
    Тут есть некоторая путаница в терминологии, говоря RAM-FS ты описываешь именно tmpfs. Дело в том, что RAM-FS как раз никакого свопа не использует, весь раздел должен помещаться только в оперативной памяти. Иногда это важно, из соображений безопасности например.
    В своем опусе я опирался на вот этот источник знаний: http://lwn.net/Articles/156098/
     

  • 1.4, вопрос (?), 03:27, 29/03/2008 [ответить]  
  • +/
    а так будет работать?
    / - cramfs
    /tmp - tmpfs
    unionfs: / - /tmp ?
     
  • 1.5, уточнение (?), 12:39, 29/03/2008 [ответить]  
  • +/
    при воспроизведении примера столкнулся с тем, что конфиг у pam_mount находится в /etc/security/pam_mount.conf.xml в формате XML
     
  • 1.7, WaZZuP (??), 16:05, 09/04/2008 [ответить]  
  • +/
    а как  сделать так  чтобы  был  еще   каталог
    скажем   ~/Documents  в  который  можно было  бы  сохранять
     
     
  • 2.8, GByte (??), 08:51, 15/04/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Монтировать отдельный раздел (или просто файл фиксированного размера) в этот пустой каталог?
     

  • 1.9, nauman (?), 22:21, 12/08/2009 [ответить]  
  • +/
    У меня чтото не смогло установить unionfs-modules.
    Но получилось отсюда http://systemsinside.kiev.ua/node/260
     
  • 1.10, eigrad (?), 00:02, 21/10/2009 [ответить]  
  • +/
    Хотелось бы увидеть подобную статью с использованием aufs2.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру