小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
在Linux系统中,由于root的权限过大,一般情况都不直接使用root用户,临时使用root权限的话多采用su和sudo命令,那二者有什么区别呢?接下来就来说一下。
sudo
sudo命令用来以其他身份(默认身份为root)来执行命令,在/etc/sudoers中设置了可执行sudo指令的用户。
语法
sudo [选项] [command]
选项:
- -b:在后台执行指令
- -h:显示帮助
- -H:将HOME环境变量设为新身份的HOME环境变量
- -k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码
- -l:列出目前用户可执行与无法执行的指令
- -p:改变询问密码的提示符号
- -s :执行指定的shell
- -u <用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份
- -v:延长密码有效期限5分钟
- -V:显示版本信息
command:需要运行的指令。
默认情况下,系统只有root用户可以执行sudo命令。需要root用户通过使用visudo命令编辑sudo的配置文件/etc/sudoers,才可以授权其他普通用户执行sudo命令。
sudo的运行的流程:
-
当用户运行
sudo命令时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo命令的权限; -
如果用户具有可执行
sudo命令的权限,就让用户输入自己的password确认。 -
若密码输入成功,则开始执行sudo后续的命令。
su
su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。
切换时一般都是执行su – username,然后输入password就可以了(root用su切换到其它身份时不需要输入password)。
语法
su [选项] username
选项:
- -l:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量
- -p和-m:表示切换为指定用户的身份,但不改变当前的工作环境(不使用切换用户的配置文件)
- -c <命令>:执行完指定的指令后,即恢复原来的身份
su和su -区别
su只是切换到其他用户,不改变原用户的工作目录,及其他环境变量目录。
su - 是完整的切换到一个用户环境。
举个例子,普通用户user1通过su命令切换成root用户,但没有使用 - 选项,这样情况下,虽然看似是root用户,但系统中的$PATH环境变量依然是user1的,而不是root的,因此当前工作环境中,并不包含/sbin、/usr/sbin等超级用户命令的保存路径,这就导致很多管理员命令根本无法使用;因此,想要完整的切换到root用户,就要执行su -命令。
原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~
最后,感谢女朋友在工作和生活中的包容、理解与支持 !