LinuCレベル3 セキュリティスペシャリスト 堅牢なコンテナ設計 問12
堅牢なコンテナ設計/Rootless モードRootlessモードのDockerをsystemdのユーザーサービスとして動かしている。ユーザーaliceがSSHからログアウトした後もコンテナが停止せずに動き続けるようにするコマンドとして適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「堅牢なコンテナ設計」に対応。実際の試験問題ではありません)
- Aloginctl enable-linger alice
- Bsystemctl --user enable docker.service
- Csystemctl --user daemon-reload
- Dexport XDG_RUNTIME_DIR=/run/user/$(id -u)
正解:A
解説
loginctl enable-lingerを実行すると、指定したユーザーのsystemd --user(ユーザーマネージャ)がログインセッションの有無にかかわらず起動し続けます。既定ではユーザーの最後のログインセッションが終了するとユーザーマネージャが停止し、ユーザーサービスとして動くRootless Dockerのデーモンやコンテナも停止します。systemctl --user enableはログイン時にサービスを自動起動する設定ですが、lingerが無ければログアウト後にサービスごと停止します。daemon-reloadはユニットファイルの再読み込みで、ログアウト後の動作には影響しません。
選択肢ごとの解説
- A正しい。enable-lingerにより、ユーザーのログインセッションが無くなってもsystemdのユーザーマネージャが動き続け、ユーザーサービスやコンテナが停止しなくなる。
- B誤り。systemctl --user enableはログイン時にサービスを自動起動する設定であり、ログアウト後にサービスを維持する機能ではない。lingerが無ければログアウト時にユーザーマネージャごと停止する。
- C誤り。daemon-reloadはユニットファイルの変更をsystemdに認識させるコマンドであり、ログアウト後のサービス維持とは関係がない。
- D誤り。XDG_RUNTIME_DIRの設定はDockerのソケットパスなどの実行時ディレクトリを指定するもので、ログアウト後にサービスを維持する機能ではない。