あいしんくいっとオススメ商品レビュー

sudoコマンドがリモート実行出来ない時の対処法について

本記事対象
Linuxのsudoがリモート実行されない時の対処法が知りたい方

ども。あいしんくいっと(@ithinkitnet)です。

Linuxでは管理者でしか実行出来ないコマンドが存在します。例えば、useraddコマンドとか。
このuseraddコマンドは基本的に管理者しか扱えません。

useraddコマンド
$ useradd hoge
-bash: /usr/sbin/useradd: 許可がありません

ですが、sudoを利用すると一般ユーザーでも一時的に管理者権限でコマンド実行することが可能となります。

sudoでuseradd
$ sudo useradd hoge
MEMO
sudoの利用設定は必要です
こんな便利なsudoコマンドですが、リモートでsudoを実行しようとした場合、以下のエラーが発生することがあります。
sudo実行エラー
# ssh hoge@192.168.11.100 "sudo useradd hogehoge"
sudo: sudo を実行するには tty がなければいけません。すみません

この場合、以下の2種類の解決方法があります。

sudoersファイルを編集

/etc/sudoersファイルの以下の行をコメントインします。

実行前

#Defaults    requiretty


変更後

Defaults    requiretty

変更はvisudoで行うか、/etc/sudoersファイルをviで編集しましょう。

逆にリモートsudoを許可したくない場合は「Defaults requiretty」の1行をsudoersファイルに追加すると良いです。

注意
LinuxのOSやバージョンによっては記載がないものもあったりします

“-t”オプションを付与

sshコマンドに「-t」オプションをつけて実行します。

# ssh -t hoge@192.168.11.100 "sudo useradd hogehoge"
[sudo] password for hoge:
Connection to 92.168.11.100 closed.

「-t」オプションは強制的に仮想端末を割り当てるオプションになります。

このオプションを指定すれば、リモートサーバのsudoersファイルを変更することなく、リモートsudoが実行可能となります。サーバ側のsudoersファイルを弄りたくない場合は重宝しそうですね。

ithinkit

とりあえず、リモートでsudoコマンドが使えない場合は上記2つの方法を状況によって使い分けると良いと思います。

以上、あいしんくいっとでした( ..)φメモメモ

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)