Capistrano を使用してデプロイスクリプトを設定しようとしていますcap deploy:setup
スクリプトがサーバーに接続し、ディレクトリを作成するコマンドを実行しようとしています。次に、エラーが表示されます:msudo: sorry, you must have a tty to run Sudo
サーバーでrequirettyを無効にするための推奨される解決策があります。 https://unix.stackexchange.com/a/49078/26271
安全にできるかどうか疑問に思っていますか?
サーバーでrequiretty
を使用することには、非常に限られたセキュリティ上の利点があります。ルート以外のコードが悪用された場合(PHPスクリプトなど))、requiretty
オプションは、悪用コードがその権限を直接アップグレードできないことを意味しますSudo
を実行しています。
攻撃者がルートを取得する別の方法が存在する可能性があります。もちろん、攻撃者は引き続きサイトを改ざんできますが、攻撃者がルートを取得できないようにすることは、別のユーザーとして実行されている他のサービスが通常どおり実行され、攻撃者が侵入することを意味しますシステムログを消去できる。 Sudo
ルールのいずれも ディレクトリの作成など危険なもの を実行しない場合、これは問題ではありません。
さらに、そしてrequiretty
にはもっとひどいです— ttyを作成するために特権は必要ありません。 expect を使用します。したがって、requiretty
をオフにすることもできます。それだけでは、セキュリティ上の利点はありません。これは、ユーザーが実行した場合(ログがSudo
を呼び出したユーザーとそれらがどこから来たのかをよりよく理解できるため)には、監査能力がわずかに向上しますが、バックグラウンドジョブから実行した場合はそうではありません。