我正在尝试学习 Linux 中的更多安全性,并且很难理解通过 sudo 安装的应用程序与通过 sudo 运行的应用程序的权限和访问权限之间的差异。我对此有几个问题:
- 使用 sudo 安装应用程序时,这是否会授予应用程序对我的系统执行任何操作的完全权限?或者对此允许的操作有限制吗?
- 如果使用 sudo 安装应用程序,那么使用/不使用 sudo 命令运行应用程序时,访问/权限是否会有所不同?(例如,sudo pluma)
- 如果没有使用 sudo 安装程序,那么使用 sudo 命令运行该程序时权限是否会有所不同?
谢谢
该
sudo
命令以 root 权限运行命令。如果您使用 sudo 安装应用程序,则安装程序具有 root 权限。如果您使用 sudo 运行应用程序,则它具有 root 权限。安装程序以 root 身份运行时,可以修改系统、安装以任何用户身份运行并自动启动的服务,以及为应用程序分配权限。它可能有为应用程序授予提升权限的选项,但通常没有。例如,sudo 命令本身可以使用包管理器安装……并且安装 apache 通常会将其设置为以 apache 用户身份启动。普通应用程序的安装程序可能不会分配任何特殊权限。
请注意,某些安装程序(例如,snap)实际上可以安装应用程序,以便它在容器内以较低的权限运行。
如果安装程序没有授予应用程序额外的权限或将其安装在容器中以减少权限,则应用程序安装后,当它在没有 sudo 的情况下正常运行时,它将具有运行它的用户的权限。
如果您不使用 sudo 安装应用程序,则可能将其安装在您的主目录中。因此,您拥有该应用程序中的所有文件,并且它位于您的环境中,可能不与其他用户共享。使用 sudo 安装它将(可能)为所有用户安装它,并且安装的文件(可能)不属于您。理论上,使用 sudo 安装可能更安全,而使用您的帐户安装可能不太安全,因为您的用户帐户可以在安装后修改应用程序。如果您不与其他用户共享该应用程序,这一点就不那么重要了。
如果您的用户帐户意外运行了寻找要修改的内容或寻找要删除或损坏的内容的恶意软件,则已安装应用程序文件的所有权可能很重要。
请注意,使用 sudo 运行不了解提升权限的应用程序可能会产生非常糟糕的结果。例如,如果应用程序创建配置文件并且您使用 sudo 运行它,这些配置文件可能在您的用户帐户中创建但由 root 拥有,这可能会导致应用程序在没有 root 的情况下正常运行,因为它可能无法读取或修改您帐户中的这些配置文件。同样,如果您使用 sudo 运行它然后保存数据,它可以将数据保存在系统中的任何位置,从而导致垃圾文件出现在奇怪的地方,您以后查找时甚至可能找不到它们。