![我应该以 root 身份还是以用户身份安装非存储库软件?](https://linux22.com/image/834381/%E6%88%91%E5%BA%94%E8%AF%A5%E4%BB%A5%20root%20%E8%BA%AB%E4%BB%BD%E8%BF%98%E6%98%AF%E4%BB%A5%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E5%AE%89%E8%A3%85%E9%9D%9E%E5%AD%98%E5%82%A8%E5%BA%93%E8%BD%AF%E4%BB%B6%EF%BC%9F.png)
安装存储库中没有的程序的正确方法是什么:我的用户应该拥有二进制文件并将它们保存在中~/bin/
,还是 root 应该拥有二进制文件并将它们保存在中/opt/
?
我指的是桌面系统,而不是服务器,以及不需要任何特殊权限(如在启动时启动等)的普通程序。我担心的是安全问题。如果二进制文件归 root 所有,模式为 755,并且以我的用户身份运行,那么病毒就不应该能够覆盖二进制文件,而我的用户拥有二进制文件的情况则相反,对吗?我注意到,其中的所有内容/usr/bin/
都归 root 所有,并具有 755 权限。
答案1
具体来说,这里有两件事要做。您可以“运行”程序或“安装”它。
跑步
运行程序只需要可执行文件启用“执行”权限。这样运行的程序,从普通用户开始,可以访问用户有读/写权限的所有内容,通常是/home
、/tmp
和 等目录/media/NAMEOFDRIVE
。
因此基本上您可以运行自包含的可移植程序、脚本,甚至构建程序,make
只要它们不需要触及 Root 拥有的任何目录。
安装
安装程序涉及将其核心组件复制到操作系统的受限部分,以简化其执行并将其与其他系统和程序集成。这需要 Root 权限,因为它涉及写入 Root 拥有的目录。Root 存在的原因是为了防止任何恶意程序或脚本在未获得用户或管理员的严格许可的情况下对操作系统造成严重损害。
通常,文件系统“根目录”( /
) 中的几乎每个目录都只由 Root 拥有和写入。例外情况包括/home
(存储用户配置文件和数据的位置)、/tmp
(写入临时文件的位置,以便在不再需要或重新启动时删除)以及通常位于其下的任何文件夹/media
(但不是其本身),因为这是安装 USB 驱动器和 DVD 等内容的位置。
概括
基本上,只要程序或脚本不需要写入 Root 拥有的目录,那么它就不应该以 Root 身份运行。Ubuntu(以及一般的 Linux)中的一项安全功能是当程序想要访问 Root 控制的区域时始终提示用户,这意味着每次运行 APT 之类的程序时,系统都会提示您输入密码。唯一的例外是设计为在启动时自动启动的程序,但这些程序必须先从用户那里获得 Root 权限,然后才能进行设置。
此外,Ubuntu(以及其他一些发行版)通过使用sudo
和gksu
工具更进了一步。与最初通过su
和授予程序 Root 访问权限的做法不同,该程序可以自由使用 Root 权限,直到关闭,sudo
而是gksu
只授予 Root 权限以执行单个命令,从而进一步限制了用户意外授予错误程序 Root 权限的可能性。