要资料 文章 文库 视频 Code iProcess 课程 认证 咨询 工具 讲座吧   专家招募  
会员   
 
  
每天15篇文章
不仅获得谋生技能
更可以追随信仰
 
 
     
   
 订阅
  捐助
Linux下的十项实用“sudo”配置选项
 
 来源:51CTO 发布于: 2017-2-20
 

无论是Linux还是其他类的UNIX系统,都只允许root用户运行全部命令并执行软件包的安装、更新、移除以及其他一些会对系统造成重要修改的特定操作。

然而,也有部分系统管理员允许其他用户正常使用sudo配置以运行此类重要命令并进行关键性系统操作。

也有一些系统管理员会共享root用户密码(这种作法并不推荐),这意味着普通系统用户也能够通过su命令访问root用户账户。另外,sudo也允许用户作为root(或者其他用户身份)执行命令,具体由安全策略指定:

读取并解析/etc/sudoers,查看调用用户及其权限。

而后提示该调用用户输入密码(通常为该用户的密码,也可为目标用户的密码,或者以NOPASSWD标签跳过此步骤)。

在此之后,sudo会创建一个名为setuid()的子进程,用以切换至该目标用户。

而后,它执行一条shell或者命令,并配合子进程中给定的参数。

以下为10个/etc/sudoers文件配置,能够对sudo命令的Defaults效果做出修改。

$ sudo cat /etc/sudoers 

/etc/sudoers文件

# # This file MUST be edited with the 'visudo' command as root.
# # Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
# # See the man page for details on how to write a sudoers file.
# Defaults
env_reset Defaults
mail_badpass Defaults
secure_path="/usr/local/sbin:/usr/local/
bin:/usr/sbin:/usr/bin:/sbin:/bin" Defaults
logfile="/var/log/sudo.log" Defaults lecture="always" Defaults
badpass_message="Password is wrong, please try again" Defaults
passwd_tries=5 Defaults insults Defaults log_input,log_output

Defaults条目类型

Defaults parameter, parameter_list #affect all users on any host  
Defaults@Host_List parameter, parameter_list #affects all users on a
specific host Defaults:User_List parameter, parameter_list #affects a
specific user Defaults!Cmnd_List parameter, parameter_list #affects a
specific command Defaults>Runas_List parameter, parameter_list #affects
commands being run as a specific user

在本指南之内,我们将首先讨论第一种Defaults类型。它的参数可以是标记、整数值、字符串或者列表。

需要注意的是,各标记为明确boolean且可利用'!'运算符进行关闭。另外,两项赋值运算符分别为+=(添加至列表)与-=(移除自列表)。

Defaults parameter OR Defaults parameter=
value OR Defaults parameter -=
value Defaults parameter +=value OR Defaults !parameter

1. 设置安全PATH

此为每一条命令配合sudo运行时所使用的路径,其中包含两项重点:

当系统管理员不信任sudo用户掌握安全PATH环境变量时使用。

用于划分root path与user path,用户通过exempt_group定义时不受此设置影响。

欲完成设置,请你添加以下行:

Defaults 
secure_path="
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

2. 在TTY用户登录会话上启用sudo

用于通过真实tty调用sudo,而非使用cron或者cgi-bin脚本等方法:

Defaults requiretty 

3.利用pty运行sudo命令

有时候,攻击者会利用sudo运行恶意程序(例如病毒或者恶意软件),它会在主程序停止执行后继续在用户终端设备上fork一个后台进程。

为了避免此类问题,大家可以利用use_pty参数配置sudo以要求它仅可通过psuedo-pty运行其他命令,而无论I/O记录是否开启:

Defaults use_pty 

4.创建一个sudo日志文件

在默认情况下,sudo会通过syslog(3)进行日志记录。不过要指定特定日志文件,大家可以使用logfile参数:

Defaults logfile="/var/log/sudo.log" 

要在此定制日志文件中记录主机名称与四位数字年份,则可分别使用log_host与log_year参数:

Defaults log_host, log_year, logfile="/var/log/sudo.log" 

以下为定制sudo日志文件示例:

5.记录sudo命令的输入/输出结果

我们可使用log_input与log_output参数使sudo得以在pseudo-tty中运行命令,同时分别记录全部用户的输入与输出结果。

默认I/O日志目录为/var/log/sudo-io,如果其中存在一条会话序列号,则将被存储在该目录中。大家可以通过iolog_dir参数指定您需要的目录。

Defaults log_input, log_output 

%{seq}等转义序列也受到支持,它会将序列号单调递增为base-36序列号,例如000001,其中每两位数字用于生成一个新的目录,如00/00/01。具体示例如下:

$ cd /var/log/sudo-io/ $ ls $ cd 00/00/01 $ ls $ cat log 

6.引导sudo用户

为了引导sudo用户在系统上使用密码,我们可以使用lecture参数。它可设定为三种值:

always – 始终引导用户。

once – 仅在用户初次执行sudo命令时进行引导(不指定值时默认为此设置)。

never – 永远不引导用户。

Defaults lecture="always" 

另外,大家也可以利用lecture_file参数设置一个定制lecture文件,在此文件中输入适当信息:

Defaults lecture_file="/path/to/file" 

Lecture Sudo Users

7.在输入错误sudo密码时显示定制信息

当用户输入错误密码时,可在命令行中显示特定信息。它的默认信息为“sorry,try again”,大家可以使用badpass_message参数对内容进行修改:

Defaults badpass_message="Password is wrong, please try again" 

8.增加sudo密码尝试次数

参数passwd_tries用于指定用户能够尝试输入密码的次数。

它的默认值为3:

Defaults passwd_tries=5 

要设置密码超时(默认为5分钟),可使用passwd_timeout参数,具体如下:

Defaults passwd_timeout=2 

9.当输入错误密码时,让sudo显示侮辱性内容

当用户输入错误密码时,sudo将通过insults参数显示侮辱性内容。它会自动关闭badpass_message参数。

Defaults insults 

10.了解更多sudo配置

另外,感兴趣的朋友也可以参阅以下链接来了解更多sudo命令配置选项:su与sudo间的区别以及如何在Linux中配置sudo(英文原文)。

 

相关文章

每日构建解决方案
如何制定有效的配置管理流程
配置管理主要活动及实现方法
构建管理入门
相关文档

配置管理流程
配置管理白皮书
CM09_C配置管理标准
使用SVN进行版本控制
相关课程

配置管理实践
配置管理方法、工具与应用
多层次集成配置管理
产品发布管理
 
分享到
 
 
 

软件配置管理的问题、目的
软件配置管理规范
CQWeb 7.1性能测试与调优指南
为什么需要使用ClearCase
ClearCase与RTC的集成
利用ClearQuest 进行测试管理
更多...   

产品发布管理
配置管理方法、实践、工具
多层次集成配置管理
使用CC与CQ进行项目实践
CVS与配置管理
Subversion管理员

相关咨询服务
SCM启动咨询
SCM流程规范咨询
SCM评估性咨询

配置管理实践(从组织级到项目级)
通号院 配置管理规范与应用
配置管理日构建及持续集成
丹佛斯 ClearCase与配置管理
中国移动 软件配置管理
中国银行 软件配置管理
天津华翼蓝天科技 配置管理与Pvcs
 
 
 
 
 
每天2个文档/视频
扫描微信二维码订阅
订阅技术月刊
获得每月300个技术资源
 
 

关于我们 | 联系我们 | 京ICP备10020922号 京公海网安备110108001071号