跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 11 开发者安全性指南 Oracle Solaris 11.1 Information Library (简体中文) |
授权存储在 /etc/security/auth_attr 文件中。要创建使用授权的应用程序,请执行以下步骤:
使用 getent 命令扫描 auth_attr 数据库中的条目,如下所示:
% getent auth_attr | sort | more
getent 命令会检索 auth_attr 数据库中的授权列表,并对名称类似的授权一起进行排序。将按照配置授权的顺序来检索授权。有关使用 getent 命令的信息,请参见 getent(1M) 手册页。
在程序开始时使用 chkauthattr(3C) 函数检查所需的授权。
chkauthattr() 函数将在以下位置按顺序搜索授权:
policy.conf(4) 数据库中的 AUTHS_GRANTED 键-AUTHS_GRANTED 指示缺省情况下指定的授权。
policy.conf(4) 数据库中的 PROFS_GRANTED 键-PROFS_GRANTED 指示缺省情况下指定的权限配置文件。chkauthattr () 将针对指定授权检查这些权限配置文件。
user_attr(4) 数据库-此数据库存储为用户指定的安全属性。
prof_attr(4) 数据库-此数据库存储为用户指定的权限配置文件。
chkauthattr() 在上述任何位置中都找不到权限授权,则将拒绝用户访问该程序。如果 chkauthattr() 函数遇到 Stop 配置文件,则将忽略其他授权和配置文件,包括 AUTHS_GRANTED、PROFS_GRANTED 以及在 /etc/security/policy.conf 中找到的那些。因此,可以使用 Stop 配置文件来覆盖使用 /etc/security/policy.conf 文件中的 PROFS_GRANTED 和 AUTHS_GRANTED 密钥列出的配置文件。
有关如何使用提供的安全属性、添加新的安全属性并将其分配给用户和进程的信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的第 9 章 "使用基于角色的访问控制(任务)"。
注 - 用户可将条目添加到 auth_attr()、exec_attr() 和 prof_attr() 数据库中。但是,Oracle Solaris 授权并未存储在这些数据库中。
示例 2-3 检查授权
以下代码段说明如何使用 chkauthattr() 函数检查用户的授权。在本例中,该程序将检查 solaris.job.admin 授权。如果用户具有此授权,则该用户可以读取或写入其他用户的文件。如果没有此授权,则用户只能对其拥有的文件执行操作。
/* Define override privileges */ priv_set_t *override_privs = priv_allocset(); /* Clear privilege set before adding privileges. */ priv_set(PRIV_OFF, PRIV_EFFECTIVE, PRIV_FILE_DAC_READ, priv_FILE_DAC_WRITE, NULL); priv_addset(override_privs, PRIV_FILE_DAC_READ); priv_addset(override_privs, PRIV_FILE_DAC_WRITE); if (!chkauthattr("solaris.jobs.admin", username)) { /* turn off privileges */ setppriv(PRIV_OFF, PRIV_EFFECTIVE, override_privs); } /* Authorized users continue to run with privileges */ /* Other users can read or write to their own files only */