Solaris 开发者安全性指南

关于授权

授权存储在 /etc/security/auth_attr 文件中。要创建使用授权的应用程序,请执行以下步骤:

  1. 扫描 /etc/security/auth_attr 以查找一个或多个应用程序授权。

  2. 请在程序开始时使用 chkauthattr(3SECDB) 函数检查所需的授权。chkauthattr() 函数将在以下位置按顺序搜索授权:

    • policy.conf(4) 数据库中的 AUTHS_GRANTED 键-AUTHS_GRANTED 指示缺省情况下指定的授权。

    • policy.conf(4) 数据库中的 PROFS_GRANTED 键-PROFS_GRANTED 指示缺省情况下指定的权限配置文件。chkauthattr() 将针对指定授权检查这些权限配置文件。

    • user_attr(4) 数据库-此数据库存储为用户指定的安全属性。

    • prof_attr(4) 数据库-此数据库存储为用户指定的权限配置文件。

    如果 chkauthattr() 在上述任何位置中都找不到权限授权,则将拒绝用户访问该程序。

  3. 使管理员了解此应用程序需要哪些授权。您可以通过手册页或其他文档通知管理员。


示例 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 */