Пользователи NFS получают медленный пользовательский интерфейс

Я настраиваю систему (ubuntu 12.04), которая использует ldap, pam и autofs для загрузки пользователей и их домашних папок с удаленного сервера. Один из вариантов входа в систему - сесть за компьютер и запустить сеанс графического интерфейса. Такие программы, как chormium (браузер), которые выполняют многие операции чтения / записи в файлах ~ / .cache и ~ / .config, замедляют работу графического интерфейса пользователя, а также создают нагрузку на сервер NFS, которая вызывает проблемы у других пользователей.

В Ubuntu были удобные переменные XDG_CONFIG_HOME и XDG_CACHE_HOME, которые можно изменить, чтобы изменить расположение по умолчанию .cache и .config из домашней папки в другое место. Есть несколько мест для их установки, но большинство из них не оптимальны.

  1. / etc / environment

    • плюсы: будут работать во всех оболочках
    • минусы: нельзя использовать такие переменные, как $ USER, чтобы вы не могли сделать у пользователей есть разные новые места для .cache и .config. Новое местоположение каждого пользователя будет одним и тем же каталогом.
  2. /etc/bash.bashrc

    • плюсы: $ USER работает, поэтому вы можете поместить их в разные папки
    • минусы: только запускается для совместимых с bash оболочек
  3. ~ / .pam_environment

    • плюсы: работает независимо от оболочки
    • минусы: нельзя использовать системные переменные (например, $ USER), имеют собственный синтаксис и должны создаваться для каждого пользователя
0
задан 3 October 2012 в 00:27

2 ответа

У вас есть системные переменные в pam, поэтому я бы выбрал вариант 3.

Установите переменную в /etc/security/pam_env.conf:

XDG_CACHE_HOME  DEFAULT="/var/cache/users/@{PAM_USER}/.cache" #or any other place

И убедитесь, что каталог существует в /etc/profile:

if [ "$USER" == "root" ]; then   
  unset XDG_CACHE_HOME 
else   
  test -d $XDG_CACHE_HOME || mkdir -p $XDG_CACHE_HOME
fi
0
ответ дан 3 October 2012 в 00:27

Мое решение работает для всех оболочек и выполняется автоматически, поэтому для новых пользователей никаких действий администратора не требуется. Он использует ~ / .pam_environment вместе с коротким скриптом для запуска при входе в систему.

При входе пользователя в систему короткий скрипт ищет в домашнем каталоге пользователя файл .pam_environment. Если его нет, он создает его и добавляет строки для установки XDG_CACHE_HOME и XDG_CONFIG_HOME. Обратите внимание, что в моем случае я помещаю файлы .config и .cache в / home / nfs_users / username /

Их также можно поместить в / tmp / username /. Они будут уничтожены при каждой перезагрузке. Возможно, вы захотите поставить свое место где-нибудь более постоянным.

  1. Включить использование ~ / .pam_environment:

    • в файле "/etc/pam.d/common-session" добавить следующую строку в конец файла:

      требуется сеанс pam_env.so

  2. Создать сценарий оболочки для запуска при входе пользователя в систему. Это "/etc/profile.d/local.sh". Вы можете или не можете уже иметь что-то в этом файле. Вы можете добавить следующий код или создать файл, если он не существует. ПРИМЕЧАНИЕ: выбранный каталог (в данном случае / home / nfs_users /) должен существовать и быть доступным для записи для всех пользователей, которые входят в систему.

    if [ ! -d '/home/nfs_users/'${USER} ]; then
        mkdir '/home/nfs_users/'${USER}
    fi
    if [ ! -e ${HOME}/.pam_environment ]; then
        echo 'XDG_CACHE_HOME DEFAULT="/home/nfs_users/'${USER}'/.cache"' > ${HOME}"/.pam_environment"
        echo 'XDG_CONFIG_HOME DEFAULT="/home/nfs_users/'${USER}'/.config"' >> ${HOME}"/.pam_environment"
    fi
    
  3. Затем сделайте скрипт исполняемым:

    sudo chmod +x /etc/profile.d/local.sh

  4. Убедитесь, что он работает. Выйдите из системы и войдите снова. echo $XDG_CONFIG_HOME и echo $XDG_CACHE_HOME должны вернуть правильные каталоги. Кроме того, после запуска приложений с графическим интерфейсом, которые используют кэш, в файлах .config и .cache должны быть некоторые элементы (проверьте их содержимое с помощью ls).

ОБНОВЛЕНИЕ:

Таким образом, старое решение сохраняет файлы во временной памяти, поэтому оно сбрасывается при выходе из системы и завершении работы. Чтобы избежать этого, не храните файлы в / tmp

Это меняет шаг 2. Я решил создать папку в / home для nfs_users (/ home / nfs_users), которая должна быть доступна для записи всем пользователи, которые могут войти в систему. Вы можете разместить его где-то еще.

0
ответ дан 3 October 2012 в 00:27

Другие вопросы по тегам:

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