WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

“sorry, you must have a tty to run sudo” というエラーメッセージが出たときの対処法

      2015/07/23

“sorry, you must have a tty to run sudo”

デプロイメントツールでのタスク実行時に下記のようなエラーメッセージが出る。

$ vendor/bin/rocketeer deploy
...
[ec2-user@xx.xx.xx.xxx] (dev) sorry, you must have a tty to run sudo

タスクの中でsudoでコマンドを実行するものがあるが、これがリモート側で許可されていないことが原因。

「Defaults requiretty」という設定は、sudo するときに TTY を要求するもので、クラッキング目的で侵入したプログラム等から sudo されないようにするのが目的のようです。
vagrant up したらエラー「sudo: sorry, you must have a tty to run sudo」が出たときの対処 – 彼女からは、おいちゃんと呼ばれています

“Defaults requiretty”の設定

/etc/sudoersを編集して”Defaults requiretty”をコメントアウトする。

$ sudo visudo
#Defaults requiretty

特定のユーザに対してのみ許可すると少しだけセキュア。

$ sudo visudo
Defaults:'対象のユーザID' !requiretty

デプロイメントツールがCapistranoなら設定次第でリモートのsudoersを編集しなくてもいいかも。

sudo tty:true  # Capistrano3系ならこれでOK?(未確認)

参考資料

 - SSHサーバ構築 , , , ,