在 Oracle® Solaris 11.2 中确保用户和进程的安全

退出打印视图

更新时间: 2014 年 7 月
 
 

为用户和角色指定权限

本节说明了创建和修改角色和用户的命令。要创建或修改权限配置文件,请参见如何创建权限配置文件如何克隆和修改系统权限配置文件

有关角色的信息,请参见用户和进程权限基础

    创建和修改角色和用户的主要操作如下所示:

  • 创建角色

  • 创建可信用户

  • 修改角色的权限

  • 修改用户的权限

  • 允许用户使用自己的口令承担角色。

  • 更改角色口令

  • 删除角色

创建角色

如果您要使用角色,有多个方案可以选择。您可以通过 ARMOR 安装预定义角色并以独占方式使用这些角色。还可以创建角色并为其指定口令。您可以将 ARMOR 角色与您创建的角色结合使用。

要使用 ARMOR 角色,请参见Example 3–1

要创建自己的角色,请使用 roleadd 命令。有关此命令的参数的完整列表,请参见 roleadd(1M) 手册页。

例如,以下命令创建 "User Administrator"(用户管理员)本地角色以及起始目录和 pfbash 登录 shell,并为该角色创建一个口令:

# roleadd -c "User Administrator role, local" \
-m -K profiles="User Security,User Management"  useradm
80 blocks
# ls /export/home/useradm
local.bash_profile     local.login     local.profile
# passwd useradm
Password: xxxxxxxx
Confirm Password: xxxxxxxx

其中,

–c comment

描述角色。

–m

创建起始目录。

–K profiles=

为该角色指定一个或多个权限配置文件。有关权限配置文件的列表,请参见列出权限配置文件

rolename

角色的名称。有关可接受字符串的限制,请参见 roleadd(1M) 手册页。


注 -  可以将一个角色帐户指定给多个用户。因此,管理员通常都会创建一个角色口令,并单独为用户提供角色口令。有关角色口令的替代方式,请参见使用户可以将自己的口令用作角色口令Example 3–16Example 3–17
示例 3-1  使用 ARMOR 角色

在此示例中,安全管理员安装 ARMOR 标准定义的角色。管理员首先确认角色名称与任何现有帐户都不冲突,然后安装该软件包、查看角色定义并为可信用户指定角色。

    首先,管理员确保命名服务中不存在以下 UID 和名称:

  • 57 auditadm

  • 55 fsadm

  • 58 pkgadm

  • 53 secadm

  • 56 svcadm

  • 59 sysop

  • 54 useradm

确认这些 UID 和名称未被使用后,管理员可以安装此软件包。

# pkg install system/security/armor

该软件包在 /export/home 目录中创建 7 个角色和本地起始目录。

要查看每个角色的权限,管理员可以列出指定给每个角色的配置文件。

# profiles auditadm
# profiles fsadm
# profiles pkgadm
# profiles secadm
# profiles svcadm
# profiles sysop
# profiles useradm

无法修改这些权限指定。要创建不同的权限配置,您必须创建新角色,然后按照如何克隆和修改系统权限配置文件中的步骤创建新权限配置文件。

最后,管理员为可信用户指定角色。用户自己的口令可用于对角色进行验证。为部分用户指定了多个角色。任务时效性强的角色将指定给多个可信用户。

# usermod -R=auditadm adal
# usermod -R=fsadm,pkgadm bdewey
# usermod -R=secadm,useradm cfoure
# usermod -R=svcadm ghamada
# usermod -R=svcadm yjones
# usermod -R=sysop hmurtha
# usermod -R=sysop twong
示例 3-2  在 LDAP 系统信息库中创建 "User Administrator"(用户管理员)角色

管理员在 LDAP 中创建了 "User Administrator"(用户管理员)角色。承担该角色时用户需要提供口令,然后不需要为单个命令提供口令。

# roleadd -c "User Administrator role, LDAP" -m -S ldap \
-K profiles="User Security,User Management"  useradm
示例 3-3  创建角色以实现职责分离

管理员创建了两个角色。usermgt 角色可以创建用户,为其指定起始目录以及执行其他非安全任务。usersec 角色无法创建用户,但是可以指定口令,并更改其他权限分配。这两个角色都无法为用户或角色设置审计标志,也无法更改角色的口令。必须由 root 角色执行这些操作。

# roleadd -c "User Management role, LDAP" -s /usr/bin/pfksh \
-m -S ldap -K profiles="User Management"  usermgt
# roleadd -c "User Security role, LDAP" -s /usr/bin/pfksh \
-m -S ldap -K profiles="User Security"  usersec

管理员确保创建Example 3–5 中的每个一般用户都需要这两个角色。

示例 3-4  为管理加密服务创建并指定角色

在以下示例中,LDAP 网络的管理员会创建一个角色以管理加密框架,并将该角色指定给 UID 1111

# roleadd -c "Cryptographic Services manager" \
-g 14 -m -u 104 -S ldap -K profiles="Crypto Management" cryptmgt
# passwd cryptmgt
New Password: xxxxxxxx
Confirm password: xxxxxxxx 
# usermod -u 1111 -R +cryptmgt

具有 UID 1111 的用户将登录,然后承担该角色并显示指定的权限。

