openEuler基础(二十五)用户之间切换操作(su、sudo命令)

本文介绍了在openEuler系统中如何切换用户权限,包括su、su - 和sudo命令的使用。su命令仅切换用户,不改变shell环境,而su - 则会同时切换用户和环境。sudo命令允许普通用户执行管理员命令,提供了更安全的权限管理方式。文章详细讲解了各命令的用法和权限设置,并提供了具体操作示例。

提出问题:
如何给普通用户提升权限?
如何让用户之间相互切换?

openEuler用户的类别为超级用户、普通用户和虚拟用户。一般情况下,登录账户为普通用户,但是在更改系统文件或者执行某些命令时,需要以root用户的权限才能进行,此时就需要将普通用户提升权限,更改为root用户。
在切换用户身份时,常用到的命令有三种:
su:此命令在切换用户时,仅切换root用户身份,但shell环境仍为普通用户;
su –:此命令在切换用户时,用户身份和shell环境都会切换为root用户;
sudo:此命令可以允许普通用户执行管理员账户才能执行的命令。

一、su命令
su可用来更改用户身份,但不会更改shell环境。
语法:su [options] [-] [ […]]
其中的命令选项说明如下:
-m,-p:执行su时不会改变环境变量
-s:指定要执行的shell(bash、csh、tcsh等)
-c:变更账号为USER的使用者并在执行完command后变为原使用者
-f:不需要读启动档,仅用于 csh 或 tcsh
etc…

注意:openEuler21.09默认情况下,无法使用su命令切换普通用户到root用户,也不能切换普通用户A到普通用户B。
原因是参数文件/etc/pam.d/su中规定了,用户必须加入wheel组才能够使用su命令。
解决方案:
将参数文件/etc/pam.d/su中auth required pam_wheel.so这一行注释掉。
也可以将需要切换的用户都加入wheel组。

用法示例1:root用户切换到普通用户

[root@localhost ~]# useradd test1
[root@localhost ~]# passwd test1
更改用户 test1的密码 。
新的密码: 
重新输入新的密码: 
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# su test1

无需输入密码,直接切换到普通用户

用法示例2:普通用户切换到root用户
首先,修改配置文件

[root@localhost ~]# vi /etc/pam.d/su

找到下面这一行:

auth           required        pam_wheel.so use_uid

在这一行的开头加上#,注释掉。

#auth           required        pam_wheel.so use_uid

按ESC键,输入:wq,保存并退出。

切换到普通用户

[root@localhost ~]# su test1

切换回root用户

[test1@localhost root]$ su root
密码:

二、su – 命令
su可用来更改用户身份,但不会更改shell环境。
su -切换用户时,可以同时改变shell环境。

用法示例1:root用户切换到普通用户

[root@localhost ~]# useradd test1
[root@localhost ~]# passwd test1
更改用户 test1的密码 。
新的密码: 
重新输入新的密码: 
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# su - test1

无需输入密码,直接切换到普通用户

用法示例2:普通用户切换到root用户
首先,修改配置文件

[root@localhost ~]# vi /etc/pam.d/su

找到下面这一行:

auth           required        pam_wheel.so use_uid

在这一行的开头加上#,注释掉。

#auth           required        pam_wheel.so use_uid

按ESC键,输入:wq,保存并退出。

切换到普通用户

[root@localhost ~]# su - test1

切换回root用户

[test1@localhost ~]$ su - root
密码:

三、sudo命令
sudo可允许普通用户执行root用户才能执行的任务。
语法:sudo –h | -K | -k | -V
其中的命令选项说明如下:
-h:显示版本号以及指令的使用说明
-k:使使用者在下次执行sudo时询问密码
-V:显示版本编号
-l:显示使用者的权限
-L:显示sudos设置
etc…

su对切换到超级权限用户root后,权限是无限制性的,所以su并不适合提供给多个管理员去管理服务器系统。
如果用su换到超级用户来管理系统,也不能明确哪些工作是由哪个管理员进行的操作。特别是对于服务器的管理,最好是针对每个管理员的技术特长和管理范围,有针对性的下放给权限,并且约定其些工具来完成与其相关的工作,这时我们就有必要用到 sudo。
通过sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道root密码,所以sudo 相对于权限无限制性的su来说,还是比较安全的,sudo 也被称为受限制的su;另外sudo 是需要授权许可的,所以为授权许可的su。
sudo命令以系统管理者的身份执行指令,也就是说,经由sudo所执行的指令就好像是root亲自执行。
sudo执行命令的流程是当前用户切换到root(或其它指定切换到的用户);然后以root(或其它指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户,而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权。
使用权限:在/etc/sudoers中有出现的使用者。

用法示例1:为新用户user1增加sudo权限
(1)添加新用户user1,并设置密码

[root@localhost ~]# useradd user1
[root@localhost ~]# passwd user1
更改用户 user1 的密码 。
新的密码: 
重新输入新的密码: 
passwd:所有的身份验证令牌已经成功更新。

(2)查看/etc/sudoers文件权限,如果只读权限,修改为可写权限

[root@localhost ~]# ll /etc/sudoers
-r--r-----. 1 root root 4.3K  729  2020 /etc/sudoers
[root@localhost ~]# chmod 777 /etc/sudoers
[root@localhost ~]# ll /etc/sudoers
-rwxrwxrwx. 1 root root 4.3K  729  2020 /etc/sudoers

(3)执行vi命令,编辑/etc/sudoers文件,添加要提升权限的用户;在文件中找到root ALL=(ALL) ALL,在该行下添加提升权限的用户信息,如:

root    ALL=(ALL)       ALL
user    ALL=(ALL)       ALL

说明:格式为(用户名 网络中的主机=(执行命令的目标用户) 执行的命令范围)

[root@localhost ~]# vi /etc/sudoers
root    ALL=(ALL)       ALL
test1    ALL=(ALL)       ALL

(4)保存退出,并恢复/etc/sudoers的访问权限为440

[root@localhost ~]# chmod 440 /etc/sudoers

(5)切换到普通用户,测试用户权限提升功能

[root@localhost ~]# su test1

[test1@localhost root]$ sudo ls /root
[sudo] test1 的密码:
add.sh	anaconda-ks.cfg

用法示例2:在test1用户中以root权限执行上一条命令

[test1@localhost root]$ sudo ls /root
[sudo] test1 的密码:
add.sh	anaconda-ks.cfg 
[test1@localhost root]$ sudo !!

用法示例3:在test1用户中以test2权限创建文件a.txt

[test1@localhost root]$  sudo -u test2 touch /tmp/a.txt
[test1@localhost root]$ ll /tmp/a.txt
-rw-r--r--. 1 test2 test2 0  417 17:54 /tmp/a.txt
[test1@localhost root]$
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值