'\" te .\" Copyright (c) 2008, 2013, Oracle and/or its affiliates.All rights reserved. .TH ppriv 1 "2012 年 2 月 21 日" "SunOS 5.11" "用户命令" .SH 名称 ppriv \- 检查或修改进程特权集和属性 .SH 用法概要 .LP .nf \fB/usr/bin/ppriv\fR \fB-e\fR [\fB-f\fR {\fB+-}{ADMPTUX\fR}] [\fB-s\fR \fIspec\fR] [\fB-r\fR \fIrule\fR] \fIcommand\fR [\fIarg\fR]... .fi .LP .nf \fB/usr/bin/ppriv\fR [\fB-vn\fR] [ \fB-f\fR {\fB+-}{ADMPTUX\fR}] [\fB-S\fR] [\fB-s\fR \fIspec\fR] [\fB-r\fR \fIrule\fR] [\fIpid\fR | \fIcore\fR]... .fi .LP .nf \fB/usr/bin/ppriv\fR \fB-l\fR [\fB-vn\fR] [\fIprivilege-specification\fR | \fIextended-policy\fR]... .fi .LP .nf \fB/usr/bin/ppriv\fR \fB-q\fR [\fB-f\fR {\fB+-}{ADMPTUX\fR}] [\fIprivilege-specification\fR] .fi .SH 描述 .sp .LP \fBppriv\fR 命令的第一次调用使用根据命令行上的参数修改的特权集和标志运行指定的 \fIcommand\fR。 .sp .LP 第二次调用检查或更改正在运行的进程和核心文件的特权状态。 .sp .LP 第三次调用列出所定义的特权以及关于指定的特权或特权集规范的信息。 .SH 选项 .sp .LP 支持以下选项: .sp .ne 2 .mk .na \fB\fB-D\fR\fR .ad .RS 20n .rt 已过时。与 \fB-f\fR \fB+D\fR 相同。 .RE .sp .ne 2 .mk .na \fB\fB-e\fR\fR .ad .RS 20n .rt 将其余参数解释为一个命令行,并使用指定的特权属性和特权集运行该命令行。 .RE .sp .ne 2 .mk .na \fB\fB-f\fR {\fB+-}{ADMPTUX\fR}\fR .ad .RS 20n .rt 为提供的进程或命令设置或取消设置进程标志(请参见 \fBsetpflags\fR(2))。 .sp .ne 2 .mk .na \fBD\fR .ad .RS 5n .rt PRIV_DEBUG .RE .sp .ne 2 .mk .na \fBM\fR .ad .RS 5n .rt NET_MAC_AWARE, NET_MAC_AWARE_INHERIT .RE .sp .ne 2 .mk .na \fBP\fR .ad .RS 5n .rt PRIV_PFEXEC .RE .sp .ne 2 .mk .na \fBA\fR .ad .RS 5n .rt PRIV_PFEXEC_AUTH .RE .sp .ne 2 .mk .na \fBT\fR .ad .RS 5n .rt PRIV_PROC_TPD .RE .sp .ne 2 .mk .na \fBU\fR .ad .RS 5n .rt PRIV_TPD_UNSAFE .RE .sp .ne 2 .mk .na \fBX\fR .ad .RS 5n .rt PRIV_XPOLICY .RE .RE .sp .ne 2 .mk .na \fB\fB-l\fR\fR .ad .RS 20n .rt 在 \fBstdout\fR 上列出当前定义的所有特权。 .RE .sp .ne 2 .mk .na \fB\fB-M\fR\fR .ad .RS 20n .rt 已过时。与 \fB-f\fR \fB+M\fR 相同。 .RE .sp .ne 2 .mk .na \fB\fB-n\fR\fR .ad .RS 20n .rt 将端口号和用户显示为数字。通常,\fBppriv\fR 将端口号和用户显示为符号。此选项仅在显示扩展策略时适用。 .RE .sp .ne 2 .mk .na \fB\fB-N\fR\fR .ad .RS 20n .rt 已过时。与 \fB-f\fR \fB-D\fR 相同。 .RE .sp .ne 2 .mk .na \fB\fB-s\fR \fIspec\fR\fR .ad .RS 20n .rt 根据 \fIspec\fR(以 \fB[AEILP][+-=]\fR\fIprivsetspec\fR 格式指定的内容,不包含空格)修改进程的特权集,其中: .sp .ne 2 .mk .na \fB\fBAEILP\fR\fR .ad .RS 15n .rt 表示一个或多个指示要更改的特权集的字母。这些字母不区分大小写,例如,\fBa\fR 或 \fBA\fR 都指示所有特权集。 .sp 有关特权集合的单一字母缩写的定义,请参见 \fBprivileges\fR(5)。 .RE .sp .ne 2 .mk .na \fB\fB+-=\fR\fR .ad .RS 15n .rt 表示修饰符,分别用于在 \fIprivsetspec\fR 中指定的特权集中添加 (\fB+\fR) 或删除 (\fB-\fR) 所列出的特权,或者将所列出的特权赋予 (\fB=\fR) 该特权集。 .RE .sp .ne 2 .mk .na \fB\fIprivsetspec\fR\fR .ad .RS 15n .rt 表示以逗号分隔的特权集指定内容(\fBpriv1\fR、\fBpriv2\fR,等等),如 \fBpriv_str_to_set\fR(3C)中所述。 .RE 可以使用多个 \fB-s\fR 选项修改同一特权集,前提是只指定了对单个特权集的赋值,或者指定了任意数目的添加和删除。也就是说,针对特权集的赋值与添加或删除是互斥的。 .RE .sp .ne 2 .mk .na \fB\fB-q\fR\fR .ad .RS 20n .rt 测试特权是否位于有效集中以及设置还是未设置标志。执行所有测试后程序成功退出。 .RE .sp .ne 2 .mk .na \fB\fB-r\fR \fIrule\fR\fR .ad .RS 20n .rt 安装扩展策略。请参见 \fBprivileges\fR(5)。 .sp 可以指定多个规则。新规则将添加到现有策略中。要替换现有策略,请先使用 \fB-X\fR 将其删除,然后使用 \fB-r\fR 添加新策略。 .RE .sp .ne 2 .mk .na \fB\fB-S\fR\fR .ad .RS 20n .rt 短. 为特权集报告尽可能短的输出字符串。缺省设置是可移植输出。请参见 \fBpriv_str_to_set\fR(3C)。 .RE .sp .ne 2 .mk .na \fB\fB-X\fR\fR .ad .RS 20n .rt 已过时。与 \fB-f\fR \fB-X\fR 相同。 .RE .sp .ne 2 .mk .na \fB\fB-v\fR\fR .ad .RS 20n .rt 详细模式。使用特权名称报告特权集。 .RE .SH 用法 .sp .LP \fBppriv\fR 实用程序检查进程和核心文件,并输出或更改其特权集。 .sp .LP \fBppriv\fR 可以在启用或禁用特权调试的情况下执行命令,或者使用比调用进程时更少的特权运行命令。 .sp .LP 执行子进程时,可修改的特权集只有 \fBL\fR 和 \fBI\fR。只能从 \fBL\fR 和 \fBI\fR 删除特权,因为 \fBppriv\fR 是以 \fBP=E=I\fR 设置启动的。 .sp .LP 还可使用 \fBppriv\fR 从进程删除特权,或者将特权传递至其他进程。要控制某个进程,\fBppriv\fR 实用程序的有效特权集必须是受控进程的 \fBE\fR、\fBI\fR 和 \fBP\fR 的超集。实用程序的限制特权集必须是目标的限制特权集的超集。如果目标的进程 uid 不匹配,则必须在实用程序的有效特权集合中声明 \fB{PRIV_PROC_OWNER}\fR 特权。如果受控进程具有值为\fB 0\fR 的 uid,则可能存在更多限制。请参见 \fBprivileges\fR(5)。 .SH 示例 .LP \fB示例 1 \fR获取当前 Shell 的进程特权 .sp .LP 以下示例将获取当前 shell 的进程特权: .sp .in +2 .nf example$ ppriv $$ 387: -sh flags = E: basic I: basic P: basic L: all .fi .in -2 .sp .LP \fB示例 2 \fR从 Shell 的可继承的有效特权集中删除一个特权 .sp .LP 以下示例将从 shell 的可继承的有效特权集中删除一个特权。 .sp .in +2 .nf example$ ppriv -s EI-proc_session $$ .fi .in -2 .sp .sp .LP 子进程仍可检查父 shell,但不能再影响父进程,因为父进程在其允许特权集中的特权比 \fBppriv\fR 子进程多: .sp .in +2 .nf example$ truss -p $$ truss: permission denied: 387 example$ ppriv $$ 387: -sh flags = E: basic,!proc_session I: basic,!proc_session P: basic L: all .fi .in -2 .sp .LP \fB示例 3 \fR在启用特权调试的情况下运行进程 .sp .LP 以下示例在启用特权调试的情况下运行进程: .sp .in +2 .nf example$ ppriv -e -f +D cat /etc/shadow cat[418]: missing privilege "file_dac_read" (euid = 21782), needed at ufs_access+0x3c cat: cannot open /etc/shadow .fi .in -2 .sp .sp .LP 特权调试错误消息将发送到当前进程的控制终端。\fBneeded at\fR 地址规范是内核实现的人工产物,可在软件更新后的任何时间进行更改。 .sp .LP 可使用 \fB/etc/name_to_sysnum\fR 将系统调用号映射至系统调用。 .LP \fB示例 4 \fR列出当前区域中可用的特权 .sp .LP 以下示例将列出当前区域中可用的特权(请参见 \fBzones\fR(5))。当在全局区域中运行时,会列出已定义的所有特权。 .sp .in +2 .nf example$ ppriv -l zone ... listing of all privileges elided ... .fi .in -2 .sp .LP \fB示例 5 \fR检查特权识别进程 .sp .LP 以下示例检查特权识别进程: .sp .in +2 .nf example$ ppriv -S `pgrep rpcbind` 928: /usr/sbin/rpcbind flags = PRIV_AWARE E: net_privaddr,proc_fork,sys_nfs I: none P: net_privaddr,proc_fork,sys_nfs L: none .fi .in -2 .sp .sp .LP 有关标志的解释,请参见 \fBsetpflags\fR(2)。 .LP \fB示例 6 \fR在扩展策略下运行进程 .sp .LP 以下示例在扩展策略下运行进程: .sp .in +2 .nf example$ ppriv -r '{file_write}:/home/casper/.mozilla/*' \e -r '{file_write}:/tmp/*,{proc_exec}:/usr/*' -e firefox .fi .in -2 .sp .sp .LP 请参见 \fBprivileges\fR(5)。 .LP \fB示例 7 \fR检查已启动的进程 .sp .LP 以下示例检查在示例 6 中启动的进程: .sp .in +2 .nf example$ ppriv 101272 101272: /usr/lib/firefox/firefox-bin flags = PRIV_XPOLICY Extended policies: {file_write}:/home/casper/.mozilla/* {file_write}:/tmp/* {proc_exec}:/usr/* E: basic,!file_write,!proc_exec I: basic,!file_write,!proc_exec P: basic,!file_write,!proc_exec L: all .fi .in -2 .sp .LP \fB示例 8 \fR测试标志和特权。 .sp .LP 以下示例测试标志和特权。 .sp .in +2 .nf example$ if ppriv -q -f +D file_read; then echo Privilege debugging is enabled echo and file_read privilege detected .fi .in -2 .sp .SH 退出状态 .sp .LP 将返回以下退出值: .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .RS 10n .rt 操作成功。 .RE .sp .ne 2 .mk .na \fB非零\fR .ad .RS 10n .rt 出现错误。 .RE .SH 文件 .sp .ne 2 .mk .na \fB\fB/proc/*\fR\fR .ad .RS 23n .rt 进程文件 .RE .sp .ne 2 .mk .na \fB\fB/etc/name_to_sysnum\fR\fR .ad .RS 23n .rt 系统调用名称到系统调用号的映射 .RE .SH 属性 .sp .LP 有关下列属性的说明,请参见 \fBattributes\fR(5): .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性类型属性值 _ 可用性system/core-os _ 接口稳定性请参见下文。 .TE .sp .LP 调用为 Committed(已确定)。输出是 "Uncommitted"(未确定)。 .SH 另请参见 .sp .LP \fBgcore\fR(1)、\fBtruss\fR(1)、\fBsetpflags\fR(2)、\fBpriv_str_to_set\fR(3C)、\fBproc\fR(4)、\fBattributes\fR(5)、\fBprivileges\fR(5)、\fBtpd\fR(5)、\fBzones\fR(5)