Windowsでsudoコマンドを使う方法|管理者権限で実行できる代替ツール5選
Linuxを使用したことがある方、あるいはLinuxユーザーの知人がいれば、「sudo」コマンドという言葉を耳にしたことがあるでしょう。このコマンドはほぼすべてのLinuxディストリビューションに搭載されている重要な機能で、別のユーザー(主にrootユーザー)としてコマンドを実行することを可能にします。一部のLinuxディストリビューションではsuコマンドを使ってrootユーザーとして直接ログインできますが、これは非常に危険とされており、実際に行う人はほとんどいません。
実は、その危険性の高さから、Ubuntuなどのディストリビューションではデフォルトで無効化されています。rootユーザーとしてコマンドを実行したい場合は、必ずsudoコマンドを使うことになっています。では、Windowsはどうなのでしょうか?残念ながら、多くのユーザーはWindowsに「Administrators」権限(Linuxにおけるrootユーザーと同等)でログインしています。そこでMicrosoftは、このリスクを軽減するためにUAC(ユーザーアカウント制御)を導入しました。
この仕組みにより、たとえユーザーが管理者権限を持っていても、そのアカウントで動作するアプリケーションが権限を引き継ぐには、ユーザーによる手動の承認が必要になります。これによって、管理者としてログインしているWindowsユーザーがマルウェアやスパイウェアに感染するリスクを大幅に減らせます。
Linuxユーザーにはsudoコマンドがありますが、Windowsユーザーには何があるのでしょうか?昇格された権限でコマンドを実行するための代替手段は存在するのか?本記事では、Windowsユーザー向けのsudoコマンドの代替となる5つのツールをご紹介します。
注意: 一部のツールは公開から長い時間が経過しているため、最新バージョンのWindowsでは動作しない場合があります。
1. Windows標準のrunasコマンド
Windowsには、Linuxのsudoに直接相当するrunasコマンドが標準で用意されています。runasコマンドを使えば、別のユーザーまたは管理者としてスクリプト、プログラム、コマンドを実行できます。runasコマンドの完全な構文は以下の通りです。
runas [{/profile|/noprofile}] [/env] [/netonly] [/smartcard] [/showtrustlevels] [/trustlevel] /user:UserAccountName program
管理者のコマンドプロンプトを開きたい場合は、次のように入力します。
runas /noprofile /user:Administrator cmd

/noprofileオプションを指定すると、現在のユーザープロファイルを読み込みません。ユーザー環境変数へのアクセスが必要な場合は、このオプションを外してください。また、メモ帳でテキストファイルを管理者権限で開きたい場合は、次のコマンドを使用します。
runas /user:Administrator "notepad my_file.txt"
runasの詳細な使い方については、Microsoftの公式ドキュメント(Technet)をご確認ください。
runasコマンド使用時の重要な注意点として、プログラムのインストールや設定変更などを行った場合、その変更はコマンドの実行に使用したユーザーアカウントに適用されるという点が挙げられます。例えば、一般ユーザーXと管理者Yがいる環境で、Xとしてログインした状態でAdministratorの資格情報を使ってrunasを実行すると、変更内容はユーザーXではなくAdministratorの設定に反映されます。
つまり、EXEファイルを右クリックして「管理者として実行」を選択してアプリケーションをインストールすると、ログイン中のユーザーではなく、組み込みのAdministratorユーザープロファイルにインストールされてしまうのです。プロファイルの問題を回避しつつ、sudoのような真の昇格権限が必要な場合は、次の代替手段をご覧ください。
2. Sudo for Windows(Sourceforge版)
Sudo for Windowsは無料で利用できるプログラムで、Windows上でLinuxのsudoコマンドとほぼ同じ体験を提供します。唯一の違いは、開発者の説明によると「ユーザーのプロファイルと作成されたオブジェクトの所有権を保持する」という点です。アプリのインストールやマイドキュメントなどのユーザー領域への変更に昇格権限を使いたい場合に非常に便利です。
このツールは管理者権限を付与しながらも、すべての変更はコマンドの実行に使用したアカウントではなく、現在のプロファイルに保持されます。なお、このプログラムは.NET Framework 2.0が必要ですが、2.0は単体ではダウンロードできません。2.0を入手するには、2.0を含む.NET Framework 3.5をインストールする必要があります。
Sudo for Windowsをインストールしたら、昇格権限を許可したいユーザーアカウントを、プログラムが自動作成する「Sudoers」グループに追加する必要があります。「PC」を右クリックして「管理」を選択し、「ユーザーとグループ」を展開して「グループ」をクリックすると、「Sudoers」というグループが表示されます。

Sudoersをダブルクリックし、「追加」ボタンをクリックします。次のダイアログで「詳細設定」ボタンを押し、「検索」をクリックすると、システム上のすべてのユーザーとグループが一覧表示されます。追加したいユーザーをダブルクリックして選択してください。