% su - cryptmgt
Password: xxxxxxxx
# profiles -l
      Crypto Management
          /usr/bin/kmfcfg            euid=0
          /usr/sbin/cryptoadm        euid=0
          /usr/sfw/bin/CA.pl         euid=0
          /usr/sfw/bin/openssl       euid=0
#

有关加密框架的更多信息,请参见在 Oracle Solaris 11.2 中管理加密和证书 中的第 1  章 加密框架。要管理该框架,请参见在 Oracle Solaris 11.2 中管理加密和证书 中的管理加密框架

为可信用户创建登录帐户

使用 useradd 命令创建登录帐户。有关 useradd 命令的参数的完整列表,请参见 useradd(1M) 手册页。该命令的与权限相关的参数与 roleadd 命令类似,但增加了 –R rolename 选项。

如果您为用户指定一个角色,该用户在承担该角色后可以使用该角色的权限。例如,以下命令创建一个可信用户,该用户可以承担您在为可信用户创建登录帐户中创建的 useradm 角色。

# useradd -c "Trusted Assistant User Manager user" -m -R useradm jdoe
80 blocks
# ls /export/home/jdoe
local.bash_profile     local.login     local.profile

其中,

–s shell

确定 username 的登录 shell。此 shell 可以是配置文件 shell,例如 pfbash。有关为可信用户指定配置文件 shell 的原因,请参见指定权限时的可使用性注意事项。有关配置文件 shell 的列表,请参见 pfexec(1) 手册页。

–R rolename

指定一个现有角色的名称。

有关更多示例,请参见在 Oracle Solaris 11.2 中管理用户帐户和用户环境 中的使用 CLI 设置和管理用户帐户的任务列表

修改用户权限

您可以使用 usermod 命令修改用户帐户。有关 usermod 命令的参数的完整列表,请参见 usermod(1M) 手册页。该命令的与权限相关的参数与 useradd 命令类似。

如果您为用户指定一个权限配置文件,该用户可以在打开配置文件 shell 后使用这些权限。例如,为用户指定权限配置文件。

# usermod -K profiles="User Management" kdoe

此更改将在用户下次登录时生效。用户要了解如何使用所指定的权限,请参阅使用所指定的管理权限

示例 3-5  为用户添加角色

在此示例中,管理员确保创建一般用户需要两个可信用户。这些角色是在Example 3–3 中创建的。

# usermod -R +useradm jdoe
# usermod -R +usersec mdoe

修改角色的权限

使用 rolemod 命令修改角色帐户。有关 rolemod 命令的参数的完整列表,请参见 rolemod(1M) 手册页。该命令的与权限相关的参数与 roleadd 命令类似。

可以通过减号 () 或加号 () 修改 key=value 对的值以及 –A–P–R 选项。 号表示从当前指定的值中减去该值。 号表示将该值加到当前指定的值。对于权限配置文件,该值追加到当前配置文件列表之前。对于成为靠前的权限配置文件的影响,请参见所指定权限的搜索顺序

示例 3-6  将某个权限配置文件添加为角色的第一个权限配置文件

例如,为 useradm 角色追加一个权限配置文件。

# rolemod -K profiles+="Device Management" useradm
# profiles useradm
useradm:
Device Management
User Management
User Security
示例 3-7  替换本地角色的指定配置文件

在以下示例中,管理员将修改 prtmgt 角色,在 "Printer Management"(打印机管理)配置文件后包括 "VSCAN Management"(VSCAN 管理)权限配置文件。

# rolemod -c "Handles printers and virus scanning" \
-P "Printer Management,VSCAN Management,All" prtmgt
示例 3-8  将特权直接指定给角色

在以下示例中,安全管理员向 realtime 角色授予一个非常特定的特权,该特权可以影响系统时间。要将特权指定给用户,请参见Example 3–14

# rolemod -K defaultpriv+='proc_clock_highres' realtime

defaultpriv 关键字的值始终都位于角色进程的特权列表中。

使用户可以将自己的口令用作角色口令

要使用户可以在承担角色时使用自己的口令,而不是使用角色口令,请修改该角色。

以下命令使所有指定了 useradm 角色的用户可以在承担任何指定角色(包括 useradm 角色)时使用自己的口令。

# rolemod -K roleauth=user useradm

更改角色口令

因为一个角色可能会被指定给许多用户,所以承担角色的用户无法更改角色的口令。您必须承担 root 角色才能更改角色口令。

# passwd useradm
Enter useradm's password: xxxxxxxx
New: xxxxxxxx
Confirm: xxxxxxxx

如果没有指定系统信息库,所有系统信息库中的口令都将发生更改。

有关更多命令选项,请参见 passwd(1) 手册页。

示例 3-9  更改特定系统信息库中的角色口令

在以下示例中,root 角色更改了本地 devadmin 角色的口令。

# passwd -r files  devadmin
New password: xxxxxxxx
Confirm password: xxxxxxxx

在以下示例中,root 角色更改了 LDAP 命名服务中 devadmin 角色的口令。

# passwd -r ldap devadmin
New password: xxxxxxxx
Confirm password: xxxxxxxx

删除角色

删除角色后,该角色立刻无法使用。

# roledel useradm

当前以该角色执行管理任务的用户无法继续执行操作。profiles 命令显示以下输出结果:

useradm # profiles
Unable to get user name