我试图使用Capistrano设置部署脚本。 在一步,cap deploy:setup
脚本正在连接到我的服务器,并试图运行用于创建目录的命令。然后我看到一个错误:msudo: sorry, you must have a tty to run sudo
有一个建议的解决方案可以在我的服务器上禁用requiretty。https://unix.stackexchange.com/a/49078/26271
我想知道这样做是否安全?
我试图使用Capistrano设置部署脚本。 在一步,cap deploy:setup
脚本正在连接到我的服务器,并试图运行用于创建目录的命令。然后我看到一个错误:msudo: sorry, you must have a tty to run sudo
有一个建议的解决方案可以在我的服务器上禁用requiretty。https://unix.stackexchange.com/a/49078/26271
我想知道这样做是否安全?
Answers:
在requiretty
服务器上拥有一个非常有限的安全性优势。如果利用了某些非root用户代码(例如,PHP脚本),则该requiretty
选项表示利用代码无法通过运行来直接升级其特权sudo
。
攻击者可能有另一种方法来获得root权限,当然,攻击者仍然可以破坏您的站点,但不让攻击者获得root权限意味着作为不同用户运行的其他服务将继续正常运行,并且攻击者不会无法删除系统日志。如果您的sudo
规则都没有做任何危险(例如创建目录),那么就不用担心了。
此外,更令人讨厌的requiretty
是,不需要创建tty的特权,例如,与Expect一样。因此,您最好关闭requiretty
:单独关闭它并不能提供安全优势。当用户执行时,它确实提供了适度的可审核性优势(因为日志可以更好地了解调用的对象sudo
以及用户来自何处),但是当从后台作业执行时则不能。
requiretty
选项不会阻止任何人使用sudo。
requiretty
如果用户正在执行通过ssh要求输入密码的sudo命令,则可以防止用户以明文形式泄露密码。它在那里强迫用户调用ssh -t。
expect
(或screen
例如),那么requiretty
从安全角度来看是没有用的?(我不太理解您在那句话中“