追加したいユーザーの数だけこの手順を繰り返し、「OK」をクリックするとメンバーリストに登録されます。設定を完了すると、sudoのGUIとコマンドの両方が使用可能になります。プログラムを右クリックすると、コンテキストメニューに「Sudo」オプションが表示されます。

さらに、コマンドプロンプトを開いてsudoと入力すれば、昇格された権限でコマンドを実行することもできます。

全体的に非常に使い勝手が良く、安定して動作します。ただし、このプログラムは右クリックやコマンドプロンプト経由でプログラムやプロセスを起動するのに適しており、コマンドラインアプリ自体の実行には向いていない点に注意が必要です。例えば、「sudo mkdir "c:\Program Files\new"」のような操作は、このSudo for Windowsでは実現できません。そのような用途には、同じ名前でありながら別の開発者による別のプログラムがあります。続けてご紹介します。
3. Sudo for Windows(Luke Sampson版)
別の開発者Luke Sampson氏が、コマンドラインアプリにも対応した別のSudo for Windowsを公開しています。再びC:\Program Filesに新しいフォルダを作成する例を見てみましょう。通常の権限では、この操作は失敗します。

上記の例ではPowerShellを使用していますが、コマンドプロンプトでも同様のエラーが発生します。しかし、Sudo for Windowsをインストールすれば、コマンドの先頭に「sudo」と付けるだけで、エラーなく完璧に動作するようになります。
インストールするには、PowerShellを開いて以下のコマンドを順番に実行します。
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
set-executionpolicy unrestricted -s cu -f
scoop install sudo
すべて正常に完了すれば、各コマンドの実行後にPowerShellに成功を示す出力が表示されます。

これで設定完了です。あとは任意のコマンドの前にsudoを付けて入力するだけで使えます。このプログラムの唯一の難点は、UACのダイアログが依然として表示され、動作させるには「はい」をクリックする必要がある点です。とはいえ、その小さな手間を考慮しても、得られるメリットは十分に大きいと言えます。
4. Elevate
ElevateはUACと連携して動作するプログラムで、sudoとは完全に同じ挙動をするわけではありません。Elevateは、runasコマンドと同様に実行ユーザーをAdministratorに切り替えます。ただし、コマンドラインやバッチファイルでの作業において特に有用です。

Elevateの主な目的はUACを回避することではなく、昇格されていないシェルから昇格された状態でプロセスを開始し、コマンド完了後も通常どおり処理を続行することにあります。Elevateはスクリプト作成の場面で威力を発揮します。右クリックして管理者としてコマンドプロンプトを起動する一連の手作業をスクリプト化する必要がなくなるからです。
5. Elevation PowerToys for Windows
コマンドラインでの作業が多い方や、スクリプト・バッチファイルを日常的に扱う方には、Elevation PowerToys for Windowsのページがおすすめです。ここには実用的なツールやスクリプトが多数まとめられています。

これらのスクリプト群は、コマンドラインからプログラムを昇格させたり、管理者としてスクリプトを実行したりする際に直面する、UAC特有の煩わしさを解消するために開発されました。
以上のツールを活用すれば、Windows環境でもまるでsudoを使っているかのような感覚を得られるはずです。完璧な代替品は存在しませんが、それに近い選択肢は複数あります。Windowsでプログラム、コマンド、スクリプトを昇格させるために他のツールをお使いの方は、ぜひコメント欄でお知らせください。
-
Linuxのxargsコマンドを使いこなす!基本から実践的な活用例まで解説
ターミナル作業において、経験豊富なユーザーほど「より賢く、より楽に」仕事をこなす方法を常に探しています。xargsは、2つのコマンドをつなぐ架け橋として機能する便利なコマンドで、片方のコマンドの出力を読み取り、その項目を使ってもう片方のコマンドを実行します。パターン検索やファイルの削除・リネームなど、さまざまなシーンで活躍します。本記事では、xargsコマンドを効果的に活用する方法を詳しく解説します。 xargsとは? 基本的な動作として、xargsは標準入力(STDIN)から情報を受け取り、読み込んだ項目に対して1回または複数回コマンドを実行します。シンプルな例は数多くありますが、まず一
-
Linuxのteeコマンド使い方ガイド|画面表示とファイル保存を同時に実現
Linuxシェルでパイプやリダイレクトを使っているなら、teeコマンドの出番もきっとあるはずです。teeは「標準出力に表示しながら、同時にファイルにも書き込む」ことができる便利なユーティリティです。この記事では、teeコマンドの基本操作から、sudoとの組み合わせ、追記モード、エラー出力の扱い方まで、実例を交えながら詳しく解説します。 teeコマンドとは何をするもの? まず、次のようなコマンドを見てみましょう。 ls このコマンドは、現在のディレクトリの内容を表示します。つまり、標準出力(stdout)へ出力するわけです。標準出力とは通常、画面、正確には仮想端末のディスプレイのことです