在普通用户登录中,很多需要管理员权限的命令无法执行,虽然提升了root的安全性,难免会影响了部分工作的进行,此时可以使用sudo命令进行授权,允许普通用户在特定时间内,利用特定的身份权限去执行特定的指令。
sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用sudo,会提示联系管理员
sudo可以提供日志,记录每个用户使用sudo操作
sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机
sudo使用时间戳文件来完成类似“检票”的系统,默认存活期为5分钟的“入场券”
普通用户临时切换其他用户权限需要知道用户的密码,安全性大大降低,在执行完毕后,切回自身原有身份
[feng@c7 root]$ su -l root -c "hostname"
Password:
c7
[feng@c7 root]$
sudo的文件列表
软件包 sudo-1.8.6p7-20.el7.x86_64
帮助手册 man 5 sudoers
配置文件 /etc/sudoers
日志文件 /var/log/secure
数据库文件 /var/db/sudo
数据库里记录时间戳信息:
普通用户在使用sudo执行命令时,需要输入自己的用户口令,
以验证用户的安全性,口令的保存时间为五分钟,
五分钟之后执行命令需要重新输入口令
配置文件也可以存放在文件夹/etc/sudoers.d/,针对每个非管理员用户创建独立的管理文件
配置文件支持通配符glob
配置文件规则
1、别名定义:不是必须的
2、授权规则:必须的
授权规则格式
用户 登入主机=(代表用户) 命令
示例:root ALL=(ALL) ALL
格式说明:
user:运行命令者的身份
host::通过哪些主机
(runas):以哪个用户的身份
command::运行哪些命令
属性
-b:在后台执行指令;
-h:显示帮助;
-H:将HOME环境变量设为新身份的HOME环境变量;
-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;
-l:列出目前用户可执行与无法执行的指令;
-p:改变询问密码的提示符号;
-s:执行指定的shell;
-u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
-v:延长密码有效期限5分钟;
-V :显示版本信息。
修改配置文件,用账户feng挂载光盘
第一步:编辑/etc/sudoers文件,在配置中添加授权feng挂载光盘的命令,在sudoers配置中,要执行的命令需要写下完整的路径。
在配置文件/etc/sudoers中,root ALL=(ALL) ALL定义了root可以执行最高权限,这条配置同时定义在root的UID不为0的时候的权限
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
feng ALL=(ALL) /usr/bin/mount /dev/sr0 /mnt/cdrom
第二步:在feng账户登录下,用sudo命令发起挂载授权请求,注意光盘挂载的路径必须和配置中完全一样,避免出错
[feng@c7 root]$ sudo mount /dev/sr0 /mnt/cdrom
[sudo] password for feng:
mount: /dev/sr0 is write-protected, mounting read-only
[feng@c7 root]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 52403200 3846176 48557024 8% /
devtmpfs 485304 0 485304 0% /dev
tmpfs 499980 84 499896 1% /dev/shm
tmpfs 499980 13528 486452 3% /run
tmpfs 499980 0 499980 0% /sys/fs/cgroup
/dev/sda5 41922560 32964 41889596 1% /app
/dev/sda1 1038336 172120 866216 17% /boot
tmpfs 100000 16 99984 1% /run/user/42
tmpfs 100000 0 100000 0% /run/user/0
/dev/sr0 8086368 8086368 0 100% /mnt/cdrom
授权feng取消挂载光盘
授权同一个用户可执行多条命令,在前一个命令后面用逗号 , 隔开。在umount命令中,如果后面不写路径,将授权取消所有的挂载
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
feng ALL=(ALL) /usr/bin/mount /dev/sr0 /mnt/cdrom,/usr/bin/umount /mnt.cdrom
[feng@c7 root]$ sudo umount /mnt/cdrom
[sudo] password for feng:
[feng@c7 root]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 52403200 3846268 48556932 8% /
devtmpfs 485304 0 485304 0% /dev
tmpfs 499980 84 499896 1% /dev/shm
tmpfs 499980 13528 486452 3% /run
tmpfs 499980 0 499980 0% /sys/fs/cgroup
/dev/sda5 41922560 32964 41889596 1% /app
/dev/sda1 1038336 172120 866216 17% /boot
tmpfs 100000 16 99984 1% /run/user/42
tmpfs 100000 0 100000 0% /run/user/0
创建非管理员用户的独立授权配置文件
在文件夹/etc/sudoers.d/下,我们可以根据不同的用户创建不同的授权配置文件文件,独立授权,方便管理。
以下步骤重新授权feng挂载光盘和取消挂载光盘并实施命令
[root@c7 sudoers.d]#vim feng
feng ALL=(ALL) /usr/bin/mount /dev/sr0 /mnt/cdrom,/usr/bin/umount /mnt/cdrom
~
[feng@c7 root]$ sudo mount /dev/sr0 /mnt/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
[feng@c7 root]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 52403200 3845208 48557992 8% /
devtmpfs 485304 0 485304 0% /dev
tmpfs 499980 84 499896 1% /dev/shm
tmpfs 499980 13528 486452 3% /run
tmpfs 499980 0 499980 0% /sys/fs/cgroup
/dev/sda5 41922560 32964 41889596 1% /app
/dev/sda1 1038336 172120 866216 17% /boot
tmpfs 100000 16 99984 1% /run/user/42
tmpfs 100000 0 100000 0% /run/user/0
/dev/sr0 8086368 8086368 0 100% /mnt/cdrom
[feng@c7 root]$ sudo umount /mnt/cdrom
[feng@c7 root]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 52403200 3845208 48557992 8% /
devtmpfs 485304 0 485304 0% /dev
tmpfs 499980 84 499896 1% /dev/shm
tmpfs 499980 13528 486452 3% /run
tmpfs 499980 0 499980 0% /sys/fs/cgroup
/dev/sda5 41922560 32964 41889596 1% /app
/dev/sda1 1038336 172120 866216 17% /boot
tmpfs 100000 16 99984 1% /run/user/42
tmpfs 100000 0 100000 0% /run/user/0
语法检查
通过visudo命令编辑配置文件,具有语法检查功能。在配置文件中出现语法错误时,visudo会提示错误的行号,然后询问下一步操作。
e:重新编辑
x:不保存退出
q:强制退出
[root@c7 sudoers.d]#visudo
visudo: >>> /etc/sudoers: syntax error near line 79 <<<
What now?
Options are:
(e)dit sudoers file again
e(x)it without saving changes to sudoers file
(Q)uit and save changes to sudoers file (DANGER!)
What now?
visudo加颜色
用visudo打开/etc/sudoers时,默认文本是没有颜色,在这里可以通过设置对visudo加颜色
[root@c7 ~]#cd /etc/profile.d/
[root@c7 profile.d]#vim env.sh
export EDITOR=vim
修改独立配置文件的权限
在/etc/sudoers.d/文件夹中,因为用户feng的独立授权配置文件是手动创建的,文件的全新未644,在进行语法visudo -c语法检查的时候会提示错误,可以利用visudo直接修改权限
[root@c7 ~]#cd /etc/sudoers.d/
[root@c7 sudoers.d]#ll
total 4
-rw-r--r--. 1 root root 86 Sep 13 21:01 feng
[root@c7 sudoers.d]#visudo -f feng
[root@c7 sudoers.d]#ll
total 4
-r--r-----. 1 root root 85 Sep 13 22:06 feng
用户组的权限配置
在CentOS 7配置文件中,默认的用户组为wheel,默认可以代替所有人执行所有权限,把用户feng加入wheel用户组,可以代替root使用,但是这样的权限设置是不安全的。在CentOS 6中,用户组的配置是注释掉的
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
[root@c7 ~]#usermod -aG wheel feng
[root@c7 ~]#su feng
[feng@c7 root]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt