1、su [-lm] [-c 命令] [username]
① - :单纯使用-如“su -”,代表使用login-shell的变量文件读取方式来登陆系统;若用户名没有写,则代表切换为root用户(若没有写-,只有su 用户名:用户切换过来了但是环境变量家目录等没有改变)
②选项说明:
(1)-l:与-类似,但后面需要加欲切换的用户账号,也是login-shell的方式
(2)-m:-m与-p是一样的,表示使用目前的环境变量设置,而不读取新用户的配置文件
(3)-c:仅进行一次命令,所以-c后面可以加上命令(如 su -c passwd root 表示借用root用户身份只执行一次passwd命令修改密码,执行完就结束)
③使用su切换成为root的身份为non-login shell,这种方式下很多原本的变量不会改变。
④login-shell 与 nologin-shell区别:
(1)login-shell:取得bash时需要完整的登录流程。login-shell读取配置文件的顺序是:/etc/profile、~/.bash_profile、~/.bashrc、/etc/bashrc。(login-shell可以exit或logout退出)
(2) non-login shell:取得bash接口的方法不需要重复登录。non-login shell会读取的配置文件为:~/.bashrc、/etc/bashrc。(nologin-shell 可以exit不可以logout退出)
2、sudo:是一种以限制配置文件中的命令为基础,在有限时间内给用户使用,并且记录到日志中的命令。sudo命令的配置在/etc/sudoers中,sudo是系统管理员用来允许某些用户以root身份运行部分/全部系统命令的程序
① 查看当前是哪个用户登录的shell:whoami
② sudo [-u 新用户账号]
-u:后面可以接欲切换的用户,若无此项则代表切换身份为root
③使用(举例):
说明:sudo借用sshd用户的身份使用touch命令创建文件。
④sudo的执行流程如下(默认只有root用户能使用):
(1)当用户执行sudo时,便会让用户输入自己的密码来确认(root执行sudo时不需要输入密码);
(2)若欲切换的身份与执行者身份相同,那也不需要输入密码。
(3)若密码输入成功,系统会去/etc/sudoers文件中查找该用户是否有执行sudo的权限;
(4)若用户具有执行sudo的权限,便开始sudo后续接的命令;
⑤ vim /etc/sudoers或者visudo root 给用户添加权限。
root ALL=(ALL) ALL
说明:给root用户添加权限,可以从任何一台主机登陆使用任何人的身份去使用任何命令
参数代表含义:
(1)用户账号:系统哪个账号可以使用sudo这个命令。(默认为root用户)
(2)登录者的来源主机名:这个账号由哪台主机连接到本地Linux主机。从哪个终端登录上来的使用sudo。(默认值root可来自任何一台网络主机)
(3)可切换的身份:这个账号可以切换成什么身份来执行后续的命令。(默认root可以切换成任何人)
(4)执行的命令:这个命令最好使用绝对路径编写。默认root可以切换任何身份且进行任何命令。
ALL是关键字,代表任何身份、主机或命令。
⑥例题:对用户root,redhat设置权限
[root@localhost ~]# vim /etc/sudoers
root ALL=(ALL) ALL
redhat ALL=(ALL) ALL 添加该内容
测试:
[redhat@localhost ~]$ grep root /etc/shadow
grep: /etc/shadow: Permission denied
[redhat@localhost ~]$ sudo grep root
/etc/shadow root:$6$aiujdLezRBJygsQ.$Il8bel.t.i.SCAEqWihGb2rxTkPw/CgpZbaVQh8m13FzRDqMiFl2ZcEQdFBXzSQ9ix/5KHgg6.SwjaYbz9RPD0::0:99999:7:::
⑦如果想要以组(基本组或附加组)的方式给组用户成员赋予权限,则应该添加如下内容:
(1)vim修改组名为test权限。
(在最左边加上%,代表后面接的是一个用户组)
(2)创建一个组为test,创建用户hong以test为基本组,创建用户ming以test为附加组。
(3)查看用户信息。
(4)修改用户密码。
(5)切换至 hong用户。
(6)此时用户hong可借助root用户权限过滤查看hong的密码信息。
(7)切换至ming用户。
(8)此时用户ming可借助root用户权限过滤查看ming的密码信息。
说明:无论以一个组为基本组还是附加组,给这个组以组的方式添加权限,组里的所有成员都可使用权限。
⑧如果不要密码,参照下面实例修改即可
[root@localhost ~]# vim /etc/sudoers
103 ## Same thing without a password
104 # %wheel ALL=(ALL) NOPASSWD: ALL