提出问题:
如何给普通用户提升权限?
如何让用户之间相互切换?
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 7月 29 2020 /etc/sudoers
[root@localhost ~]# chmod 777 /etc/sudoers
[root@localhost ~]# ll /etc/sudoers
-rwxrwxrwx. 1 root root 4.3K 7月 29 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 4月 17 17:54 /tmp/a.txt
[test1@localhost root]$
本文介绍了在openEuler系统中如何切换用户权限,包括su、su - 和sudo命令的使用。su命令仅切换用户,不改变shell环境,而su - 则会同时切换用户和环境。sudo命令允许普通用户执行管理员命令,提供了更安全的权限管理方式。文章详细讲解了各命令的用法和权限设置,并提供了具体操作示例。
2815

被折叠的 条评论
为什么被折叠?



