kledgeb UbuntuやLinuxの最新情報を紹介

Ubuntu 19.10 その7 - sudo実行時に$HOMEを引き継ぐか、それとも引き継ぎをやめるか

sudo実行時の$HOMEの扱いをどうするか

現在「Ubuntu」では、「sudo」コマンド実行時の「$HOME」環境変数は、「sudo」を実行したユーザーの「$HOME」を継承しています。
「$HOME」はユーザーのホームディレクトリーのパスが設定される環境変数です。


ホームディレクトリー

例えば「ubuntu」ユーザーのホームディレクトリーは、「/home/ubuntu」です。
「ubuntu」ユーザーから見れば、「~/」と同じですね。

そして「ubuntu」ユーザーが「sudo」を実行すると、「sudo」実行時の「$HOME」は「/home/ubuntu」に設定されます。

 通常「sudo」は「root」でコマンドを実行する時に利用します。
「root」ユーザーのホームディレクトリーは「/root」ですが、上記の振る舞いのため「$HOME」に「/home/ubuntu」が設定され「/root」にはなりません。

他と振る舞いが異なる

この「sudo」の振る舞いは、アップストリームや他のUNIX系OS、そして「Ubuntu」自身が提供している「sudo」のドキュメントに書かれている内容とも異なります。
そこで「Ubuntu」が「sudo」にあてているカスタムパッチを削除したほうが良いのか、以下で議論が行われています。

  • how sudo handles $HOME

またもしカスタムパッチを削除するなら、「Ubuntu 19.10」以降での変更も提案されています。
この振る舞いに関する詳細は、以下を参照してください。

  • Ubuntu patch to add HOME to env_keep makes custom commands vulnerable by default

メリット

現在の振る舞いによる利便性は、設定ファイルの継承です。
「sudo vim」実行時に「sudo」を実行したユーザーの設定ファイルがそのまま利用されます。
ユーザーが「vim」環境を最適化した設定ファイルを、わざわざ「/root」にコピーしなくても、いつもの「vim」環境が利用できるわけです。
また各ユーザーごとに設定ファイルを分けることができます。

デメリット

他のOSから「Ubuntu」に来た新規ユーザーは、今まで利用していたOSの「sudo」と振る舞いが異なるため、混乱するかも知れません。
加えて「Ubuntu」のドキュメントにもこの振る舞いが記述されていないため、分かりにくさがあります。

  • sudo

またユーザーのホームディレクトリーに「root」が所有者のファイルが作成されてしまい、ユーザーからアクセスできない現象が発生する原因になります。

  • Comment 9 for bug 1556302

アップストリームでは

アップストリームでは、「$HOME」をデフォルトで「env_keep」に追加し、「Ubuntu」と同じ振る舞いにする/なる可能性について、まずその可能性はないとの回答が寄せられています。

  • [sudo-users] how sudo handles $HOME

「sudo 1.7.4」より前では、「$HOME」と「$MAIL」環境変数がデフォルトで維持されていました。
しかしこの方法は、「sudo」を実行したユーザーのホームディレクトリーにある設定ファイルを使用するプログラムにセキュリティ上の懸念が広がる可能性があり、このデフォルトの振る舞いは「sudo 1.7.4」で変更されました。

かつて「sudo」は、「uid」を変更すること以上のことをしていました。
しかし最近の「sudo」は、「sudo」によって切り替えられたユーザーとほぼ同じ環境でコマンドの実行を試みます。
これにより他のプログラムが実行時に想定する環境により近い環境になり、安全性の向上に繋がっています。

これらを踏まえデフォルトで「$HOME」を継承しない振る舞いが勧められています。
「Ubuntu 19.10」以降、「sudo」の振る舞いが変わる可能性がありますね。

Ubuntu
スポンサー
コメント
コメントポリシー
コメントをする前に UbuntuのCode of Conduct(CoC/行動規範) を確認し、CoCに沿ったコメントをお願いします。
コメントの使い方は、コメントの使い方を参照してください。
同一カテゴリーの記事
SNS
人気の記事
  • Ubuntu 20.04 その74 - UbuntuとUEFIセキュアブート
    UbuntuとUEFIセキュアブート 「Ubuntu」と「UEFIセキュアブート」に関するお話です。
  • Ubuntu 22.04 その99 - 日本語入力(Mozc)の設定をカスタマイズして作業効率を上げよう
    日本語入力(Mozc)の設定をカスタマイズするには 「Ubuntu」では日本語入力に「Mozc」を採用しています。
  • Ubuntu 22.04 その98 - 入力ソースとキーボートレイアウトと日本語入力のカスタマイズ
    入力ソースとキーボートレイアウトと日本語入力 「Ubuntu」ではユーザーが利用しているキーボードレイアウトや日本語入力のカスタマイズが可能です。
  • Ubuntu 22.04 その64 - Windows/Linux/macOSでUbuntu 22.04 LTSのライブUSBメモリーを作るには
    Ubuntu 22.04 LTSのライブUSBメモリーを作る方法 Windows/Linux/macOSでPC向け「Ubuntu 22.04 LTS」のライブUSBメモリーを作る方法を紹介します。
  • WSL その219 - WSL 2のLinux kernelをアップデートするには・Linux kernelのバージョンを調べるには
    WSL 2のLinux kernelをアップデートするには 「WSL 2」の「Linux kernel」をアップデートする方法です。
  • Ubuntu 22.04 その120 - UbuntuのブートローダーをBoot Repairで修復するには・Ubuntuが起動しないトラブルを解決
    UbuntuのブートローダーをBoot Repairで修復するには 「Boot Repair」はOSのブートローダーに起因するOSが起動しない問題を簡単に解決してくれるアプリです。
  • Ubuntu 22.04 その357 - Ubuntu 22.04.2 LTSがリリースされました・ディスクイメージのダウンロード
    Ubuntu 22.04.2 LTSがリリースされました 2023年2月23日、「Ubuntu 22.04.2 LTS」がリリースされました。
  • Ubuntu 22.04 LTSのインストール その1 - インストールの準備 〜 ライブメディアの作成とUbuntuの起動
    Ubuntu 22.04 LTSのインストールの準備 ここではPCに「Ubuntu 22.04 LTS(Ubuntu Desktop)」をインストール方法を紹介します。 まずはインストールの準備からです。
  • Ubuntuのバージョンと開発コードの対応表
    バージョンと開発コード 「Ubuntu」には各バージョンごとに開発コードが設定されます。
  • Ubuntu 22.04 その356 - Ubuntu 22.04.2 LTSのテスト呼びかけ
    Ubuntu 22.04.2 LTSのテスト呼びかけ 2023年2月17日、「Ubuntu 22.04.2 LTS」のテストが呼びかけられました。
記事のピックアップ
オプション