总结:
sudo和su都是用于切换用户身份的命令,但它们在使用和功能上有明显的区别。
1. sudo命令:
- 需要输入当前用户的密码。
- 允许使用提升的权限运行单个命令。
- 默认有时间限制(如Ubuntu默认为15分钟)。
- 执行命令的用户必须在sudoers名单中。
- 使用sudo -i可以频繁执行只有超级用户才能执行的命令,而无需每次输入密码。
2. su命令:
- 需要输入目标用户的密码(如切换到root用户时)。
- 启动一个新的shell,允许以目标用户的权限运行多个命令,直到明确退出登录。
- 切换用户身份时,环境变量也会切换成新用户的环境变量。
- 没有时间限制。
- 不要求执行命令的用户必须在sudoers名单中。
使用这两个命令时需要注意,su切换用户身份时,如果要使用目标用户的环境变量,必须使用“su - 用户名”的形式,其中的“-”不能省略。而sudo命令则只需要知道当前用户的密码,并授权执行特定的命令或操作。