文章目录

  • inux普通用户下执行su和执行sudo su有什么区别?
  • 我平时安装docker等第三方应用都是直接su,然后在root下安装的,如果我改成sudo su,会不会有问题?


inux普通用户下执行su和执行sudo su有什么区别?

在 Linux 系统中,susudo su 用于从普通用户切换到超级用户(root 用户),但它们之间有一些关键的区别:

  1. 权限验证方式不同:
  • su(switch user 的缩写)允许用户切换到另一个用户身份。当你执行 su 命令时(比如 susu root),系统会要求你输入目标用户(通常是 root)的密码。
  • sudo su 结合了 sudo(superuser do 的缩写)和 su。在这种情况下,使用 sudo 执行 su 命令。此时系统会要求你输入当前用户的密码(如果你是通过 sudo 获取 root 权限的)。这样做的好处是不需要知道 root 用户的密码。
  1. 安全性不同:
  • 使用 su 时,任何知道 root 密码的用户都可以切换到 root。这可能会有安全风险,因为 root 密码可能被多人共享。
  • 使用 sudo su 时,只有在 sudoers 文件中被明确授权的用户才能切换到 root。这样可以更细粒度地控制谁可以获得 root 权限,并且每个用户使用自己的密码,增加了安全性。
  1. 环境变量的处理:
  • su 默认不会加载 root 用户的完整环境,这意味着一些环境变量可能不会被设置。
  • sudo su 则会尽可能地继承当前用户的环境,并以 root 用户身份执行。通过 sudo 执行 su 通常能获得更接近于完整 root 环境的体验。
  1. 日志记录:
  • su 命令本身通常不会在日志中记录执行者的身份,仅记录了 su 操作本身。
  • sudo su 通过 sudo 执行,因此 sudo 的日志会记录执行该命令的用户和时间,这有助于审计和追踪。

总体来说,sudo su 在安全性和灵活性上通常是更好的选择。

我平时安装docker等第三方应用都是直接su,然后在root下安装的,如果我改成sudo su,会不会有问题?

使用 sudo su 替代直接使用 su 进行 Docker 等第三方应用的安装,通常不会引发问题,而且从安全性和日志记录的角度看,这是一个更好的做法。以下是一些关键点:

  1. 环境变量的差异:
  • 当你使用 su 成为 root 用户后,可能不会完全加载 root 用户的环境,这取决于 su 的使用方式和你的 shell 配置。这意味着某些环境变量可能和直接登录为 root 用户时不同。
  • 使用 sudo su,你的环境变量更可能接近当前用户的环境,但仍然以 root 身份运行。这通常对大多数应用安装不会产生影响,因为安装脚本通常会设定它们需要的特定环境变量。
  1. 权限和安全性:
  • 使用 su 时,你需要知道 root 用户的密码。这在多用户环境中可能不是最佳选择,因为共享 root 密码增加了安全风险。
  • sudo su 允许你在不知道 root 密码的情况下,使用自己的用户密码获取 root 权限。这样做的好处是每个用户都使用自己的凭证,并且 sudo 的使用会被记录下来,有助于事后审计。
  1. 日志记录:
  • 使用 su 直接切换到 root 用户不会在 sudo 日志中留下记录。
  • 使用 sudo su 则会在 sudo 日志中记录谁执行了该命令,这对于跟踪和安全审计很有帮助。

总结来说,如果你改为使用 sudo su 安装 Docker 或其他第三方应用,通常不会遇到问题,反而可以提高系统的安全性和可追踪性。当然,具体行为可能受到你的 Linux 发行版和具体配置的影响,但对大多数标准安装而言,这是一个无缝的转变。