この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
ども。あいしんくいっと(@ithinkitnet)です。
Linuxでは管理者でしか実行出来ないコマンドが存在します。例えば、useraddコマンドとか。
このuseraddコマンドは基本的に管理者しか扱えません。
$ useradd hoge
-bash: /usr/sbin/useradd: 許可がありません
ですが、sudoを利用すると一般ユーザーでも一時的に管理者権限でコマンド実行することが可能となります。
$ sudo useradd hoge
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
以上、あいしんくいっとでした( ..)φメモメモ