系统管理指南:安全性服务

确定已指定的权限

直接将权限指定给用户时,这些权限在每个 shell 中都有效。未直接将权限指定给用户时,则此用户必须打开一个配置文件 shell。例如,当具有指定权限的命令位于用户权限配置文件列表内的权限配置文件中时,此用户必须在配置文件 shell 中执行此命令。

Procedure如何确定已直接指定给您的权限

以下过程显示如何确定是否已直接为您指定权限。


注意 – 注意 –

不当使用直接指定的权限可能导致无意的安全性破坏。有关介绍,请参见直接指定安全属性时的安全注意事项


  1. 列出进程可以使用的权限。

    有关过程,请参见如何确定进程的权限

  2. 在任何 shell 中调用操作并运行命令。

    有效集中列出的权限在整个会话中都有效。如果已为您直接指定了除基本集之外的权限,则会在有效集中列出这些权限。


示例 11–9 确定直接指定给您的权限

如果已经为您直接指定权限,则基本集包含的权限会多于缺省基本集。在此示例中,用户始终能够访问 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.


示例 11–10 确定直接指定给角色的权限

角色使用管理 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

Procedure如何确定可以运行的特权命令

未直接将权限指定给用户时,此用户可通过权限配置文件获取特权命令的访问权限。必须在配置文件 shell 中执行权限配置文件中的命令。

开始之前

验证到 Solaris Management Console 的用户或角色必须具有 solaris.admin.usermgr.read 授权。基本 Solaris 用户权限配置文件包括此授权。

  1. 确定已指定给您的权限配置文件。


    $ /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:
  2. 找到以 "Rights:" 开头的行。

    "Rights" 行列出已直接指定给您的权限配置文件的名称。

  3. 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 策略项的末尾。

  4. 在配置文件 shell 中键入需要权限的命令。

    在常规 shell 中键入这些命令时,它们不会使用权限运行,因而不会成功运行。


    % pfsh
    
    $

示例 11–11 在配置文件 Shell 中运行特权命令

在以下示例中,用户 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

Procedure如何确定角色可以运行的特权命令

角色通过包含具有指定权限的命令的权限配置文件来获取特权命令的访问权限。为用户提供特权命令访问权限的最安全的方法是为用户指定一个角色。承担此角色之后,用户便可执行所有包括在此角色权限配置文件中的特权命令。

开始之前

验证到 Solaris Management Console 的用户或角色必须具有 solaris.admin.usermgr.read 授权。基本 Solaris 用户权限配置文件包括此授权。

  1. 确定可以承担的角色。


    $ /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
  2. 找到以 "Assigned Roles:" 开头的行。

    "Assigned Roles" 行列出可以承担的角色。

  3. 确定角色之一拥有的权限配置文件。


    $ /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:
  4. 在 "Rights:" 行中找到该角色的权限配置文件的名称。

  5. 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
  6. 对于每个权限配置文件,在 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 中运行这些命令。


示例 11–12 在角色中运行特权命令

当用户承担角色时,其 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