最最详细sudo命令详解

sudo允许一个被批准的用户以超级用户或者另外一个用户的身份去执行命令,执行该命令的真实用户id被用于确定查询安全策略的用户名

sudo提供了一个插件架构用于安全策略和输入输出日志,第三方可以开发和发布自己的策略和I/O日志插件,sudo默认的安全策略插件是sudoers,它使用/etc/sudoers文件进行配置

安全策略决定了一个用户运行sudo的权限,该策略可能要求用户认证它自己(密码或者其他的身份认证机制),如果需要身份认证则用户必须在配置的时间内输入用户的密码,这个限制是特定于策略的,对于sudoers的安全策略的密码提示超时时间默认是5分钟(也就是你必须在5分钟内输入密码)。

安全策略也提供了凭据缓存功能,允许用户在有效期内再次运行sudo命令而不需要重复认证,sudoers策略将凭据缓存5分钟(可以在sudoers中覆盖默认配置),通过运行sudo -v选项(不带命令),用户可以更新缓存的凭据

安全策略可能会记录使用sudo的成功和失败尝试。如果配置了I/O插件则运行命令的输入和输出也可能被记录。

sudoers

默认的sudo安全策略插件
sudoers策略插件决定了一个用户的sudo权限。它是sudo的默认策略插件。这个策略是通过/etc/sudoers文件驱动的。

为sudoers插件配置sudo.conf

sudo通过sudo.conf配置文件决定哪一个策略和I/O日志插件被加载。如果没有sudo.conf文件或者是该文件中没有插件配置行,则sudoers将被使用。要明确的配置sudo.conf文件去使用sudoers插件,可以使用下面的配置:

Plugin sudoers_audit sudoers.so
Plugin sudoers_policy sudoers.so
Plugin sudoers_io sudoers.so

从1.8.5版本开始,可以sudoers指定一些可选的参数。插件参数在sudoers.so文件后列出,参数仅仅对打开的sudoers文件有效

对于sudo 1.9.1及更高版本,它是sudoers_audit插件。对于较老的版本,它是
sudoers_policy插件。可以指定多个参数,用空格分隔。例如:

Plugin sudoers_audit sudoers.so sudoers_mode=0400 error_recovery=false

关于跟多的参数列表和含义这里就不一一列举了,可以自行搜索。

用户身份认证

sudoers安全策略要求大多数的用户在使用sudo之前进行身份认证。如果调用用户是root或者调用用户和目标用户相同或者策略禁用了对该用户或命令的身份认证,则无需输入密码。

日志

默认,sudoers记录所有的成功和失败尝试,log_allowed和log_denied标记可用于控制此行为。消息可以记录到syslog,日志文件或者两者都记录。默认是记录到syslog,但这可以通过syslog和logfile设置进行配置。
sudoers也可以记录运行sudo命令伪终端的标准输入和标准输出。标准输入、标准输出和标准错误即使不与终端相关联也可以被记录。I/O日志默认是不开启的,但是可以使用log_input和log_output选项或者LOG_INPUT和LOG_OUTPUT命令标记开启

sudoers文件格式

sudoers文件由两种类型的条目组成:别名(基本上是变量)和用户规范(指定谁可以运行什么)。

当多个条目匹配一个用户时,将按顺序应用它们。如果有多个匹配,则使用最后一个匹配(这并不一定是最特定的匹配)。

sudoers文件基本格式如下:

# /etc/sudoers
#
# This file MUST be edited with the ‘visudo’ command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults    env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# The COMMANDS section may have other options added to it
# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command after they have
# provided their password
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL:ALL) ALL
#
#includedir /etc/sudoers.d

# Members of the admin group may gain root privileges

我们直接略过上边的部分,直接看”# User privilege specification”用户权限定义部分
大致可以描述为:
who where whom command

root    ALL=(ALL:ALL)  ALL

root 表示root用户
ALL 表示从任何的主机都可以执行,也可以这样192.168.100.0/24
(ALL:ALL) 是以谁的身份来执行,ALL:ALL就表示root可以以任何人的身份来执行命令,第一个ALL是用户,第二个ALL是组
ALL 表示任何命令
那么整条规则就是root用户可以在任何主机以任何人的身份来执行所有的命令。

在看下面这个定义:

%wheel  ALL=(ALL) ALL

允许wheel组中的所有人运行所有的命令
这就可以说明把用户加入到wheel组就可以使用sudo命令

再看一个例子:

nick   192.168.10.0/24=(root)  /usr/sbin/useradd

上面的配置只允许nick用户在192.168.10.0/24网段上连接主机并且以root权限执行useradd命令。

设置 sudo 时不需要输入密码

sudoers配置可以在命令部分附加选项,比如设置执行sudo时不需要输入密码,可以这么配置:

nick ALL=(ALL) NOPASSWD: ALL
  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值