Cygwinから管理者権限でプログラムを実行する
Cygwinから管理者権限でプログラムを実行する方法のメモ。
たとえばCygwin付属のpingコマンドは、ターミナル(minttyなど)が管理者権限で動作していない場合エラーとなってしまう。
$ ping localhost ping: socket: Operation not permitted
このような場合、cygstartコマンドを次のように使うと管理者権限で実行することができる。
$ cygstart --action=runas /usr/bin/ping localhost
これを利用して、sudoコマンドを定義することもできる。 具体的には、bashrcに次のような記述を追加する。
if [[ -n "$PS1" ]]; then __sudo_cygwin() { local executable=$(which "${1:-cmd}") shift /usr/bin/cygstart --action=runas "$executable" "$@" } if [[ -x "/usr/bin/cygstart" ]]; then alias sudo=__sudo_cygwin fi fi
定義したsudoコマンドを使うと、次のようになる。
$ sudo ping localhost
sudo cmd
で管理者コマンドプロンプトを起動することもできて便利。