直接将权限指定给用户时,这些权限在每个 shell 中都有效。未直接将权限指定给用户时,则此用户必须打开一个配置文件 shell。例如,当具有指定权限的命令位于用户权限配置文件列表内的权限配置文件中时,此用户必须在配置文件 shell 中执行此命令。
以下过程显示如何确定是否已直接为您指定权限。
不当使用直接指定的权限可能导致无意的安全性破坏。有关介绍,请参见直接指定安全属性时的安全注意事项。
列出进程可以使用的权限。
有关过程,请参见如何确定进程的权限。
在任何 shell 中调用操作并运行命令。
有效集中列出的权限在整个会话中都有效。如果已为您直接指定了除基本集之外的权限,则会在有效集中列出这些权限。
如果已经为您直接指定权限,则基本集包含的权限会多于缺省基本集。在此示例中,用户始终能够访问 proc_clock_highres 权限。
% /usr/ucb/whoami jdoe % ppriv -v $$ 1800: pfksh flags = <none> E: file_link_any,…,proc_clock_highres,proc_session I: file_link_any,…,proc_clock_highres,proc_session P: file_link_any,…,proc_clock_highres,proc_session L: cpc_cpu,dtrace_kernel,dtrace_proc,dtrace_user,…,sys_time % ppriv -vl proc_clock_highres Allows a process to use high resolution timers. |
角色使用管理 shell 或配置文件 shell。承担角色的用户可以使用此角色的 shell 列出已直接指定给此角色的权限。在以下示例中,已经直接将处理日期和时间程序的权限指定给角色 realtime。
% su realtime Password: <键入 realtime 的口令> $ /usr/ucb/whoami realtime $ ppriv -v $$ 1600: pfksh flags = <none> E: file_link_any,…,proc_clock_highres,proc_session,sys_time I: file_link_any,…,proc_clock_highres,proc_session,sys_time P: file_link_any,…,proc_clock_highres,proc_session,sys_time L: cpc_cpu,dtrace_kernel,dtrace_proc,dtrace_user,…,sys_time |
未直接将权限指定给用户时,此用户可通过权限配置文件获取特权命令的访问权限。必须在配置文件 shell 中执行权限配置文件中的命令。
验证到 Solaris Management Console 的用户或角色必须具有 solaris.admin.usermgr.read
授权。基本 Solaris 用户权限配置文件包括此授权。
确定已指定给您的权限配置文件。
$ /usr/sadm/bin/smuser list -- -n username -l Authenticating as user: admin … Please enter a string value for: password :: … User name: username User ID (UID): 130 Primary group: staff Secondary groups: Comment: object mgt jobs Login Shell: /bin/sh Home dir server: system Home directory: /export/home/username AutoHome setup: True Mail server: system Rights: Object Access Management Assigned Roles: |
找到以 "Rights:" 开头的行。
"Rights" 行列出已直接指定给您的权限配置文件的名称。
在 exec_attr 数据库中查找权限配置文件的名称。
$ cd /etc/security $ grep "Object Access Management" exec_attr Object Access Management:solaris:cmd:::/usr/bin/chgrp:privs=file_chown Object Access Management:solaris:cmd:::/usr/bin/chown:privs=file_chown Object Access Management:suser:cmd:::/usr/bin/chgrp:euid=0 Object Access Management:suser:cmd:::/usr/bin/chmod:euid=0 … |
具有已添加权限的命令列在 solaris 策略项的末尾。
在配置文件 shell 中键入需要权限的命令。
在常规 shell 中键入这些命令时,它们不会使用权限运行,因而不会成功运行。
% pfsh $ |
在以下示例中,用户 jdoe 不能从其常规 shell 中更改文件的组权限。但是,在配置文件 shell 中键入命令时,jdoe 可以更改这些权限。
% whoami jdoe % ls -l useful.script -rwxr-xr-- 1 nodoe eng 262 Apr 2 10:52 useful.script chgrp staff useful.script chgrp: useful.script: Not owner % pfksh $ /usr/ucb/whoami jdoe $ chgrp staff useful.script $ chown jdoe useful.script $ ls -l useful.script -rwxr-xr-- 1 jdoe staff 262 Apr 2 10:53 useful.script |
角色通过包含具有指定权限的命令的权限配置文件来获取特权命令的访问权限。为用户提供特权命令访问权限的最安全的方法是为用户指定一个角色。承担此角色之后,用户便可执行所有包括在此角色权限配置文件中的特权命令。
验证到 Solaris Management Console 的用户或角色必须具有 solaris.admin.usermgr.read
授权。基本 Solaris 用户权限配置文件包括此授权。
确定可以承担的角色。
$ /usr/sadm/bin/smuser list -- -n username -l Authenticating as user: primadmin … User name: username User ID (UID): 110 Primary group: staff Secondary groups: Comment: Has admin roles Login Shell: /bin/sh … Rights: Assigned Roles: primadmin, admin |
找到以 "Assigned Roles:" 开头的行。
"Assigned Roles" 行列出可以承担的角色。
确定角色之一拥有的权限配置文件。
$ /usr/sadm/bin/smuser list -- -n admin -l Authenticating as user: primadmin … User name: admin User ID (UID): 101 Primary group: sysadmin Secondary groups: Comment: system administrator Login Shell: /bin/pfksh … Rights: System Administrator Assigned Roles: |
在 "Rights:" 行中找到该角色的权限配置文件的名称。
在 prof_attr 数据库中查找权限配置文件。
由于系统管理员配置文件是配置文件的集合,因此需要在系统管理员配置文件中列出这些配置文件。
$ cd /etc/security $ grep "System Administrator" prof_attr System Administrator:::Can perform most non-security administrative tasks:profiles=Audit Review,Printer Management,Cron Management, Device Management,File System Management,Mail Management,Maintenance and Repair,Media Backup,Media Restore,Name Service Management,Network Management,Object Access Management,Process Management,Software Installation,User Management,All;help=RtSysAdmin.html |
对于每个权限配置文件,在 exec_attr 数据库中查找与其相关的权限配置文件。
例如,Network Management 配置文件是 System Administrator 配置文件的补充配置文件。Network Management 配置文件包括一些特权命令。
$ cd /etc/security $ grep "Network Management" exec_attr Network Management:solaris:cmd:::/usr/sbin/ifconfig:privs=sys_net_config Network Management:solaris:cmd:::/usr/sbin/route:privs=sys_net_config … |
这些命令及其指定权限是 solaris 策略项的最后两个字段。可以在角色的配置文件 shell 中运行这些命令。
当用户承担角色时,其 shell 成为配置文件 shell。因此,将使用指定给命令的权限来执行这些命令。在以下示例中,admin 角色可以更改 useful.script 文件的权限。
% whoami jdoe % ls -l useful.script -rwxr-xr-- 1 elsee eng 262 Apr 2 10:52 useful.script chgrp admin useful.script chgrp: useful.script: Not owner % su admin Password: <键入 admin 的口令> $ /usr/ucb/whoami admin $ chgrp admin useful.script $ chown admin useful.script $ ls -l useful.script -rwxr-xr-- 1 admin admin 262 Apr 2 10:53 useful.script |