使用sodu给普通用户提升权限的手段:
sudo语法:
按组设置
测试修改密码
sudo Alias别名
一般使用者管理系统的方式是利用su切换为超级使用者。但是使用su的缺点之一在于必须要先告知超级使用者的密码.sudo使一般使用者不需要知道超级使用者的密码即可获得权限。首先超级使用者将一般使用者登记在特殊的档案中(通常是/etc/sudoers),即完成对该使用者的授权(此时该使用者称为“sudoer”);在一般使用者需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该使用者自己的密码(以确认终端机前的是该使用者本人),回答后系统即会将该命令的进程以超级使用者的权限执行。
su (普通账号) sudo
**************************** *****************************************
输入root密码 * 输入执行者的密码(非root密码)
完全拥有相关su的权限 * 需要授权
************************************* *********************************
使用sodu给普通用户提升权限的手段:
1. suid, sgid
2. sudo
==使用sudo提升普通用户的权限/etc/sudoers==
根据/etc/sudoers文件中设置,普通用户在使用sudo命令时可以以root身份或其他用户的身份运行命令。
方法一(有颜色的提示)
# vim /etc/sudoers
方法二:如果写错了,针对sudo语法检查
# visudo
想2种功能都用, 可以用vim去改,然后用visodu 打开检查语法错误
sudo语法:
vim /etc/sudoers
#user MACHINE=(RUNAS_USER) COMMANDS
root ALL=(ALL) ALL
允许root用户 在任何主机上=(以任何人的身份) 执行任何命令
如:
vim /etc/sudoers
robin ALL=/sbin/ip,/sbin/fdisk
zorro ALL=NOPASSWD:/sbin/ip,/sbin/fdisk
**************************************************************************
例一:
看一个命令在哪(系统指令)
which fdisk
robin AL=/usr/sbin/fdisk
例二:
加上参数,执行这条指令就不需要执行密码
robin ALL=NOPASSWD:/usr/sbin/fdisk
无密码执行很危险(在执行脚本常用)
**************************************************************************
让密码立即失效
sudo -k
**************************************************************************
按组设置
[root@Server ~]# groupadd east
[root@Server ~]# useradd -G east ross
vim /etc/sudoers
%upup 表示整个组都是授权的 ,这个组下面的用户都是授权的,而且附加组执行
%east ALL=NOPASSWD: /sbin/ip
%east ALL=NOPASSWD: /usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd,/usr/sbin/usrmod
这个命令passwd在执行时,后面必须得有东西,不允许直接执行,否则修改root密码了
%eastALL=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
测试修改密码
[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别名
思考场景:给每一个用户分别设置很麻烦,
vim /etc/sudoers
系统可以把一堆命令定义一个角色
## User Aliases
User_Alias ADMINS =robin, zorro, king
## 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
在最后添加
ADMINS ALL=NETWORKING;SOFTWARE
使用别名
%east ALL=NOPASSWD: STORAGE
使用别名
ADMINS ALL=NOPASSWD: Networking, STORAGE
练习:
NETWORKING
SAFTWARE
STOREAGE
USER
GROUP
SERVICES
robin NETWORKING SOFTWARE SERVICES
zorro USER GROUP STORAGE
redhat组(tom 和 jerry) NETWORKING SERVICES STOREAGE
利用sudo 来分配权限
****************************************************************************************************************************************************
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
SAFTWARE
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
SERVICES
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
STOREAGE
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
USER
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
GROUP
Cmnd_Alias GROUP = /usr/sbin/groupadd,/usr/sbin/groupmod,/usr/sbin/groupdel
****************************************************************************************************************************************************
vim /etc/sudoers
方法一(组方法)
robin ALL=NETWORKING,SOFTWARE,SERVICES
zorro ALL=USER,GROUP,STORAGE
方法二(定义角色)
User_Alias REDHAT = tom,jerry
REDHAT ALL=NETWORKING ,SERVICES,STOREAGE



