本节中的任务和示例向用户缺省接收的权限添加权限。有关权限的信息,请参见Chapter 1, 使用权限控制用户和进程。
为可信用户指定角色-Example 3–1、Example 3–4、Example 3–5
为可信用户指定权限配置文件-Example 3–10、Example 3–19、Example 4–1
为可信用户指定需要验证权限配置文件-Example 3–11、Example 4–2
为可信用户或角色指定授权-Example 3–12、Example 3–13
为用户或角色直接指定特权-Example 3–8、Example 3–14、Example 3–15
使用户可以在承担某个角色时使用自己的口令-Example 3–16、Example 3–17
修改权限配置文件-Example 3–22
将安全属性添加到权限配置文件中的命令-Example 3–26、Example 3–27、Example 5–7
使用户可以读取归 root 所有的文件-Example 3–19、Example 3–20
使用户或角色可以编辑归 root 所有的文件-Example 5–9
指定包含新授权的权限配置文件-Example 5–11
安全管理员创建可以管理 DHCP 的用户。
# useradd -P "DHCP Management" -s /usr/bin/pfbash -S ldap jdoe
由于已为用户指定了 pfbash 作为登录 shell,将始终评估 "DHCP Management"(DHCP 管理)权限配置文件中的权限,因此 DHCP 管理命令可以成功运行。
示例 3-11 要求用户在管理 DHCP 前键入口令在此示例中,安全管理员要求 jdoe 提供口令,然后才能管理 DHCP。
# usermod -K auth_profiles="DHCP Management" profiles="Edit Administrative Files" jdoe
jdoe 键入 DHCP 命令时,将出现输入口令提示。在验证 jdoe 后,DHCP 命令将完成。对于搜索顺序,需要验证权限配置文件在一般配置文件之前处理。
jdoe% dhcpconfig -R 120.30.33.7,120.30.42.132 Password: xxxxxxxx /** Command completes **/示例 3-12 将授权直接指定给用户
在本示例中,安全管理员将创建一个可以控制屏幕亮度的本地用户。
# useradd -c "Screened KDoe, local" -s /usr/bin/pfbash \ -A solaris.system.power.brightness kdoe
该授权将添加到用户的现有授权指定中。
示例 3-13 将授权指定给角色在此示例中,安全管理员创建一个角色,该角色可以更改 DNS 服务器服务的配置信息。
# roleadd -c "DNS administrator role" -m -A solaris.smf.manage.bind" dnsadmin示例 3-14 将特权直接指定给用户
在本示例中,安全管理员会向 kdoe 用户授予一个非常特殊的特权,该特权可以影响系统时间。要向角色直接指定特权,请参见Example 3–8。
# usermod -K defaultpriv='basic,proc_clock_highres' kdoe
defaultpriv 关键字的值将替换现有的值。因此,对于要保留 basic 特权的用户,指定了值 basic。在缺省配置中,所有用户都拥有基本特权。有关基本特权的列表,请参见列出特权。
该用户可以查看添加的特权及其定义。
kdoe% ppriv -v $$ 1800: pfksh flags = <none> E: file_link_any,…,proc_clock_highres,sys_ib_info I: file_link_any,…,proc_clock_highres,sys_ib_info P: file_link_any,…,proc_clock_highres,sys_ib_info L: cpc_cpu,dtrace_kernel,dtrace_proc,dtrace_user,...,win_upgrade_sl % ppriv -vl proc_clock_highres Allows a process to use high resolution timers.示例 3-15 添加到角色的基本特权
在以下示例中,已经直接将处理日期和时间程序的特权指定给角色 realtime。Example 3–8 中将 proc_clock_highres 指定给 realtime。
# rolemod -K defaultpriv='basic,sys_time' realtime
% su - realtime Password: xxxxxxxx # ppriv -v $$ 1600: pfksh flags = <none> E: file_link_any,...,proc_clock_highres,sys_ib_info,sys_time I: file_link_any,...,proc_clock_highres,sys_ib_info,sys_time P: file_link_any,...,proc_clock_highres,sys_ib_info,sys_time L: cpc_cpu,dtrace_kernel,dtrace_proc,dtrace_user,...,sys_time示例 3-16 使用户可以将自己的口令用作角色口令
缺省情况下,用户只有键入角色的口令才能承担角色。通过要求提供用户口令,管理员可使在 Oracle Solaris 中承担角色的过程类似于在 Linux 环境中承担角色的过程。
# rolemod -K roleauth=user auditrev
要承担该角色,指定的用户现在可以使用自己的口令,而非专为该角色创建的口令。
如果已为用户指定了其他角色,则用户的口令也可以验证这些角色。
示例 3-17 修改权限配置文件以使用户将自己的口令用作角色口令# profiles -p "Local System Administrator" profiles:Local System Administrator> set roleauth="user" profiles:Local System Administrator> end profiles:Local System Administrator> exit
当指定了 "Local System Administrator"(本地系统管理员)权限配置文件的用户需要承担该角色时,系统将提示用户输入口令。在以下序列中,角色名称为 admin:
% su - admin Password: xxxxxxxx # /** You are now in a profile shell with administrative rights**/示例 3-18 更改 LDAP 系统信息库中角色的 roleauth 值
在以下示例中,root 角色允许可以承担角色 secadmin 的所有用户在承担角色时使用自己的口令。对于由 LDAP 服务器管理的所有系统上的这些用户,都授予了该能力。
# rolemod -S ldap -K roleauth=user secadmin示例 3-19 使可信用户可以读取扩展记帐文件
您可以使可信用户或用户组读取 root 帐户所有的文件。如果用户可以运行包括 root 所有的文件的管理应用程序,此权限会很有用。此示例为 "Extended Accounting Net Management"(扩展记帐网络管理)权限配置文件添加一个或多个 Perl 脚本。
承担 root 角色后,管理员创建了一个权限配置文件,该配置文件添加了读取名称以 network 开头的记帐文件的能力。
以下配置文件使用扩展特权策略,将 file_dac_read 特权授予一个脚本,该脚本然后只可以访问 /var/adm/exacct/network* 文件。此配置文件将现有的 "Extended Accounting Net Management"(扩展记帐网络管理)权限配置文件添加为补充配置文件。
# profiles -p "Extended Accounting Perl Scripts" profiles:Extended Accounting Perl Scripts > set desc="Perl Scripts for Extended Accounting" ... Scripts> add profiles="Extended Accounting Net Management" ... Scripts> add cmd=/usr/local/bin/exacctdisp.pl ... Scripts:exacctdisp.pl> set privs={file_dac_read}:/var/adm/exacct/network* ... Scripts:exacctdisp.pl> end ... Scripts> commit ... Scripts> exit
有关示例脚本,请参见在 Oracle Solaris 11.2 中进行资源管理 中的使用 libexacct 的 Perl 接口。
在检查权限配置文件条目有无错误(如拼写错误、缺失或重复)后,管理员将 "Extended Accounting Perl Scripts"(扩展记帐 Perl 脚本)权限配置文件指定给角色或用户。
# profiles -p "Extended Accounting Perl Scripts" info Found profile in files repository. name=Extended Accounting Perl Scripts desc=Perl Scripts for Extended Accounting profiles=Extended Accounting Net Management cmd=/usr/local/bin/exacctdisp.pl privs={file_dac_read}:/var/adm/exacct/network*
# rolemod -K profiles+="Extended Accounting Perl Scripts" rolename # usermod -K profiles+="Extended Accounting Perl Scripts" username示例 3-20 使非 root 帐户可以读取 root 所有的文件
在此示例中,管理员创建了一个权限配置文件,该配置文件使用扩展特权策略使授权用户和角色可以读取 root 所有的 /var/adm/sulog 文件。管理员添加了用户可以用于读取该文件的命令。无法使用未列出的命令,例如 head 命令。
# profiles -p "Read sulog File" profiles:Read sulog File set desc="Read sulog File" ... File> add profiles="Read Log Files" ... File> add cmd=/usr/bin/cat ... File:cat> set privs={file_dac_read}:/var/adm/sulog ... File:cat> end ... File> add cmd=/usr/bin/less ... File:less> set privs={file_dac_read}:/var/adm/sulog ... File:less> end ... File> add cmd=/usr/bin/more ... File:more> set privs={file_dac_read}:/var/adm/sulog ... File:more> end ... File> add cmd=/usr/bin/page ... File:page> set privs={file_dac_read}:/var/adm/sulog ... File:page> end ... File> add cmd=/usr/bin/tail ... File:tail> set privs={file_dac_read}:/var/adm/sulog ... File:tail> end ... File> add cmd=/usr/bin/view ... File:head> set privs={file_dac_read}:/var/adm/sulog ... File:head> end ... File> commit ... File> exit
view 命令使用户可以读取文件但是无法编辑。