文章目录
1. 简介
一般使用者管理系统的方式是利用su切换为超级使用者。但是使用su的缺点之一在于必须要先告知超级使用者的密码.sudo使一般使用者不需要知道超级使用者的密码即可获得权限。首先超级使用者将一般使用者登记在特殊的档案中(通常是/etc/sudoers),即完成对该使用者的授权(此时该使用者称为“sudoer”);在一般使用者需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该使用者自己的密码(以确认终端机前的是该使用者本人),回答后系统即会将该命令的进程以超级使用者的权限执行。
su sudo
*********************************************************************
输入root密码 * 输入执行者的密码(非root密码)
完全拥有相关su的权限 * 需要授权
**********************************************************************
2. sudo提权
1. 给普通用户提升权限的手段
- suid, sgid
- sudo
2. 使用sudo提升普通用户的权限/etc/sudoers
根据/etc/sudoers文件中设置,普通用户在使用sudo命令时可以以root身份或其他用户的身份运行命令。
# vim /etc/sudoers 方法一
# visudo 方法二:针对sudo语法检查
3. sudo语法
1. 按用户设置
#user MACHINE=(RUNAS_USER) COMMANDS
root ALL=(ALL) ALL
允许root用户 在任何主机上=(以任何人的身份) 执行任何命令
如:
robin ALL=/sbin/ip,/sbin/fdisk
zorro ALL=NOPASSWD:/sbin/ip,/sbin/fdisk
2. 按组设置
[root@Server ~]# groupadd tom
[root@Server ~]# useradd -G upup tom
%upup ALL=NOPASSWD: /sbin/ip
%upup ALL=NOPASSWD: /usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd
%upup ALL=NOPASSWD: /usr/sbin/useradd,/usr/sbin/userdel,!/usr/bin/passwd,/usr/bin/passwd [a-zA-Z]*,!/usr/bin/passwd root,!/usr/bin/passwd root --stdin,!/usr/bin/passwd --stdin root
3. 测试修改密码
[tom@Server ~]$ sudo /usr/sbin/useradd user10
[tom@Server ~]$ sudo /usr/sbin/useradd user20
[tom@Server ~]$ sudo /usr/sbin/userdel user20
[tom@Server ~]$ sudo /usr/bin/passwd user10
更改用户 user10 的密码 。
新的 密码:
无效的密码: WAY 过短
无效的密码: 是回文
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[tom@Server ~]$ sudo /usr/bin/passwd root
更改用户 root 的密码 。
新的 密码:
无效的密码: WAY 过短
无效的密码: 是回文
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[tom@Server ~]$ echo 123|sudo /usr/bin/passwd root --stdin
更改用户 root 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
sudo Alias别名
4. User Aliases
User_Alias ADMINS = jsmith, mikem
## Command Aliases
## These are groups of related commands...
## Networking
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
## Installation and management of software
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
## Services
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
## Updating the locate database
Cmnd_Alias LOCATE = /usr/bin/updatedb
## Storage
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
%upup ALL=NOPASSWD: STORAGE 使用别名
ADMINS ALL=NOPASSWD: Networking, STORAGE 使用别名
1. 练习
NETWORKING
SAFTWARE
STOREAGE
USER
GROUP
SERVICES
robin NETWORKING SOFTWARE SERVICES
zorro USER GROUP STORAGE
redhat组(tom 和 jerry) NETWORKING SERVICES STOREAGE
利用sudo 来分配权限
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig, /usr/bin/systemctl start, /usr/bin/systemctl stop, /usr/bin/systemctl reload, /usr/bin/systemctl restart, /usr/bin/systemctl status, /usr/bin/systemctl enable, /usr/bin/systemctl disable
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
Cmnd_Alias USER = /usr/sbin/useradd,/usr/sbin/usermod,/usr/sbin/userdel,!/usr/bin/passwd,/usr/bin/passwd [a-zA-Z0-9]*,!/usr/bin/passwd root,!/usr/bin/passwd root --stdin,!/usr/sbin/userdel root,!/usr/sbin/userdel -*[a-z]* root,!/usr/sbin/usermode root
Cmnd_Alias GROUP = /usr/sbin/groupadd,/usr/sbin/groupmod,/usr/sbin/groupdel
robin ALL=NETWORKING,SOFTWARE,SERVICES
zorro ALL=USER,GROUP,STORAGE
User_Alias REDHAT = tom,jerry
REDHAT ALL=NETWORKING ,SERVICES,STOREAGE