开发者社区> 开发与运维> 正文

su和sudo

简介: su和sudo是我们常常需要用到的Linux命令,下面就将一下该命令怎么具体怎么使用,区别在哪

1、su命令
su/su - username:切换用户,如果从root用户切换到切换用户,不需要其他用户的密码;username为空,默认为root用户,从普通用户切换到root用户,需要输入root用户的密码

login shell和non-login shell:
login shell是说在取得bash时需要完整的登陆流程,每个用户登陆取得bash的时候都会读取这个文件etc/profile
non-login shell就是取得bash不需要重复登录,就像你在桌面视图中用ctrl+alt+T启动的shell输入窗口就是non-login shell。还有就是你在shell窗口直接su切换的用户,都属于non-login shell。

su/su-后的区别:
1、如果直接su的话,不会读取/etc/profile的,所以你的环境变量PATH,MAIL、pwd等是不会改 变的,此时是non-login shell,
2、如果想读取/etc/profile的话我们需要用su -,相当于以新用户重新启动,是login shell执行命令会查找新用户的环境变量
2、sudo命令
每次需要切换到root用户下执行命令时,都需要输入密码,不太安全;并且每次需要在root用户执行命令时,都需要先切换到root用户再执行命令,有时候可能只需要执行一次命令,解决方法:sudo

sudo:可以切换到其他用户执行命令,执行完之后自动切回原用户,并且不需要root用户的密码,只需要当前用户的密码

但是并不是所有用户都有运行sudo的权限,想要运行sudo,需要配置/etc/sudoers文件
[lxx2@172-16-8-141 /home/lxx2]
$sudo su -
[sudo] password for lxx2:
lxx2 is not in the sudoers file. This incident will be reported.

etc/sudoers文件可读但不可修改,因为sudoe这个文件是由语法构成的,仅能通过root用户下执行visudo命令修改
1、对单个用户配置sudo权限
只需要在/etc/sudoers中添加一行:Oracle ALL=(ALL) ALL
第一列表示需要开启sudo权限的用户;第二列表示该用户的主机名;第三列表示sudo默认切换到哪个用户上执行命令,只能切换到root用户;第四列表示sudo可运行的命令,就是限定该用户的执行权限
2、对多个用户配置sudo权限
1、可以照方面的方法,一行行配置;
2、也可以用用户组,将需要运行sudo的用户都添加到一个组里,可以添加到已经存在的组,如%wheel,也可以自定义,一个组里用户运行sudo可执行的命令时一样的
自定义:
3、通过别名设置
在sudoers文件里有一些别名,User_Alias表示具有sudo权限的用户列表,就是第一列參数。Host_Alias表示主机的列表。就是第二列參数。Cmnd_Alias表示同意运行命令的列表,就是第四列參数。还有个Runas_Alias。我初始的sudoers里是没有的,这个表示用户以什么身份登录。也就是第三列參数。
User_Alias LUXXUSERS = 1, manager2, manager3

   Cmnd_Alias QUANXIAN = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
   LXXUSERS   ALL=(root)    QUANXIAN

权限:有时不需要当前用户切换到其他用户执行所有命令,可以限定执行的命令
ALL表示有切换到的用户的所有权限
如/usr/bin/passwd ,就是有修改用户密码的权限,
!usr/bin/passwd root就是没有修改root密码的权限,
/bin/su - 表示有切换到除原用户外其他所有用户并且不返回原用户的权限,相当于切换到到root用户执行su -/su - username

总结;sudo 能保护目标用户的密码不外流。帮root管理系统时,su是把root全部权利交给用户,sudo可以对用户赋予root用户的一部分权利,使系统更安全,并且分工明确

版权声明:本文中所有内容均属于阿里云开发者社区所有,任何媒体、网站或个人未经阿里云开发者社区协议授权不得转载、链接、转贴或以其他方式复制发布/发表。申请授权请邮件developerteam@list.alibaba-inc.com,已获得阿里云开发者社区协议授权的媒体、网站,在转载使用时必须注明"稿件来源:阿里云开发者社区,原文作者姓名",违者本社区将依法追究责任。 如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

集结各类场景实战经验,助你开发运维畅行无忧

其他文章