ども。あいしんくいっと(@ithinkitnet)です。
Linuxでは管理者でしか実行出来ないコマンドが存在します。
例えば、useraddコマンドとか。
このuseraddコマンドは基本的に管理者しか扱えません。
$ useradd hoge
-bash: /usr/sbin/useradd: 許可がありません
-bash: /usr/sbin/useradd: 許可がありません
ですが、sudoコマンドを使えば一般ユーザーでも実行することが可能となります。
$ sudo useradd hoge
MEMO
無論、sudoの設定は必要です# ssh hoge@192.168.11.100 “sudo useradd hogehoge”
sudo: sudo を実行するには tty がなければいけません。すみません
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つの方法を状況によって使い分けると良いと思います。
以上、あいしんくいっとでした( ..)φメモメモ