Я настраиваю систему (ubuntu 12.04), которая использует ldap, pam и autofs для загрузки пользователей и их домашних папок с удаленного сервера. Один из вариантов входа в систему - сесть за компьютер и запустить сеанс графического интерфейса. Такие программы, как chormium (браузер), которые выполняют многие операции чтения / записи в файлах ~ / .cache и ~ / .config, замедляют работу графического интерфейса пользователя, а также создают нагрузку на сервер NFS, которая вызывает проблемы у других пользователей.
В Ubuntu были удобные переменные XDG_CONFIG_HOME и XDG_CACHE_HOME, которые можно изменить, чтобы изменить расположение по умолчанию .cache и .config из домашней папки в другое место. Есть несколько мест для их установки, но большинство из них не оптимальны.
/ etc / environment
/etc/bash.bashrc
~ / .pam_environment
У вас есть системные переменные в 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
Мое решение работает для всех оболочек и выполняется автоматически, поэтому для новых пользователей никаких действий администратора не требуется. Он использует ~ / .pam_environment вместе с коротким скриптом для запуска при входе в систему.
При входе пользователя в систему короткий скрипт ищет в домашнем каталоге пользователя файл .pam_environment. Если его нет, он создает его и добавляет строки для установки XDG_CACHE_HOME и XDG_CONFIG_HOME. Обратите внимание, что в моем случае я помещаю файлы .config и .cache в / home / nfs_users / username /
Их также можно поместить в / tmp / username /. Они будут уничтожены при каждой перезагрузке. Возможно, вы захотите поставить свое место где-нибудь более постоянным.
Включить использование ~ / .pam_environment:
в файле "/etc/pam.d/common-session" добавить следующую строку в конец файла:
требуется сеанс pam_env.so
Создать сценарий оболочки для запуска при входе пользователя в систему. Это "/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
Затем сделайте скрипт исполняемым:
sudo chmod +x /etc/profile.d/local.sh
Убедитесь, что он работает. Выйдите из системы и войдите снова. echo $XDG_CONFIG_HOME
и echo $XDG_CACHE_HOME
должны вернуть правильные каталоги. Кроме того, после запуска приложений с графическим интерфейсом, которые используют кэш, в файлах .config и .cache должны быть некоторые элементы (проверьте их содержимое с помощью ls).
ОБНОВЛЕНИЕ:
Таким образом, старое решение сохраняет файлы во временной памяти, поэтому оно сбрасывается при выходе из системы и завершении работы. Чтобы избежать этого, не храните файлы в / tmp
Это меняет шаг 2. Я решил создать папку в / home для nfs_users (/ home / nfs_users), которая должна быть доступна для записи всем пользователи, которые могут войти в систему. Вы можете разместить его где-то еще.