sudo

 

sudo

 


 

sudo的使用

  • sudo命令可以用来使用其他的用户身份执行指定的命令。如果未授权用户尝试使用 sudo,会提示联系管理员。
  • sudo还有日志功能,无论谁使用sudo命令操作什么命令,都会被记录在日志当中/var/log/secure
  • sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机
  • sudo使用时间戳文件来完成类似“检票”的系统,默认存活期为5分钟的“入场券”,关于时间戳文件在/var/db/sudo
  • 通过visudo命令编辑配置文件,具有语法检查功能visudo –c检查语法

命令sudo [-u user] COMMAND
参数

  • -V 显示版本信息等配置信息
  • -u user 默认为root
  • -l,ll 列出用户在主机上可用的和被禁止的命令
  • -v 再延长密码有效期限5分钟,更新时间戳
  • -k 清除时间戳(1970-01-01),下次需要重新输密码
  • -K 与-k类似,还要删除时间戳文件
  • -b 在后台执行指令
  • -p 改变询问密码的提示符号
    示例: -p ”password on %h for user %p:"

上面就是命令的使用介绍和一些参数,并没有具体的示例,那是因为,我们真正的要使用这个命令,需要配合针对于该命令的配置,配置文件在/etc/sudoers, /etc/sudoers.d/中,其中第一个数主配置文件,第二个是次配置文件,但在实际上,我们最好是将我们的规则写在此配置文件目录中,这样便于管理还以免损坏主配置文件,接下来,我们先对主配置文件进行了解:
 
我们在上面显示的东西,第一个 root ALL=(ALL) ALL , 其实是 user host=(runas) command ,其中user代表是运行命令者的身份,host是指通过哪些主机运行,runas是以哪个用户的身份运行,command运行哪些命令。
第二个配置 %wheel ALL=(ALL) ALL 则是让哪些组中的成员以某些身份在哪些机器上运行哪些命令。

然后我们做一些示例,当然,我们需要写配置文件的,我们把配置写到/etc/sudoers.d/下面去,保证主配置文件不变。我们使用创建文件test(文件名可自己取,没问题)

tom ALL=(root)/usr/bin/cat /etc/shadow

 

我们使用tom用户去使用root的身份在所有机器上查看shasow文件,在一般情况下,作为普通用户tom是没有权限查看该文件的,但是,我们给他一个临时执行的权限,他就能使用sudo命令查看到该文件。
 

我们可以看到,他可以查看该文件,但是需要输入自己的密码,并且在5分钟之内使用该命令,不需要再次输入密码,关于此的时间戳文件在/var/db/sudo,一点五分钟的时间过了,我们需要重新输入密码。并且时间戳文件会自动更新。
 
刚刚我们是使用vim写的那个配置文件,但是文件有没有什么问题呢?我们使用命令 visudo –c 来检查一下该文件是否有问题。

[root@CT73 sudoers.d]$ visudo -c
/etc/sudoers: parsed OK
/etc/sudoers.d/test: bad permissions, should be mode 0440

我们看到test语法是没有问题的,但是权限有点问题,它说权限应该是440,我们需要把它改改,我们可以使用手动修改,或者在写这个文件的时候使用visudo -f  test来写就没问题了。

我们的配置文件还是支持通配符的,例如:

  • ? :任意单一字符
  • * :匹配任意长度字符
  • [wxc]:匹配其中一个字符
  • [!wxc]:除了这三个字符的其它字符
  • \x : 转义
  • [[alpha]] :字母 示例: /bin/ls [[alpha]]*

以上这些都可以使用在通配符里面,如:

tom ALL=(root)/usr/bin/cat /etc/*

此时tom就可以使用cat命令查看/etc/下面的所有文件内容。或者我们还可以这样写:

tom ALL=(root)/usr/sbin/useradd

这个配置使得tom用户具有创建用户的权限。

在配置文件中,我们可以使用以下的命名方式:
Users和runas:

  • username
  • #uid
  • %group_name
  • %#gid
  • user_alias | runas_alias

host:

  • ip或hostname
  • network(/netmask)
  • host_alias

command:

  • command name
  • directory
  • sudoedit
  • Cmnd_Alias

示例如下
让tom可以在192.168.111.120主机下删除用户

tom 192.168.111.120=(#0)/usr/sbin/userdel

让tom可以修改sudoers文件,这是一个可怕的命令,tom可以修改任何他想得到的权限。

tom 192.168.111.120=(#0) sudoedit

 

命令别名

很多的时候,需要使用sudo的用户很多,我们要对他们处理,如果将一个配置写的很长,会看起来很多,这时候,我们就可以使用命令别名:
别名有四种类型: User_Alias, Runas_Alias, Host_Alias, Cmnd_Alias

示例1
让student用户可以使用pidof和ifconfig命令,让在wheel组里面的用户可以无密码执行任何操作

student ALL=(root)/sbin/pidof,/sbin/ifconfig
%wheel ALL=(ALL) NOPASSWD: ALL

实例2
定义用户别名,包含两个用户,定义命令别名,让这两个用户可以执行该操作。

User_Alias NETADMIN= netuser1,netuser2
Cmnd_Alias NETCMD =/usr/sbin/ip
NETADMIN ALL=(root) NETCMD

示例3
SYSADER SERS= SYDCMD,DSKCMD没有带(),它就代表 ALL 任何人

User_Alias SYSADER=wang,mage,%admins
User_Alias DISKADER=tom
Host_Alias SERS=www.fire.com,172.16.0.0/24
Runas_Alias OP=root
Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod
Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk

SYSADER SERS
= SYDCMD,DSKCMD DISKADER ALL=(OP) DSKCMD

示例4
定义两个用户,在使用useradd,usermod,和passwd使用的时候不需要输入密码(设置无法改变root的密码),在userdel的时候需要输入密码(防止误操作,删除用户)

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
默认设置,在授权普通用户使用sudo命令时,如果没有-u username的话,默认使用wang用户,在()不写tom,或者没有(),默认就是以tom的执行命令

Defaults:wang runas_default=tom
wang ALL=(tom,jerry) ALL

示例6

wang 192.168.175.136,192.168.175.138=(root)/usr/sbin/,!/usr/sbin/useradd

示例7
让tom可以查看message*的日志文件,但是这里有一个安全问题

tom ALL=(ALL) NOPASSWD:/bin/cat /var/log/messages*

我们在使用tom用户cat/var/log/messages时候,还可以:

sudo cat /var/log/messages /etc/shadow

并且在man帮助文档中有说明:

Note that mail will not be sent if an unauthorized user tries to run sudo with
...skipping...
%operator ALL =/bin/cat /var/log/messages*
will allow command like:
$ sudo cat /var/log/messages.1
It will also allow:
$ sudo cat /var/log/messages /etc/shadow
which is probably not what was intended.

 

转载于:https://www.cnblogs.com/duzhaoqi/p/7605667.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值