sed OK
直接root用户下操作不就可以了么?为什么要通过sudo授权呢?
我们希望一个用户具有root权限去干活,但是又不希望这个用户威胁系统安全。
sudo 以另一个用户身份执行命令
1、简介
sudo 命令可以让普通用户拥有超级用户的权限去执行指定的命令或程序。普通用户不需要知道root密码就可以得到授权,授权我们在上面已经说过
2、语法格式
sudo [参数选项]
3、参数选项
参数 |
参数说明 |
-l |
列出当前用户可以执行的命令。只有在sudoers 文件里的用户才能使用该选项 |
-h |
列出使用方法,并退出 |
-H |
将环境变量中的HOME(家目录)指定为要变更身份的使用者家目录 |
-V |
显示版本信息,并退出 |
-v |
sudo在第一次执行时,或者在N分钟内没有执行,则会询问密码,参数用于重新做一次确认 |
-u |
以指定用户的身份执行命令 |
-k |
清除时间戳上的实践,下次再次使用sudo时要再此输入密码 |
-K |
与k类似,同时还删除时间戳文件 |
-b |
在后台执行指定命令 |
-p |
更改询问密码时的提示语 |
-e |
不执行命令,而是修改文件,相当于sudo edit |
4、sudo 工作原理
5、实践操作
创建一个testuser 用户,并对testuser进行sudo授权管理。授权完成后sudo操作
# 1、创建testuser 用户
[root@xiezhr ~]# useradd testuser
# 2、将testuser 用户密码修改为******
[root@xiezhr ~]# passwd testuser
Changing password for user testuser.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
# 3、执行以下命令后添加 `testuser ALL=(ALL) ALL ` 对testuser用户进行sudo授权 参照下图
[root@xiezhr ~]# visudo
testuser ALL=(ALL) ALL
# 4、登录testuser 用户,查看 当前用户被授予的sudo权限集合
[testuser@xiezhr ~]$ sudo -l
Matching Defaults entries for testuser on xiezhr:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User testuser may run the following commands on xiezhr:
(ALL) ALL
# 5、登录testuser用户,执行ls /root 发现时没有权限的
[testuser@xiezhr ~]$ ls /root
ls: cannot open directory /root: Permission denied
# 6、当加上sudo 后 再执行ls /root (第一次需要输入testuser用户密码,上面原理图介绍过),发现可以访问/root 路径了,此时testuser 具有了
[testuser@xiezhr ~]$ sudo ls /root
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for testuser:
bdcdb84c414c2493e5856597b89be9f0.gif
6、 sudo 小结
- 对用户进行sudo授权后,所有用户执行命令 格式为 sudo + [命令]
- sudo - l 命令可以查看当前用户被授予的sudo权限集合
- 当我们在授权用户下执行sudo时,如果需要输入密码。此时输入密码是当前用户的密码
id 显示用户与用户组信息
1、简介
id 命令可以显示指定用户的ID(UID)和组ID(GID)等有效信息
2、语法格式
id [参数选项] [用户名]
3、参数选项
参数 |
参数说明 |
-g |
显示用户所属群组的ID |
-G |
显示用户所属附加群组的ID |
-n |
显示用户,所属群组或附加群组的名称 |
-r |
显示实际ID |
-u |
显示用户ID |
4、实践操作
显示用户的UID和GID
# id 后不跟用户,默认时当前登录用户
[root@xiezhr home]# id
uid=0(root) gid=0(root) groups=0(root)
# 显示指定用户信息
[root@xiezhr home]# id testxiezhr
uid=1006(testxiezhr) gid=1006(testxiezhr) groups=1006(testxiezhr)
# 显示当前登录用户名称
[root@xiezhr home]# id -gn
root
# 显示当前登录用户GID
[root@xiezhr home]# id -g
0
# 显示当前登录用户UID
[root@xiezhr home]# id -u
0
w 显示已登录用户信息
1、简介
w命令可以显示已经登录系统的用户,并显示用户正在执行的命令
2、语法格式
w [参数选项] [用户]
3、参数选项
参数 |
参数说明 |
-h |
不显示前两行标题信息 |
-u |
忽略执行程序的名称以及CPU时间信息 |
-s |
使用短输出格式 |
4、实践操作
① 显示已登录用户信息
[testuser@xiezhr ~]$ w
21:21:42 up 609 days, 7 min, 4 users, load average: 2.66, 2.99, 3.17
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 39.130.60.62 20:33 48:22 0