linux命令 sudo and su
在Linux中,sudo
和 su
是两个非常重要的命令,用于管理权限和执行具有更高权限的操作。它们的功能和使用场景有所不同:
sudo
命令
- 作用:
sudo
("superuser do")命令允许普通用户以其他用户(通常是超级用户 root)的身份运行程序或命令,而无需切换到该用户的会话。 - 用法:
sudo <command>
- 例如:
sudo apt update
- 这条命令将以root权限更新系统软件包索引。
- 例如:
- 特点:
sudo
会临时提升用户的权限,执行完命令后权限恢复为原来的用户权限。- 使用
sudo
时,系统会提示输入当前用户的密码,而不是root用户的密码。 - 用户必须在
sudoers
文件中配置为有权使用sudo
命令,通常通过/etc/sudoers
文件管理。
su
命令
- 作用:
su
("substitute user" 或 "switch user")命令用于切换用户身份,默认为切换到root用户身份,但也可以切换到其他用户。 - 用法:
su <username>
或者直接su
- 例如:
su root
切换到 root 用户,su username
切换到指定的用户名。 - 如果直接输入
su
,系统会默认切换到 root 用户。
- 例如:
- 特点:
su
需要输入目标用户的密码(如果切换到root用户,需要输入root的密码)。- 切换用户后,当前会话将完全以目标用户的身份运行,直到退出(通常使用
exit
命令)。 su -
或su --login
会切换到目标用户并加载该用户的登录环境。
区别与使用场景
-
sudo
:- 用于执行单次需要高权限的操作,无需切换整个会话。
- 更加安全,因为用户不需要知道root用户的密码。
- 适合临时执行管理任务。
-
su
:- 用于长时间切换到另一个用户的身份,适合需要连续执行多个高权限操作的场景。
- 适合系统管理员或需要完全控制某个用户环境的场景。
在实际使用中,sudo
更加安全和常用,尤其是在多用户系统中,因为它允许细粒度的权限管理,并减少对root密码的使用需求。