linux系统(centos)下su和sudo命令的区别

时间:2022-06-15 17:17:55

linux系统(centos)下su和sudo命令的区别

区别

我们在日常使用过程中,这2个命令很多时候能达到相同的效果,对细节区别十分模糊,这里进行简单的解释和区分。希望大家能够正确使用这2个命令,使用过程中,也知其原因。

  • su命令:用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。
  • sudo命令:临时用来以其他用户的身份来执行命令。普通用户需要在/etc/sudoer文件里面配置才能使用sudo命令。

su命令基本使用

基本参数:

-c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份;
-f或——fast:适用于csh与tsch,使shell不用去读取启动文件;
-l或——login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量;
-m,-p或--preserve-environment:变更身份时,不要变更环境变量;
-s<shell>或--shell=<shell>:指定要执行的shell;
--help:显示帮助;
--version;显示版本信息。

常见的使用场景:

  1. 切换用户。普通用户登录后,不加任何参数,默认是切换到root用户。

    su  #默认切换到其他用户,需要输入其他用户的密码。
    
    su zdsoft #切换到zdsoft用户,不会加载zdsoft用户的个人环境配置文件,不会进入zdsoft用户的home目录。
    #root用户切换到其他用户不需要输入密码 su - zdsoft #切换到zdsoft用户,加载zdsoft用户个人环境配置文件,并进入到zdsoft的home目录。
  2. 临时切换,执行某命令后,立马退出来。

    su root -c 'ls -l'  #切换到root命令,执行ls -l命令后退回来

sudo命令基本使用

备注:sudo明确临时切换身份来执行命令,可以在/etc/sudoer文件里面配置免密。在生产环境中,系统管理员管理系统时,建议不要使用root命令直接ssh远程登录,也不要直接使用root操作系统变更。而是使用一个运维专用的普通账号。绝大情况下使用这个普通账号进行系统管理(部署服务,上线应用,查看日志等等)。特殊情况下需要root用户,那就应该为这个普通账号配置sudo权限。

/etc/sudoer文件里面,也可以配置,限制某用户用sudo时,只能执行特定的几个命令。

基本参数:

-b:在后台执行指令;
-h:显示帮助;
-H:将HOME环境变量设为新身份的HOME环境变量;
-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。
-l:列出目前用户可执行与无法执行的指令;
-p:改变询问密码的提示符号;
-s<shell>:执行指定的shell;
-u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
-v:延长密码有效期限5分钟;
-V :显示版本信息。

常用使用场景:

  1. 使用某用户的名义执行命令。

    sudo -u zdsoft touch test.txt #使用zdsoft用户身份执行touch命令。
    #若不加上此参数,则预设以root作为新的身份;
  2. 永久切换到root下面,这种情况就和su很像。

    sudo -i #切换root用户,并不退出来。
    #-i就是登录的参数