在 Oracle® Solaris 11.2 中确保用户和进程的安全

退出打印视图

更新时间: 2014 年 7 月
 
 

扩展用户权限

示例 3-10  创建可以管理 DHCP 的用户

安全管理员创建可以管理 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  添加到角色的基本特权

在以下示例中,已经直接将处理日期和时间程序的特权指定给角色 realtimeExample 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 命令使用户可以读取文件但是无法编辑。