質問: **環境** ・CentOS7 --- **Q1. sudoコマンドで実行ユーザのPATHは、デフォルトではどうして引き継がれないのですか?** ・sudoは「一般ユーザー」に対して「root権限」を付与するものだと思うのですが、デフォルトでPATHを引き継がない仕様になっている理由としては、何が挙げられるでしょうか? **Q2. sudoコマンドで実行ユーザのPATHを引き継がない場合** ・どういった不都合が発生する可能性があるのでしょうか? **Q3. suコマンドの場合** ・デフォルトでPATHを引き継ぐ、という認識で合っているでしょうか? ・suコマンドを使っておけば問題ない?
回答: PATHを気にしない場合、 * su/sudoを利用できるユーザーが不適切なPATHを設定している(またはさせられている) * 悪意あるユーザーがそのディレクトリにファイルを配置できる という条件が揃うと、root権限で悪意のプログラムを実行させられる可能性があります。簡単な例だと、 * `PATH`に/tmpを追加する * /tmp/shutdownという(悪意の)実行ファイルを用意する * sudo shutdownすると死ぬ こうなります。 suは今どき使うべきではないというのがコンセンサスです。suはユーザーそのものを成り代わらせるためのものなので、 * パスワードを共有することになる * シェルを明け渡すことになる(何でもできる) * suを実行したということしかログに残らない などいろいろ不都合があります。頑張ればある程度制御できないこともないですが、sudo使う方が安全で確実です。