文章目录
- inux普通用户下执行su和执行sudo su有什么区别?
- 我平时安装docker等第三方应用都是直接su,然后在root下安装的,如果我改成sudo su,会不会有问题?
inux普通用户下执行su和执行sudo su有什么区别?
在 Linux 系统中,su
和 sudo su
用于从普通用户切换到超级用户(root 用户),但它们之间有一些关键的区别:
- 权限验证方式不同:
-
su
(switch user 的缩写)允许用户切换到另一个用户身份。当你执行su
命令时(比如su
或su root
),系统会要求你输入目标用户(通常是 root)的密码。 -
sudo su
结合了sudo
(superuser do 的缩写)和su
。在这种情况下,使用sudo
执行su
命令。此时系统会要求你输入当前用户的密码(如果你是通过sudo
获取 root 权限的)。这样做的好处是不需要知道 root 用户的密码。
- 安全性不同:
- 使用
su
时,任何知道 root 密码的用户都可以切换到 root。这可能会有安全风险,因为 root 密码可能被多人共享。 - 使用
sudo su
时,只有在sudoers
文件中被明确授权的用户才能切换到 root。这样可以更细粒度地控制谁可以获得 root 权限,并且每个用户使用自己的密码,增加了安全性。
- 环境变量的处理:
-
su
默认不会加载 root 用户的完整环境,这意味着一些环境变量可能不会被设置。 -
sudo su
则会尽可能地继承当前用户的环境,并以 root 用户身份执行。通过sudo
执行su
通常能获得更接近于完整 root 环境的体验。
- 日志记录:
-
su
命令本身通常不会在日志中记录执行者的身份,仅记录了su
操作本身。 -
sudo su
通过sudo
执行,因此sudo
的日志会记录执行该命令的用户和时间,这有助于审计和追踪。
总体来说,sudo su
在安全性和灵活性上通常是更好的选择。
我平时安装docker等第三方应用都是直接su,然后在root下安装的,如果我改成sudo su,会不会有问题?
使用 sudo su
替代直接使用 su
进行 Docker 等第三方应用的安装,通常不会引发问题,而且从安全性和日志记录的角度看,这是一个更好的做法。以下是一些关键点:
- 环境变量的差异:
- 当你使用
su
成为 root 用户后,可能不会完全加载 root 用户的环境,这取决于su
的使用方式和你的 shell 配置。这意味着某些环境变量可能和直接登录为 root 用户时不同。 - 使用
sudo su
,你的环境变量更可能接近当前用户的环境,但仍然以 root 身份运行。这通常对大多数应用安装不会产生影响,因为安装脚本通常会设定它们需要的特定环境变量。
- 权限和安全性:
- 使用
su
时,你需要知道 root 用户的密码。这在多用户环境中可能不是最佳选择,因为共享 root 密码增加了安全风险。 -
sudo su
允许你在不知道 root 密码的情况下,使用自己的用户密码获取 root 权限。这样做的好处是每个用户都使用自己的凭证,并且sudo
的使用会被记录下来,有助于事后审计。
- 日志记录:
- 使用
su
直接切换到 root 用户不会在sudo
日志中留下记录。 - 使用
sudo su
则会在sudo
日志中记录谁执行了该命令,这对于跟踪和安全审计很有帮助。
总结来说,如果你改为使用 sudo su
安装 Docker 或其他第三方应用,通常不会遇到问题,反而可以提高系统的安全性和可追踪性。当然,具体行为可能受到你的 Linux 发行版和具体配置的影响,但对大多数标准安装而言,这是一个无缝的转变。