前面已经总结了基本权限、umask默认权限、ACL权限,想要了解的朋友可以直接拉到最底,通过传送门浏览查看。
本篇将要介绍sudo授权,sudo授权是在实际生产环境中常用的权限管理方式 ,是管理者对运维工程师授权的主要方式之一,所以要重点学习掌握,重点掌握如何授权,普通用户如何查询、使用。
- 赋予普通用户部分超级管理员权限
- 授权的权限越详细,普通用户得到的权限越小
- 授权的权限越简单,普通用户得到的权限越大
- 通过 visudo命令 赋予普通用户权限,执行效果类似于 vi
[root@localhost ~]# visudo
...
88 ## The COMMANDS section may have other options added to it.
89 ##
90 ## Allow root to run any commands anywhere
91 root ALL=(ALL) ALL
92
93 ## Allows members of the 'sys' group to run networking, software,
92
93 ## Allows members of the 'sys' group to run networking, software,
94 ## service management apps and more.
95 # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
96
97 ## Allows people in group wheel to run all commands
98 # %wheel ALL=(ALL) ALL
99
100 ## Same thing without a password
101 # %wheel ALL=(ALL) NOPASSWD: ALL
102
103 ## Allows members of the users group to mount and unmount the
104 ## cdrom as root
105 # %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
106
107 ## Allows members of the users group to shutdown this system
108 # %users localhost=/sbin/shutdown -h now
109
110 ## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
111 #includedir /etc/sudoers.d
2.3.1 文件说明
root ALL=(ALL) ALL 赋予用户管理员权限
%wheel ALL=(ALL) ALL 赋予组管理员权限
- 文件解释
- 第一列:代表用户/组
- 如果是用户,直接书写用户名即可,比如:root,lamp等等
- 如果是组,请在组名前面加 %,比如:wheel组,可以表示为 %wheel
- 第二列:代表被管理的IP=(用户身份)
- 被管理的IP:一般指远程的服务器IP
- 用户身份:一般直接写ALL,或者不写,都是管理员权限的意思。
- 第三列:代表授权的命令
- 一定要写绝对路径
- 命令越详细越好,安全性高
2.3.2 授权格式
用户名 ALL=绝对路径 [命令参数]
组 ALL=绝对路径 [命令参数]
2.3.3 授权位置
90 ## Allow root to run any commands anywhere
91 root ALL=(ALL) ALL
在 root 下面追加赋予普通用户的权限
97 ## Allows people in group wheel to run all commands
98 # %wheel ALL=(ALL) ALL
在 %wheel 所在行下面,追加赋予组的权限
2.3.4 调用方式
- 调用方式:
- sudo 绝对路径 参数
- sudo 命令名称 参数
#1、创建用户并设置密码
[root@localhost ~]# useradd test
[root@localhost ~]# passwd test
更改用户 test 的密码 。
新的 密码:
无效的密码: WAY 过短
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
#2、查找 shutdown 命令的绝对路径
[root@localhost ~]# whereis shutdown
shutdown: /sbin/shutdown /usr/share/man/man2/shutdown.2.gz /usr/share/man/man3p/shutdown.3p.gz /usr/share/man/man8/shutdown.8.gz
#3、用 visudo 命令赋予 用户test 重启权限
[root@localhost ~]# visudo
...
90 ## Allow root to run any commands anywhere
91 root ALL=(ALL) ALL
92 test ALL=/sbin/shutdown -r now
...
[root@localhost ~]# su - test
[test@localhost ~]$
[test@localhost ~]$ sudo -l
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 -l 会要用户密码,输入即可
[sudo] password for test:
匹配此主机上 test 的默认条目:
!visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC 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
用户 test 可以在该主机上运行以下命令:
(root) /sbin/shutdown -r now
说明: (root) /sbin/shutdown -r now 这条命令存在,代表我们赋予成功。
[test@localhost ~]$ sudo /sbin/shutdown -r now
#或者
[test@localhost ~]$ sudo shutdown -r now
以上命令执行之后,服务器/虚拟机进行重启,从而真正达到了普通用户 test 拥有管理员权限的目的。
- 知识点总结
- sudo作用:让普通用户具有部分超级用户(管理员)权限
- 授权原则:越详细越好
- 授权命令:visudo
- 格式: 用户名/组名 被管理IP=(用户身份) 绝对路径 [具体参数]
- 普通用户查看被赋予的管理员权限
- sudo -l,初次查看会需要输入用户登录密码
- 普通用户调用管理员命令格式:
- sudo 绝对路径 具体参数
- sudo 命令名称 具体参数
- 想了解Linux其他权限管理的内容,请打开以下传送门:
- Linux 权限管理_ACL权限 学习总结(二)
- Linux 权限管理_基本权限和umask默认权限 学习总结(一)
如果以上内容为您产生些许帮助,请点赞+收藏+关注 ,支持一下作者,感激不尽!