例如,要编辑系统文件/etc/named/named.conf
,我使用:
su -
Password:
gedit
然后打开并编辑上面的文件,而不是:
nano /etc/named/named.conf
或者:
vi /etc/named/named.conf
这种时不时使用 GUI 工具的习惯是否会导致安全问题,尤其是在服务器环境?
答案1
只有运行的代码越多,就越多潜在的存在安全漏洞。因此,至少在理论上,您希望最大限度地减少已安装/运行的程序的数量和复杂性。在实践中,只要您始终掌握安全更新,那么就不会,没有真正的安全理由来避免在服务器上使用 GUI。
当然,它确实引出了一个问题,为什么您甚至在图形控制台上使用服务器而不是ssh
首先通过,您应该非常舒服地使用终端编辑器。
答案2
如果唯一的原因是编辑特定文件,我认为切换到交互式 shell 已经是一个“安全问题”。但这只是一个观点。
考虑一下您切换到root
交互方式。然后无论你运行什么,都以最高权限运行。现在的问题是您是否信任您正在运行的应用程序。特定应用程序可能存在导致安全问题的错误。
我的观点是,您希望最大限度地减少直接在root
.运行 X 应用程序会带来整个 X 堆栈的复杂性,如果任何后门或逃逸可能被滥用,攻击者就会获得root
访问权限。它不仅仅涉及 X 堆栈,还涉及您在root
.这也是为什么您/我们必须非常小心已setuid
设置位的应用程序的原因。
作为您工作流程的解决方案,我将提供该sudoedit
命令。您可以使用它的形式
$ sudoedit <file_to_edit>
它将尝试对您进行身份验证/授权(如常规sudo
操作),然后它将运行您首选的编辑器(由EDITOR
环境变量设置)。与直接运行相比$ sudo $EDITOR <file_to_edit>
,编辑器本身在您的原始权限下运行,在您退出后,它将用您的编辑结果替换该文件。不过,需要退出编辑器才能使更改生效可能会有点破坏性。