IT二刀流にはプロモーションが含まれています。

sudo: sudo を実行するには tty がなければいけません。すみません

Linuxコマンド

zabbixでzabbix agent経由でリモートサーバでコマンドを実行するとき、sudoを使用するとエラーが発生。

# zabbix_get -s {リモートサーバ} -k system.run["sudo ls /root"]
sudo: sudo を実行するには tty がなければいけません。すみません

「sudo を実行するには tty がなければいけません。すみません」

いえいえ、ご丁寧に、こちらこそなんかすみません。。

基本的にsudoはtty(標準入出力となっている端末デバイス)が必要らしい。

よくわからんが、端末なしでリモートでコマンドだけ実行はできないってことかと。

リモートでsudoを利用するには「端末なしでsudoを実行するための設定」が必要らしい。

visudoで/etc/sudoersを編集 Defaults requirettyをコメントアウトする。

# visudo
Defaults requiretty
↓
#Defaults requiretty

これでzabbix agent経由でsudoが使用可能に!

# zabbix_get -s {リモートサーバ} -k system.run["sudo ls /root"]
anaconda-ks.cfg

しかし、感の良い人は気づいたはず。これだと全ユーザー端末無しでsudo使えるじゃん。。

zabbix agentはzabbixユーザーでコマンドを実行するため、zabbixユーザーのみtty無しで実行できるように修正します。

# visudo
Defaults requiretty
Defaults:zabbix !requiretty

リモートで操作する時はセキュリティは重要です。本当はzabbixユーザでsudoできるコマンドを制限したほうがいいかと。zabbix_getだけとか。

手抜きは良くないです!!

ITエンジニアの転職

いまITエンジニアの需要は急拡大しています。
ITエンジニアの経験があれば好条件で転職することも難しくありません。

転職ドラフト

☆ 支援ご協力のお願い ☆

この記事が「役に立った」と感じたら

投げ銭の「OFUSEで応援」で支援して頂けたら励みになります!

OFUSEのやり方(説明)

関連記事
記事特集