過去問ドリル

LinuCレベル1 セキュリティ 問33

セキュリティ/セキュリティ管理業務の実施

一般ユーザーが「su」でrootになったところ、カレントディレクトリが元のままで、rootの ~/.bash_profile に書いた設定も反映されていなかった。rootで直接ログインしたときと同じ環境で作業を始めるための指定として適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル1の出題範囲「セキュリティ」に対応。実際の試験問題ではありません)

正解:C

解説

su に「-」(-l、--login と同じ)を付けると、切り替え先のユーザーのログインシェルとして起動します。環境変数が初期化され、カレントディレクトリは切り替え先のホームディレクトリに移り、/etc/profile や ~/.bash_profile などのログイン用設定ファイルが読み込まれます。「-」を付けない su では、元のユーザーの作業ディレクトリや環境の多くが引き継がれるため、PATHの違いなどから想定外のコマンドが実行されることもあります。管理作業では su - を使うか、sudo で必要なコマンドだけを実行する運用が一般的です。

選択肢ごとの解説

  • A誤り。sudo -l は、自分がsudoで実行を許可されているコマンドを一覧表示するだけで、ユーザーは切り替わりません。
  • B誤り。-s は起動するシェルを指定するオプションで、ログインシェルとしては起動しないため、状況は変わりません。
  • C正しい。su - はログインシェルとして起動し、ログイン時と同じ設定ファイルを読み込んでホームディレクトリへ移ります。
  • D誤り。-m(-p)は元のユーザーの環境変数を保持するオプションで、ログイン時と同じ環境にするのとは逆の働きです。
LinuCレベル1の問題を演習モードで解く