我目前正在为我的学校做一个项目,旨在在虚拟机中创建一个服务器。
主题的要求之一是在模拟的Debian Linux上安装sudo
,sudoers
配置文件中有以下字段:
Defaults requiretty
需要我设置的主题行:
- 出于安全原因,必须启用TTY模式
我知道tty
是一个命令,它打印当前连接到标准输入的终端的文件名。然而,我看不出这是如何确保服务器更安全的。
设置requiretty
时,必须从登录的终端会话(tty(运行sudo
。这可以防止从守护进程或其他分离的进程(如cronjobs或Web服务器插件(使用sudo
。这也意味着,如果不设置终端会话,就不能直接从ssh
调用运行它。
这可以防止某些类型的升级攻击。例如,如果我有一种方法可以修改具有NOPASSWD sudo权限的用户的crontab,我可以使用它以root身份启动作业。有了requiretty
,我不能这么做。。。
容易地这种限制并不特别难规避,因此与它所破坏的有效用例相比,通常并没有那么有用。Red Hat过去经常使用它,但几年前就把它去掉了。