SambaがPAMを介して私の(対話型)ユーザーセッションを閉じると、ecryptfsインストールのホームフォルダが「消えます」

SambaがPAMを介して私の(対話型)ユーザーセッションを閉じると、ecryptfsインストールのホームフォルダが「消えます」

Ubuntu 20.04 で - 以前 (一般) GNOME でこの問題を経験したことがあります。 - KDEプラズマ(いいえ、Kubuntuではありません!)を使用すると、数時間ごとに奇妙なことが発生しますが、現在では説明や解決策はありません。

どういうわけか、ecryptfsインストールの暗号化されたホームフォルダがログインしたときに突然「消えました」。主に複数のプログラム$HOMEでファイルが見つからないと報告したり、ファイルが破損していると思ったり、ファイルを開くことができないと報告するなど、奇妙な症状が現れ始めたため、主に気づきました。

最初にこれが発生した場合は、通常、を実行して/usr/bin/ecryptfs-mount-privateパスワードを入力して操作を完了します。残念ながら、一部のKDEデスクトップ要素の機能はまだ復元されません。たとえば、その時点からインストールされたプログラムを検索できないため、実行されていないすべてのプログラムはログアウトしてから再度ログインするまで使用できなくなります。

/usr/bin/ecryptfs-mount-privateその後、これが発生し、通常は次のものを使用しようとします。

$ /usr/bin/ecryptfs-mount-private
Enter your login passphrase:
Inserted auth tok with sig [2123456789012312] into the user session keyring
mount: No such file or directory

下のスクリーンショットに示すように、このような状況ではログアウトすることさえも少し悪夢になることがあります。ポップアップするダイアログは、私がログアウトを選択したという事実に基づいています!

ログアウトしようとしたときのエラーダイアログのスクリーンショット

だから私の質問は次のとおりです(はい、複数形です...現在この問題をどのように診断するのかわからないからです)。

  1. 自動削除の原因となる可能性がある項目は何ですか$HOME? ...ログアウトするとセッションが消去され、突然ScreenまたはTmuxセッションも終了するなどの奇妙な動作が考えられます(とloginctl一緒に使用しない限りenable-linger)。
  2. そのような問題を解決するためのステップは何ですか? (これが起こった場合はデスクトップが奇妙に動作することに注意してください!)出力とログを見るためにripgrepを使ってみましたjournalctlが、どの用語を見つけるべきかわかりません...
  3. これが既知のバグであると仮定すると、解決策は何ですか?

これにより、ログアウト時にTmux / Screenが終了することを思い出させます。これは一般的に考えていないことであり、SSHにログインした後(別々のログインセッションなど)、Tmux / Screenを起動したりセッション遅延を有効にしたりすることを避けることができる状況です。


私が見つけたjournalctl奇妙に見え、「欠けている」ホームディレクトリに関連しているものの1つは次のとおりです。

Sep 01 23:39:11 machine smbd[220424]: pam_unix(samba:session): session closed for user johndoe
Sep 01 23:39:11 machine systemd[1]: home-johndoe.mount: Succeeded.
-- Subject: Unit succeeded
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- The unit home-johndoe.mount has successfully entered the 'dead' state.
Sep 01 23:39:11 machine systemd[1977]: home-johndoe.mount: Succeeded.
-- Subject: Unit succeeded
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--

...しかし、何かを示唆することがあります。原因Sambaデーモンが私の対話型ユーザーアカウントを表すようにすると、システムの他の部分から私がログアウトして自分のアカウントを削除すると仮定します$HOME。その可能性はほとんどありません。そうではありませんか?

上記のパターンはpam_unix(samba:session)私のユーザー名のセッションを閉じて$HOMEフォルダにアクセスできなくなります。これ決定的な証拠であり、現在まで唯一の証拠です。現在、セッション全体のビジネスがどのように機能するか、およびインストールデバイスが対話式にログインしている間にインストールホームフォルダを「収穫」できると「考える」理由を読んでいます。

編集#1:Sambaの構成が関連性がある可能性があるという意見があるので、ここに追加します。johndoeダンプで実際のユーザー名を変更しましたtestparm

# Global parameters
[global]
debug uid = Yes
dns proxy = No
guest account = johndoe
log file = /var/log/samba/log.%m
map to guest = Bad Password
max log size = 1000
obey pam restrictions = Yes
panic action = /usr/share/samba/panic-action %d
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
passwd program = /usr/bin/passwd %u
security = USER
server role = standalone server
server string = %h server (Samba, Ubuntu)
syslog = 7
syslog only = Yes
workgroup = NULL
idmap config * : backend = tdb

