Solaris 动态跟踪指南

第 35 章 安全性

本章介绍系统管理员可用于向特定用户或进程授予 DTrace 访问权的权限。使用 DTrace,可以查看系统的所有方面,包括用户级函数、系统调用、内核函数等等。它允许执行一些功能强大的操作,其中的有些操作可以修改程序的状态。就像不应允许一个用户访问另一个用户的专用文件一样,对于 DTrace 提供的所有工具的完全访问权限,系统管理员也不应将其授予所有用户。缺省情况下,只有超级用户可以使用 DTrace。最低权限工具可用于控制其他用户对 DTrace 的使用。

权限

使用 Solaris 最低权限工具,管理员可以为特定 Solaris 用户授予特定权限。要为用户指定登录时的权限,请在 /etc/user_attr 文件中插入一行代码,格式如下:

user-name::::defaultpriv=basic,privilege

要为正在运行的进程指定其他权限,请使用 ppriv(1) 命令:


# ppriv -s A+privilege process-ID

控制用户访问 DTrace 功能的三种权限为 dtrace_procdtrace_userdtrace_kernel。每一种权限都允许使用某一组 DTrace 提供器、操作和变量,并且每一种权限都对应特定类型的 DTrace 用法。以下各节中详细介绍了这些权限模式。系统管理员应针对不同权限模式的可见性以及对性能的影响,认真权衡每个用户的需要。用户要使用任何 DTrace 功能,需至少拥有三种 DTrace 权限之一。

使用 DTrace 的权限

拥有三种 DTrace 权限中任何一种的用户都可以启用 dtrace 提供器提供的探测器(请参见第 17 章),并且可以使用以下操作和变量:

提供器 

dtrace

   

操作 

exit

printf

tracemem

discard

speculate

 

printa

trace

 

变量 

args

probemod

this

epid

probename

timestamp

id

probeprov

vtimestamp

probefunc

self

 

地址空间 

无 

 

 

dtrace_proc 权限

dtrace_proc 权限允许使用 fasttrap 提供器进行进程级跟踪。它也允许使用以下操作和变量:

操作 

copyin

copyout

stop

copyinstr

raise

ustack

变量 

execname

pid

uregs

地址空间 

用户 

 

 

Solaris 内核数据结构或进程对不拥有此权限的用户是完全不可见的。

拥有此权限的用户可以在其自己的进程中创建和启用探测器。如果用户还拥有 proc_owner 权限,则可以在任何进程中创建和启用探测器。dtrace_proc 权限用于关注用户进程的调试或性能分析的用户。此权限适合于开发者处理新的应用程序,或者工程人员尝试在生产环境中改进应用程序的性能。


注 –

拥有 dtrace_procproc_owner 权限的用户可以启用任何进程的任何 pid 探测器,但只可以在其权限集是用户自己权限集的子集的进程中创建探测器。有关完整的详细信息,请参阅最低权限文档。


dtrace_proc 权限允许访问的 DTrace 可以仅对用户拥有权限的那些进程强加性能惩罚。受检测的进程将对系统资源强加更大的负载,同样地,它可能会对总体系统性能产生一些小的影响。除了此总体负载的增加,此权限不允许使用影响被跟踪进程之外任何进程的性能的检测过程。因为此权限不会允许用户查看其他进程或内核本身,建议将此权限授予可能需要更好地了解自己进程的内部工作情况的所有用户。

dtrace_user 权限

dtrace_user 权限允许使用包含一些警告的 profilesyscall 提供器,以及使用以下操作和变量:

提供器 

profile

syscall

fasttrap

操作 

copyin

copyout

stop

copyinstr

raise

ustack

变量 

execname

pid

uregs

地址空间 

用户 

 

 

dtrace_user 权限仅提供对用户已拥有相应权限的那些进程的可视功能;它不允许内核状态或活动可视。拥有此权限,用户可以启用 syscall 提供器,但已启用的探测器将仅在用户拥有权限的进程中激活。类似地,可以启用 profile 提供器,但已启用的探测器将仅在用户拥有权限的进程中激活,而不会在 Solaris 内核中激活。

此权限允许使用可能影响总体系统性能的检测过程(但仅允许查看特定进程)。syscall 提供器会对每个进程的每个系统调用产生一些小的性能影响。profile 提供器通过执行与实时计时器类似的每个时间间隔来影响总体系统性能。这些性能降低都不会严重限制系统的进度,但系统管理员应考虑授予用户此权限所牵涉到的内容。有关 syscallprofile 提供器的性能影响的介绍,请参阅第 21 章第 19 章

dtrace_kernel 权限

dtrace_kernel 权限允许用户在不属于自己的进程中使用除 pidfasttrap 提供器之外的所有提供器。此权限还允许使用除内核破坏性操作 (breakpoint(), panic(), chill()) 之外的所有操作和变量。此权限允许内核和用户状态完全可见。dtrace_user 权限启用的功能是 dtrace_kernel 启用的功能的限制子集。

提供器 

除上述限制外的所有提供器 

 

操作 

除破坏性操作之外的所有操作 

 

变量 

所有 

 

地址空间 

用户 

内核 

超级用户权限

拥有所有权限的用户可以使用所有提供器和所有操作(包括其他各类用户不能使用的内核破坏性操作)。

提供器 

所有 

 

操作 

包括破坏性操作的所有操作 

 

变量 

所有 

 

地址空间 

用户 

内核