sudo
普通用户在执行一些命令的时候会没有权限,例如2:关机、挂载光盘等
sudo可以授权给普通用户
su 切换身份:su –l username –c ‘command’
sudo
来自sudo包, man 5 sudoers
- sudo能够授权指定用户在指定主机上运行某些命令。 如果未授权用户尝试使用 sudo,会提示联系管理员
- sudo可以提供日志,记录每个用户使用sudo操作
- sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机
- sudo使用时间戳文件来完成类似“检票”的系统,默认存活期为5分钟的“入场券”
- 通过visudo命令编辑配置文件,具有语法检查功能
visudo –c 检查语法
visudo -f /etc/sudoers.d/test
sudo配置文件
配置文件: /etc/sudoers, /etc/sudoers.d/
时间戳文件: /var/db/sudo
日志文件: /var/log/secure
例子:tail /vat/log/secure -f
配置文件支持使用通配符glob:
- ? :任意单一字符
- * :匹配任意长度字符
- [wxc]:匹配其中一个字符
- [!wxc]:除了这三个字符的其它字符
- \x : 转义
- [[alpha]] :字母 示例: /bin/ls [[alpha]]*
例子:
>vim /etc/sudoers.d
>wang ALL=root /bin/* /etc/shadow 执行/bin下的所有操作
[root@localhost ~]# ll /usr/bin/sudo
配置文件规则有两类;
- 1、别名定义:不是必须的
- 2、授权规则:必须的
sudoers
- 授权规则格式:
- 用户 登入主机=(代表用户) 命令
示例:
- root ALL=(ALL) ALL
格式说明:
- user: 运行命令者的身份
- host: 通过哪些主机
- (runas):以哪个用户的身份
- command: 运行哪些命令
别名 (用户可以写成多种形式)
- Users和runas:
- username 用户没
- #uid 用户id
- %group_name 组名
- %#gid 组id
- user_alias|runas_alias 用户别名
host:
- ip或hostname
- network(/netmask)
- host_alias 主机别名
command:
- command name
- directory 目录
- sudoedit 授权编辑修改sudo授权文件
例子:wang ALL=root sudoedit
> sudoedit /etc/sudoers
Cmnd_Alias 命令别名
sudo别名和示例
- 别名有四种类型: User_Alias, Runas_Alias, Host_Alias , Cmnd_Alias
- 别名格式: [A-Z]([A-Z][0-9]_)*
别名定义:
- Alias_Type(别名类型) NAME1(别名名称) = item1, item2, item3 : NAME2 = item4, item5
示例1:
- Student ALL=(ALL) ALL
- %wheel ALL=(ALL) ALL
示例2:
- student ALL=(root) /sbin/pidof,/sbin/ifconfig
- %wheel ALL=(ALL) NOPASSWD: ALL
注意:别名名称必须是大写字母开头、数字下划线
别名示例3
- User_Alias NETADMIN= netuser1,netuser2
- Cmnd_Alias NETCMD = /usr/sbin/ip
- NETADMIN ALL=( root) NETCMD
sudo示例4:
- User_Alias ADMINUSER = adminuser1,adminuser2
- Cmnd_Alias ADMINCMD = /usr/sbin/useradd, /usr/sbin/usermod,
- /usr/bin/passwd [a-zA-Z]*, !/usr/bin/passwd root
- ADMINUSER ALL=(root) NOPASSWD:ADMINCMD,
- PASSWD:/usr/sbin/userdel
示例5
- Defaults:wang runas_default=tom
- wang ALL=(tom,jerry) ALL
示例6
- wang 192.168.1.6,192.168.1.8=(root) /usr/sbin/,!/usr/sbin/useradd
示例7
- wang ALL=(ALL) /bin/cat /var/log/messages*
sudo案例:
rpm -qi sudo
rpm -ql sudo
- /etc/sudoers sudo授权文件
- /etc/sudoers sudo授权的子配置文件
- /usr/bin/sudo 授权命令
- /sudoers 编辑授权文件
- /var/db/sudo sudo数据库 (检查授权前和授权和信息)
/etc/sudoer文件规则有4项
- 用户 登入主机=(代表用户) 命令
- root ALL=(ALL) ALL
解释:授权root在任何主机上登陆代表任何用户 执行任何操作
[root@localhost ~]# vim /etc/sudoers
例子:wang ALL=(root) /bin/mount /dev/sr0 /mnt
[root@localhost ~]# su - wang
[root@localhost ~]# sudo -u root mount /dev/sr0 /mnt
例子二:
[root@localhost ~]# vim /etc/sudoers
例子:wang ALL=(root) /bin/mount /dev/sr0 /mnt,/bin/umount
[root@localhost ~]# su - wang
[root@localhost ~]# sudo -u root umount /dev/sr0 /mnt
[root@localhost ~]# sudo -u root umount /data
例子三:
[root@localhost ~]# vim /etc/sudoers.d/
wang 192.168.32.7=(root) /bin/cat /etc/shadow
[root@localhost ~]# su ~ wang
[root@localhost ~]# sudo -u root cat /etc/shadow
************注意:要执行的命令必须要写命令的绝对路径***************
sodo对组授权
[root@localhost ~]#vim /etc/sudoers
%wheel ALL=(ALL) ALL (sudoers文件中的修改组项)
[root@localhost ~]# gpasswd -a wang wheel
[root@localhost ~]#id wang
[root@localhost ~]#vim /etc/sudoers
%wheel ALL=(ALL) ALL (sudoers文件中的修改组项)
%wheel ALL=(ALL) NOPASSWD: ALL
检查语法错误:
- [root@localhost ~]# visudo -c
- /etc/sudoers: parsed OK
sudo命令
- ls -l /usr/bin/sudo
- sudo –i –u wang 切换身份
- sudo [-u user] COMMAND
- -V 显示版本信息等配置信息
[root@localhost ~]#sudo -V
-u user 默认为root
-l,ll 列出用户在主机上可用的和被禁止的命令
su - wang
[root@localhost ~]#sudo -l
- -v 再延长密码有效期限5分钟,更新时间戳
- -k 清除时间戳( 1970-01-01),下次需要重新输密码
- -K 与-k类似,还要删除时间戳文件
[root@localhost ~]#su -wang
[root@localhost ~]# sudo -K
[root@localhost ~]# exit
[root@localhost ~]# ll /var/db/sudo/wang
- -b 在后台执行指令
[root@localhost ~]# su -wang
[root@localhost ~]# sudo -b sleep 10
- -p 改变询问密码的提示符号
示例: -p ”password on %h for user %p:”