MENU

カテゴリー

リモートsudoが実行出来ない場合の対応について

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

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

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

ですが、sudoコマンドを使えば一般ユーザーでも実行することが可能となります。

$ sudo useradd hoge
MEMO
無論、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つの方法を状況によって使い分けると良いと思います。

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

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

SHARE