sudo & su

sudosu 是基于 unix 的系统中的两个重要命令,可以让您执行管理任务。虽然它们看起来很相似,但是命令 sudo -isudo su 有关键的区别。

sudo 和 su

在 Unix 和类 Unix 系统中,sudo (superuser do) 允许用户以其他用户 (超级用户或 root) 的安全权限运行程序。其主要目的是提高系统安全性。您可以使用 sudo 为他们提供有限的 root 访问权限,而不是与需要执行一些管理任务的人共享 root 密码。

su (switch user),用于切换到系统中的其他用户。如果未指定用户名,su 将切换到 root 帐户。

sudo -i 命令

sudo -i 命令使用 root 环境变量启动根 shell。这类似于 root 用户登录到 shell 会话。

当你执行 sudo -i 命令,会发生以下事情:

  • 切换到 /root 目录
  • 获取 root 用户的 shell
  • 使用 root 用户的环境变量,不保留当前用户的环境变量。

sudo su - 命令

sudo su 命令结合 sudo 和 su 来模拟 root 登录 shell。后面的 su 表示登录 shell,类似于 sudo 的 -i。但是,sudo su 处理用户环境的方式与 sudo -i 不同。

当你执行 sudo su – 命令,会发生以下事情:

  • 切换到 /root 目录
  • 获取 root 用户的 shell
  • 使用 root 环境变量,并继承 su 命令的环境变量。

sudo -i 和 sudo su - 的差异

虽然 sudo -isudo su - 都赋予 shell root 权限,但它们处理用户环境的方式不同:

(1) Shell initialization files

这些命令读取不同的 shell 初始化文件。sudo -i 读取 root 用户的 .bashrc 文件。sudo su - 读取 root 用户的 .bash_profile、.bash_logout 以及 .bashrc 文件。

(2) Environment Variables

sudo -i 仅使用 root 用户的环境变量。sudo su - 使用当前用户的环境变量,然后由 root 用户的环境变量替换。这可能导致命令行为的差异。

(3) Command History

使用 sudo -i, 命令 history 存储在root 用户的历史记录中。使用 sudo su -,命令 history 存储在调用用户的命令历史记录中。

(4) Command Usage

sudo -i 是单个命令,而 sudo su - 是两个命令的组合,这使得 sudo -i 更有效率。

我的开源项目

酷瓜云课堂-开源知识付费解决方案


鸠摩智首席音效师
478 声望10 粉丝

身强体健,龙精虎猛的活着。


引用和评论

0 条评论