私はデスクトップ5台とサーバー1台があり、どちらもDebianで動作する小規模オフィスを運営しています。私はクライアントをStretchにアップグレードしましたが、ログに私を悩ませるエラーが1つだけ表示されます。
gnome-settings-[939]: EDID データからプロファイルを作成できませんでした: ICC ファイルを保存できません: '/var/data/users/Debian-gdm/icc/edid-93ed9b01fe8febb07668e99b557191e9.icc' ファイルを開く際のエラーが発生しました:アクセスが拒否されました
gnome - 設定 - [939]:EDIDデータからプロファイルを作成できませんでした:ICCファイルを保存できませんでした: '/var/data/users/Debian-gdm/icc/edid-93ed9b01fe8febb07668e99b557191e9 .icc' ファイルを開くエラー: アクセスが拒否されました
gnome- settings- [939]: screen_ICC_PROFILE を設定できません: '/var/data/users/vincent/icc/edid-93ed9b01fe8febb07668e99b557191e9.icc' ファイル拒否されました。
ユーザー $HOME フォルダーは NFS 経由でマウントされたため、すべての $XDG_DATA および $XDG_CACHE (少なくとも一般ユーザーの場合) がクライアントにローカルに保存されていることを確認しました。 2014年、私は次のマニュアルを見つけました。
/etc/profile.d/xdg_dirs.shから:
if [ "$USER" == "root" ]; then
unset XDG_CACHE_HOME
unset XDG_DATA_HOME
else
test -d $XDG_CACHE_HOME || mkdir -p $XDG_CACHE_HOME
test -d $XDG_DATA_HOME || mkdir -p $XDG_DATA_HOME
fi
/etc/security/pam_env.confから:
XDG_CACHE_HOME DEFAULT="/var/cache/users/@{PAM_USER}"
XDG_DATA_HOME DEFAULT="/var/data/users/@{PAM_USER}"
私はこれがDebian-gdmユーザーの正しい権限を混乱させたと確信していますが、どのように修正できるかわかりません。ディレクトリを作成し、Debian-gdmとデフォルトのユーザーグループにr + w権限を付与しようとしましたが、うまくいきませんでした。また、以下を追加して上記のスクリプトからDebian-gdmユーザーを除外しました。
if [ "$USER" == "root" ] || [ "$USER" == "Debian-gdm" ]; then
しかし、それほど効果的ではありません。
どんなアイデアがありますか?
答え1
ここで最大の問題は、/etc/profile.d/xdg_dirs.sh
Xではなくウェイランドを使用しているため、gdmを起動するとソースを取得できないことです(Xsessionスクリプトは起動しなくなりました)。
IMHO これらの変数を破壊しないでください。ユーザーのホームDebian-gdm
保存場所は、/var/lib/gdm3
すでにクライアントのローカル位置にある必要があります。
私がすべきことは、最初の呼び出しに/etc/pam.d/gdm-launch-environment
2つの呼び出しがあることをに設定することでした。これにより、pamモジュールがファイルを読み取ることを防ぎ、環境を変更せずに残すことができます。pam_env.so
conffile=
/dev/null
/etc/security/pam_env.conf
別の解決策は、Waylandの代わりにXを使用してgdmを起動することですWaylandEnable=false
。/etc/gdm3/daemon.conf
答え2
この質問をした後、すべてのシステムをStretchからBusterにアップグレードし、Bullseyeにアップグレードしています。 StretchとBusterに対する@Bigonの答えを受け入れましたが、pam_env.soが生成し続けるエラーのため、元のソリューションに戻りました。何の問題も見たことがないので、このバグはまったく有害ではありません。
将来の訪問者のためにユーザーの$ HOMEがNFSで提供されている場合は、ユーザーのキャッシュをローカルに保存すると便利です。します。 、のような:
if ((`id -u`>=2000)); then
umask 0007
USER=$(id -un)
if [[ !-d "/var/cache/users/$USER" ]]; then
mkdir "/var/cache/users/$USER"
chown "$USER" "/var/cache/users/$USER"
fi
XDG_CACHE_HOME=/var/cache/users/$USER
export XDG_CACHE_HOME
NSS_SDB_USE_CACHE=yes
export NSS_SDB_USE_CACHE
fi
このソリューションは、rootやDebian-gdmなどのシステムユーザーのエラーを防ぎ、ユーザーが使用するセッションマネージャとは無関係に機能します。設定からpam_env.soへのすべての参照を削除しました。