跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 11.1 管理:安全服务 Oracle Solaris 11.1 Information Library (简体中文) |
在缺省情况下,将为用户指定权限。系统所有用户的权限均在 /etc/security/policy.conf 文件中指定。
安装 Oracle Solaris 时,您的系统已配置了用户权限和进程权限。在未进行进一步配置的情况下,可使用以下任务列表查看和使用 RBAC。
|
使用以下命令可列出系统上的所有授权、权限配置文件以及具有安全属性的命令。要列出所有已定义的特权,请参见如何列出系统上的特权。
% auths info solaris.account.activate solaris.account.setpolicy solaris.admin.edit ... solaris.zone.login solaris.zone.manage
% getent auth_attr | more solaris.:::All Solaris Authorizations::help=AllSolAuthsHeader.html solaris.account.:::Account Management::help=AccountHeader.html ... solaris.zone.login:::Zone Login::help=ZoneLogin.html solaris.zone.manage:::Zone Deployment::help=ZoneManage.html
% profiles -a Console User CUPS Administration Desktop Removable Media User ... VSCAN Management WUSB Management
% getent prof_attr | more All:::Execute any command as the user or role:help=RtAll.html Audit Configuration:::Configure Solaris Audit:auths=solaris.smf.value.audit; help=RtAuditCfg.html ... Zone Management:::Zones Virtual Application Environment Administration: help=RtZoneMngmnt.html Zone Security:::Zones Virtual Application Environment Security:auths=solaris.zone.*, solaris.auth.delegate;help=RtZoneSecurity.html ...
% getent exec_attr | more All:solaris:cmd:::*: Audit Configuration:solaris:cmd:::/usr/sbin/auditconfig:privs=sys_audit ... Zone Security:solaris:cmd:::/usr/sbin/txzonemgr:uid=0 Zone Security:solaris:cmd:::/usr/sbin/zonecfg:uid=0 ...
使用以下命令可查看 RBAC 指定。要查看可以指定的所有权限,请参见如何查看所有已定义的安全属性。
% profiles Basic Solaris User All
上面的权限配置文件在缺省情况下会指定给所有用户。如果您是初始用户,您将具有较长的列表。
% profiles Initial user System Administrator Audit Review ... CPU Power Management Basic Solaris User All
% auths solaris.device.cdrw,solaris.device.mount.removable,solaris.mail.mailq solaris.network.autoconf.read,solaris.admin.wusb.read solaris.smf.manage.vbiosd,solaris.smf.value.vbiosd
这些授权包含在缺省情况下指定给所有用户的权限配置文件中。
% roles root
该角色在缺省情况下会指定给初始用户。No roles 表明没有为您指定任何角色。
% ppriv $$ 1234: /bin/csh flags = <none> E: basic I: basic P: basic L: all
缺省情况下,将为每个用户指定基本的特权集。缺省限制特权集为所有特权。
% ppriv -vl basic file_link_any Allows a process to create hardlinks to files owned by a uid different from the process' effective uid. file_read Allows a process to read objects in the filesystem. file_write Allows a process to modify objects in the filesystem. net_access Allows a process to open a TCP, UDP, SDP or SCTP network endpoint. proc_exec Allows a process to call execve(). proc_fork Allows a process to call fork1()/forkall()/vfork() proc_info Allows a process to examine the status of processes other than those it can send signals to. Processes which cannot be examined cannot be seen in /proc and appear not to exist. proc_session Allows a process to send signals or trace processes outside its session.
% profiles -l Basic Solaris User ... /usr/bin/cdrecord.bin privs=file_dac_read,sys_devices, proc_lock_memory,proc_priocntl,net_privaddr /usr/bin/readcd.bin privs=file_dac_read,sys_devices,net_privaddr /usr/bin/cdda2wav.bin privs=file_dac_read,sys_devices, proc_priocntl,net_privaddr All *
用户的权限配置文件可以包括使用特定特权运行的命令。基本 Solaris 用户配置文件包括允许用户读取和写入 CD-ROM 的命令。
示例 9-1 列出用户的授权
% auths username solaris.device.cdrw,solaris.device.mount.removable,solaris.mail.mailq
示例 9-2 列出用户或角色的权限配置文件
以下命令列出了特定用户的权限配置文件。
% profiles jdoe jdoe: Basic Solaris User All
以下命令列出了 cryptomgt 角色的权限配置文件。
% profiles cryptomgt cryptomgt: Crypto Management Basic Solaris User All
以下命令列出了 root 角色的权限配置文件。
% profiles root root: All Console User Network Wifi Info Desktop Removable Media User Suspend To RAM Suspend To Disk Brightness CPU Power Management Network Autoconf User Basic Solaris User
示例 9-3 列出用户的指定角色
以下命令列出了特定用户的指定角色。
% roles jdoe root
示例 9-4 列出特定命令的用户特权
以下命令列出了一般用户的权限配置文件中的特权命令。
% profiles -l jdoe jdoe: Basic Solaris User ... /usr/bin/cdda2wav.bin privs=file_dac_read,sys_devices, proc_priocntl,net_privaddr /usr/bin/cdrecord.bin privs=file_dac_read,sys_devices, proc_lock_memory,proc_priocntl,net_privaddr /usr/bin/readcd.bin privs=file_dac_read,sys_devices,net_privaddr ...
开始之前
必须已为您指定了角色,缺省情况下,仅存在 root 角色。
% roles Comma-separated list of role names is displayed
% su - rolename Password: <Type rolename password> $
su - rolename 命令会将 shell 更改为该角色的配置文件 shell。配置文件 shell 可识别安全属性(例如授权、特权和 set ID 位)。
$ /usr/bin/whoami rolename
您现在可在此终端窗口中执行角色任务。
有关样例输出,请参见如何查看指定的权限。
$ profiles -l verbose rights profiles output $ auths authorizations output
示例 9-5 承担 root 角色
在以下示例中,初始用户承担 root 角色并列出该角色的 shell 中的特权。
% roles root % su - root Password: <Type root password> # Prompt changes to root prompt # ppriv $$ 1200: pfksh flags = <none> E: all I: basic P: all L: all
有关特权的信息,请参见特权(概述)。
用户属性包括登录 shell、权限配置文件和角色。为用户提供管理权能的最安全方法是将角色指定给用户。有关讨论,请参见直接指定安全属性时的安全注意事项。
开始之前
在缺省配置中,您必须承担 root 角色才能修改用户的安全属性。
为您的站点配置 RBAC 后,您将具有其他选择。要更改用户的大多数安全属性(包括口令),您必须是指定有 User Security(用户安全)权限配置文件的管理员。要指定审计标志或更改角色的口令,必须承担 root 角色。要更改其他用户属性,您必须是指定有 User Management(用户管理)权限配置文件的管理员。有关更多信息,请参见如何使用指定给您的管理权限。
该命令可以修改在本地命名服务或 LDAP 命名服务中定义的用户的属性。该命令的 RBAC 参数类似于 useradd 和 rolemod 命令的参数,如 user_attr(4) 手册页和如何更改用户的安全属性中的步骤 1 所述。
该命令的 RBAC 参数如下所示:
# usermod [-e expire] [-f inactive] [-s shell] [-m] [-A authorization-list] \ [-P profile] [-R role] [-K key=value] [-S repository] login
用户登录到期的日期。使用该选项可以创建临时用户。
连续的两次用户登录之间允许间隔的最大天数。当超出了 inactive 值时,用户将无法登录。缺省值为 0,没有失效日期。
在缺省位置为 rolename 创建起始目录。
rolename 的登录 shell。此 shell 必须是配置文件 shell,例如 pfbash。有关配置文件 shell 的列表,请参见 pfexec(1) 手册页。
提示 - 如 ls /usr/bin/pf*sh 中一样,您还可以列出系统 /usr/bin 目录中的配置文件 shell。
一个或多个授权(以逗号分隔)。有关可用授权的列表,请参见如何查看所有已定义的安全属性。
一个或多个权限配置文件(以逗号分隔)。有关权限配置文件的列表,请参见如何查看所有已定义的安全属性。
一个或多个角色(以逗号分隔)。要创建角色,请参见如何创建角色。
key=value 对。可以重复该选项。提供以下密钥:audit_flags、auths、profiles、project、defaultpriv、 limitpriv、lock_after_retries、pam_policy 和 roleauth。有关设置值所需的密钥、密钥值以及授权的信息,请参见 user_attr(4) 手册页。
files 或 ldap 之一。缺省值为本地文件。
用户名。
要将授权指定给用户,请参见示例 9-7。
要将权限配置文件指定给用户,请参见示例 9-6。
要将现有角色分配给用户,请参见如何指定角色。在缺省配置中,您可以将 root 角色分配给现有用户。
示例 9-6 创建可以管理 DHCP 的用户
在本示例中,安全管理员将在 LDAP 中创建一个用户。登录时,jdoe-dhcp 用户能够管理 DHCP。
# useradd -P "DHCP Management" -s /usr/bin/pfbash -S ldap jdoe-dhcp
由于已为用户指定了 pfbash 作为登录 shell,因此 DHCP Management(DHCP 管理)权限配置文件中的安全属性对用户缺省 shell 中的用户可用。
示例 9-7 将授权直接指定给用户
在本示例中,安全管理员将创建一个可以控制屏幕亮度的本地用户。
# useradd -c "Screened JDoe, local" -s /usr/bin/pfbash \ -A solaris.system.power.brightness jdoe-scr
该授权将添加到用户的现有授权指定中。
示例 9-8 从用户的限制特权集中删除特权
在以下示例中,防止所有源自 jdoe 初始登录的会话使用 sys_linkdir 特权。也就是说,即使在用户运行 su 命令之后,也不能生成指向目录的硬链接,并且也不能解除目录链接。
$ usermod -K 'limitpriv=all,!sys_linkdir' jdoe $ userattr limitpriv jdoe all,!sys_linkdir
示例 9-9 将特权直接指定给用户
在本示例中,安全管理员会向 jdoe 用户授予一个非常特定的特权,该特权可以影响系统时间。
$ usermod -K defaultpriv='basic,proc_clock_highres' jdoe
defaultpriv 关键字的值将替换现有的值。因此,对于要保留 basic 特权的用户,指定了值 basic。在缺省配置中,所有用户都拥有基本特权。有关基本特权的列表,请参见步骤 4。
在 root 角色中,初始用户具有所有管理权限。
步骤 1 显示了如果您具有管理权限,您将如何管理系统。步骤 2 显示了非 root 帐户可以如何编辑系统文件。
开始之前
已为您指定了一般用户没有的权限。如果您不是 root 用户,则必须为您分配一个角色、管理权限配置文件或特定特权或授权。
打开终端窗口。
% su - Password: Type the root password #
注 - 无论 root 是用户还是角色,此方法都是可行的。井号 (#) 提示符表明您现在已是 root 用户。
在以下示例中,您承担了审计配置角色。此角色包括 "Audit Configuration"(审计配置)权限配置文件。
% su - audadmin Password: Type the audadmin password $
您过去在其中键入该命令的 shell 现在位于一个配置文件 shell 中。在该 shell 中,您可以运行 auditconfig 命令。有关配置文件 shell 的更多信息,请参见配置文件 Shell 和 RBAC。
例如,以下命令集允许您在 pfbash shell 中查看审计预选值和审计策略:
% pfbash $ auditconfig -getflags active user default audit flags = ua,ap,lo(0x45000,0x45000) configured user default audit flags = ua,ap,lo(0x45000,0x45000) $ auditconfig -getpolicy configured audit policies = cnt active audit policies = cnt
结合使用权限配置文件的特权命令名称来运行 pfexec 命令。例如,以下命令允许您查看用户预选的审计标志:
% pfexec auditconfig -getflags active user default audit flags = ua,ap,lo(0x45000,0x45000) configured user default audit flags = ua,ap,lo(0x45000,0x45000)
应用于 pfexec 的特权限制与应用于 pfbash 的特权限制相同。但要运行其他特权命令,必须在键入该特权命令之前再次键入 pfexec。
% pfexec auditconfig -getpolicy configured audit policies = cnt active audit policies = cnt
使用在 sudoers 文件中为您指定的管理命令的名称运行 sudo 命令。有关更多信息,请参见 sudo(1M) 和 sudoers(4) 手册页。
如果您不是 UID 为 0 的 root,则缺省情况下您无法编辑系统文件。不过,如果为您指定了 solaris.admin.edit/ path-to-system-file 授权,则您可以编辑 system-file。例如,如果为您指定了 solaris.admin.edit/etc/security/audit_warn 授权,则您可以编辑 audit_warn 文件。
$ pfedit /etc/security/audit_warn
该命令使用 $EDITOR 的值来确定文本编辑器。有关更多信息,请参见 pfedit(1M) 手册页。如果将审计配置为审计 AUE_PFEXEC 事件,则通过 root 角色运行 pfedit 命令比较有用。
示例 9-10 高速缓存验证以便于使用角色
在以下示例中,管理员会配置一个角色来管理审计配置,但为方便使用该角色,会高速缓存用户的验证。首先,管理员创建并指定角色。
# roleadd -K roleauth=user -P "Audit Configuration" audadmin # usermod -R +audadmin jdoe
当切换到该角色时,如果 jdoe 使用 -c 选项,则在显示 auditconfig 输出之前需要输入口令。
% su - audadmin -c auditconfig option Password: auditconfig output
如果没有高速缓存验证,jdoe 将立即重新运行该命令,并出现输入口令提示。
管理员在 pam.d 目录中创建一个文件来存储用以实现验证高速缓存的 su 栈,以便只需要在初次运行时输入口令,以后不再需要输入口令,直到超过某段时间之后。
# pfedit /etc/pam.d/su ## Cache authentication for switched user # auth required pam_unix_cred.so.1 auth sufficient pam_tty_tickets.so.1 auth requisite pam_authtok_get.so.1 auth required pam_dhkeys.so.1 auth required pam_unix_auth.so.1
创建文件之后,管理员将对这些项进行检查,确定是否出现拼写、缺失或重复问题。
管理员必须提供完整的上述 su 栈。pam_tty_tickets.so.1 模块实现高速缓存。有关 PAM 的更多信息,请参见 pam.conf(4) 手册页和第 14 章。
在管理员添加 su PAM 文件并重新引导系统之后,对于所有角色(包括 audadmin 角色),当运行一系列命令时仅会提示他们输入一次口令。
% su - audadmin -c auditconfig option Password: auditconfig output % su - audadmin -c auditconfig option auditconfig output ...