用户身份与文件权限---su命令与sudo服务
1,su
命令
su
命令可以在当前用户不退出的情况下切换用户身份
- root 管理员切换普通用户不需要密码验证
- 普通用户切换到 root 管理员就需要进行密码验证
[root@study doc]# su - chen
Last login: Thu Dec 20 15:23:58 CST 2018 on pts/0
[chen@study ~]$ id
uid=1000(chen) gid=1000(chen) groups=1000(chen)
su
命令与用户名之间有一个减号(-),这将完全切换为新用户,即把环境变量也变更为新用户的相应信息,而不保留原始信息
2,sudo
命令
sudo
命令把特定命令的执行权限赋予给定用户,避免泄露 root 管理员密码
sudo
服务中的可用参数以及作用
-
-h
:列出帮助信息 -
-l
:列出当前用户可执行的命令 -
-u用户名或UID值
:已指定的用户身份执行命令 -
-k
:清空密码的有效时间,下次执行 sudo 时需要再次进行密码验证 -
-b
:在后台执行指定的命令 -
-p
:更改询问密码的提示语
sudi
命令功能:
- 限制用户执行指定的命令
- 记录用户执行的没一条指令
- 配置文档(
/ettc/sudioers
)提供集中的用户管理、权限与主机等参数 - 验证密码后5分钟内(默认值)无须再让用户再次验证密码
visudo
命令
只有 root 管理员才可以使用
visudo
命令编辑服务的配置文件
sudo
命令提供 visudio
命令来配置用户权限,避免直接修改配置文件时可能出现的问问题。且这条命令在配置用户权限时将禁止多个用户同时修改sudoers配置文件,还可以对配置文件内的参数进行语法检查,并在发现参数错误时进行报错。
示例1:
在下方所示位置增加普通用户 chen 可执行命令权限
93行添加信息为:
谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表
[root@study ~]# visudo
90 ##
91 ## Allow root to run any commands anywhere
92 root ALL=(ALL) ALL
93 chen ALL=(ALL) ALL ## 添加普通用户 chen 的信息
使用 sudo -l
查看 chen 的所有可执行命令
注意:下面命令验证的是该普通用户的命令,而不是root管理员的密码
[root@study ~]# su - chen
Last login: Thu Dec 20 18:30:13 CST 2018 on pts/0
[chen@study ~]$ sudo -l
[sudo] password for chen: # 输入用户 chen 的密码,而不是 root 的
Matching Defaults entries for chen on study:
!visiblepw, always_set_home, match_group_by_gid, 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 chen may run the following commands on study:
(ALL) ALL
验证1:普通用户查看 /root 目录
[chen@study ~]$ ls /root
ls: cannot open directory /root: Permission denied
[chen@study ~]$ sudo ls /root
backup.taar.gz linux mysql80-community-release-el7-1.noarch.rpm test
示例2:仅赋予普通用户 cat
命令root的权限
生产环境不允许某个普通用户拥有整个系统所有命令的最高权限,因此ALL
参数不适合,因此只能赋予普通用户具体的命令以满足工作需求,受到必要的权限舒服
注意:如果需要让某个用户以 root 管理员的身份执行命令,一定要给出命令的绝对路径(可用 whereis
命令查找)
[root@study ~]# whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz
[root@study ~]# visudo
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
chen ALL=(ALL) /usr/bin/cat ## 添加普通用户 chen 的信息
验证2:普通用户用命令 cat
查看 /etc/shadow
文件
[root@study ~]# su - chen
Last login: Fri Dec 21 14:07:12 CST 2018 on pts/1
[chen@study ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
[chen@study ~]$ sudo cat /etc/shadow
[sudo] password for chen: # 此除输入该普通用户的密码
root:$6$nivk2N7o$zTJ/PFjcpwlpL80CWjfQCnIhM7K75Oc0PU/RYOWLJBl7/XZ9spuJv4ERQ60bTCh0uZp1FMOwqkV7OO.4N7GgG0:17687:0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
adm:*:17110:0:99999:7:::
... ... ... 省略下方内容
示例3:去除使用sudo
命令时的密码验证
[root@study ~]# visudo
90 ##
91 ## Allow root to run any commands anywhere
92 root ALL=(ALL) ALL
93 chen ALL=NOPASSWD: /usr/bin/cat ## 添加普通用户 chen 的信息
验证3:清除 sudo
密码有效时间,普通用户再使用 cat
查看 /etc/shadow
[root@study ~]# su - chen
Last login: Fri Dec 21 14:22:58 CST 2018 on pts/1
[chen@study ~]$ sudo -k
[chen@study ~]$ sudo cat /etc/shadow
root:$6$nivk2N7o$zTJ/PFjcpwlpL80CWjfQCnIhM7K75Oc0PU/RYOWLJBl7/XZ9spuJv4ERQ60bTCh0uZp1FMOwqkV7OO.4N7GgG0:17687:0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
adm:*:17110:0:99999:7:::
... ... ... 省略下方内容