JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris 11 开发者安全性指南     Oracle Solaris 11.1 Information Library (简体中文)
为本文档评分
search filter icon
search icon

文档信息

前言

1.  面向开发者的 Oracle Solaris 安全(概述)

2.  开发特权应用程序

特权应用程序

关于特权

管理员如何指定特权

如何实现特权

允许特权集合

可继承特权集合

有限特权集合

有效特权集合

超级用户与特权模型之间的兼容性

特权类别

使用特权进行编程

特权数据类型

特权接口

setppriv():用于设置特权

用于映射特权的 priv_str_to_set()

特权编码示例

包围在超级用户模型中的特权

包围在最小特权模型中的特权

特权应用程序开发指南

关于授权

3.  编写 PAM 应用程序和服务

4.  编写使用 GSS-API 的应用程序

5.  GSS-API 客户机示例

6.  GSS-API 服务器示例

7.  编写使用 SASL 的应用程序

8.  Oracle Solaris 加密框架介绍

9.  编写用户级加密应用程序

10.  Oracle Solaris 密钥管理框架介绍

A.  适用于开发者的安全编码准则

B.  基于 C 的 GSS-API 样例程序

C.  GSS-API 参考信息

D.  指定 OID

E.  SASL 示例的源代码

F.  SASL 参考信息表

词汇表

索引

请告诉我们如何提高我们的文档:
过于简略
不易阅读或难以理解
重要信息缺失
错误的内容
需要翻译的版本
其他
Your rating has been updated
感谢您的反馈!

您的反馈将非常有助于我们提供更好的文档。 您是否愿意参与我们的内容改进并提供进一步的意见?

关于授权

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

  1. 使用 getent 命令扫描 auth_attr 数据库中的条目,如下所示:

    % getent auth_attr | sort | more

    getent 命令会检索 auth_attr 数据库中的授权列表,并对名称类似的授权一起进行排序。将按照配置授权的顺序来检索授权。有关使用 getent 命令的信息,请参见 getent(1M) 手册页。

  2. 在程序开始时使用 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 */