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

  • A+
所属分类:linux技术
摘要

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


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就是登录的参数 
  3. 提权

sudo su #该命令和sudo -i能达到一样的效果。但是sudo su需要当前登录用户有sudo权限,输入的密码为当前用户密码。 sudo -i #