ソフトウェア開発のベスト プラクティスは、最小限の特権を必要とするソフトウェアの作成に開発者を導きます。 ただし、パフォーマンス監視ツールなどの一部のソフトウェアでは、オペレーティング システムの規則のために管理者のアクセス許可が必要です。 次のガイダンスでは、.NET Core でこのようなソフトウェアを記述するためにサポートされるシナリオについて説明します。
次のコマンドは管理者特権で実行できます。
-
dotnet tool
コマンド (dotnet ツールのインストールなど)。 dotnet run --no-build
dotnet-core-uninstall
その他のコマンドを管理者特権で実行することはお勧めしません。 特に、 dotnet restore、 dotnet build、 dotnet run などの MSBuild を使用するコマンドを使用して昇格することはお勧めしません。 主な問題は、dotnet コマンドを発行した後にユーザーがルートアカウントと制限付きアカウントの間をやり取りするときのアクセス許可管理の問題です。 ルート ユーザーによってビルドされたファイルにアクセスできない制限付きユーザーとして見つかる場合があります。 この状況を解決する方法はありますが、最初に入る必要はありません。
root アカウントと制限付きアカウントの間をやり取りしない限り、コマンドを root として実行できます。 たとえば、Docker コンテナーは既定でルートとして実行されるため、この特性があります。
グローバル ツールのインストール
次の手順では、実行に昇格されたアクセス許可を必要とする .NET ツールをインストール、実行、アンインストールするための推奨される方法を示します。
ツールをインストールする
フォルダー %ProgramFiles%\dotnet-tools
が既に存在する場合は、次の操作を行って、"Users" グループにそのディレクトリを書き込むまたは変更するアクセス許可があるかどうかを確認します。
-
%ProgramFiles%\dotnet-tools
フォルダーを右クリックし、[プロパティ] を選択します。 [ 共通プロパティ ] ダイアログ ボックスが開きます。 - [ セキュリティ ] タブを選択します。[ グループ名] または [ユーザー名] で、"Users" グループにディレクトリを書き込んだり変更したりする権限があるかどうかを確認します。
- "Users" グループがディレクトリを書き込んだり変更したりできない場合は、 dotnet-tools ではなく、ツールをインストールするときに別のディレクトリ名を使用します。
ツールをインストールするには、管理者特権でのプロンプトで次のコマンドを実行します。 インストール中に dotnet-tools フォルダーが作成されます。
dotnet tool install PACKAGEID --tool-path "%ProgramFiles%\dotnet-tools".
グローバル ツールを実行する
オプション 1 管理者特権のプロンプトで完全パスを使用します。
"%ProgramFiles%\dotnet-tools\TOOLCOMMAND"
オプション 2 新しく作成したフォルダーを %Path%
に追加します。 この操作は 1 回だけ行う必要があります。
setx Path "%Path%;%ProgramFiles%\dotnet-tools\"
次のコマンドを使用して実行します。
TOOLCOMMAND
グローバル ツールをアンインストールする
管理者特権プロンプトで次のコマンドを入力します。
dotnet tool uninstall PACKAGEID --tool-path "%ProgramFiles%\dotnet-tools"
ローカル ツール
ローカル ツールのスコープは、サブディレクトリ ツリーごと、ユーザーごとです。 管理者特権で実行すると、ローカル ツールは制限付きユーザー環境を管理者特権環境と共有します。 Linux と macOS では、ルート ユーザー専用アクセスでファイルが設定されます。 ユーザーが制限付きアカウントに切り替えた場合、ユーザーはファイルにアクセスしたり、ファイルに書き込んだりできなくなります。 そのため、ローカル ツールとして昇格を必要とするツールをインストールすることはお勧めしません。 代わりに、グローバル ツールの --tool-path
オプションと前のガイドラインを使用してください。
開発中の特権昇格
開発中に、アプリケーションをテストするために昇格されたアクセス権が必要になる場合があります。 このシナリオは、たとえば IoT アプリで一般的です。 Microsoft では、特権昇格なしでアプリケーションを開発し、管理者特権でそれを実行することをお勧めしています。 次のようないくつかのパターンがあります。
生成された実行可能ファイルを使用する (最高のスタートアップ パフォーマンスを提供します):
dotnet build sudo ./bin/Debug/netcoreapp3.0/APPLICATIONNAME
新しいバイナリの生成を回避するために、 フラグで
—no-build
コマンドを使用します。dotnet build sudo dotnet run --no-build
こちらも参照ください
.NET