[sharename]
force create mode = 0660
force directory mode = 0770
guest ok = Yes
guest only = Yes
path = /data/sharedir
read only = No

私が言ったように、特別なことではありませんが、私の考えでは、グローバル設定を介してユーザーをゲストユーザーとして「デフォルト」に設定したため、ユーザーにログインセッションが表示されるようです。

samba:sessionいくつかの項目(上記でコピーしたログ行など)を除いて、フラグ付きの項目はありません。

編集#2:私の/etc/pam.d/samba外観は次のとおりです。

@include common-auth
@include common-account
@include common-session-noninteractive

debug...それで、参照されたファイルを編集し、引用符で囲まれた各行に、またはを追加(スペースで区切った)してみました。結果 - 再起動後 - KDE にログインできなくなりました。ただ停止しました。だから私は他の端末の1つを使ってログインし、変更を元に戻しました(ありがとうございました)。pam_unixpam_ecryptfsrootetckeeper

編集#3:KillExcludeUsers=root johndoe一時的な回避策は、/etc/systemd/logind.conf設定または「ローカル」を介してユーザーのセッション遅延を無効にすることですloginctl。これにより、これはますます欠陥のように見えます。 ...EDIT 4: 回避策が機能していないことがわかりました。

ベストアンサー1

まあ、もちろんこれは愚かなことです。ほんの数時間前に賞金で200評判ポイントを「無駄に」したが、問題を解決したようだ。私よりも簡単なものとしないでください、ヒントを提供する人には賞金が授与されます。

pam_unixまあ、ログが大きな手がかりだったことがわかりました。結局、これを実行して除去プロセスを安定して再現できました。

私がすることも説明されています。launchpad.net そのチケットからが、上記の質問にない関連部分をここに再現します。

私のものsmb.conf 今後問題を掘り下げてみると、結果によるとtestparm次のようになります。

# Global parameters
[global]
debug uid = Yes
dns proxy = No
guest account = johndoe
log file = /var/log/samba/log.%m
map to guest = Bad Password
max log size = 1000
obey pam restrictions = Yes
panic action = /usr/share/samba/panic-action %d
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
passwd program = /usr/bin/passwd %u
security = USER
server role = standalone server
server string = %h server (Samba, Ubuntu)
syslog = 7
syslog only = Yes
workgroup = NULL
idmap config * : backend = tdb

[sharename]
force create mode = 0660
force directory mode = 0770
guest ok = Yes
guest only = Yes
path = /data/sharedir
read only = No

私は無差別な試行錯誤アプローチを選択しました。 Tmuxで障害レポート用のMWEを作成している間、複数のウィンドウが開いています。これが実際に私が実行しているものです:

  1. while mountpoint /home/johndoe; do sudo service smbd restart; date; sleep 2s ; done
  2. watch 'mount|grep ecryptfs'
  3. sudo tail -F /var/log/auth.log|grep samba:session

...その後、別のTmuxウィンドウで編集/保存します/etc/samba/smb.conf

腕!

auth.logログエントリが表示され、(smbd[144802]: pam_unix(samba:session): session closed for user johndoe)マウントポイントが消えます。

ついにこの迷惑な状況を再現する方法を見つけました。

その名前を考えると、私の最初の選択は実際にそのobey pam restrictions設定です。だから に設定しましたno(ただしデフォルト値はなので簡単に注釈処理できますno)。

サービスを再起動してsmbdログアウトしてから再度ログインし、エラー状態を再現してみてください。

今回は再現できません。明らかにobey pam restrictions、環境はすべてとビジネスにpam_unix影響を与えます。samba:session

編集#1:内部に言及されたチケットより多くの情報が要求されます。特にpam-auth-update無効にするように求められた後Unix認証環境。このように:

[*] Unix authentication
[ ] Register user sessions in the systemd control group hierarchy
[ ] Create home directory on login
[ ] eCryptfs Key/Mount Management
[ ] Inheritable Capabilities Management

問題は、2番目のsystemd関連の設定ではなく、4番目の設定であることがわかりました。eCryptfsキー/マウント管理

教訓を得る

  1. 直接調査したい場合は、賞金を提供しないでください。

おすすめ記事