1、内容安排6.1.7 角色 在基于角色的访问控制模型(Role Based Access Control,RBAC)中,将超级用户的能力分成不同的包分配给分担管理任务的其他用户。当使用RBAC划分超级用户特权时,用户可以拥有不同程度的访问权限,可以控制对其他用户特权操作的授权。6.1.7 角色 默认Solaris中包括3种系统管理员角色:主管理员(Primary Administrator,PA):负责为负责为其他用户分派权限,并负责系统的安全问题其他用户分派权限,并负责系统的安全问题。等效于root 用户或超级用户等功能强大的角色。系统管理员(System Administrator,SA):
2、负责与安全无关的日常管理工作。操作员(Operator):执行备份和设备维护操作 主管理员与系统管理员之间的区别主要取决于UNIX本地的安全策略。6.1.8 与用户有关的配置文件(1)UNIX的所有配置均已文件的形式存在。1/etc/passwd(文本文件)包含了所有用户登录名清单、为所有用户指定的主目录以及用户在登录时使用的Shell名称等重要信息。该文件的每一行是一个用户的信息描述,每一行又分为7列,列与列之间用冒号隔开。增加一个用户时,实际上就是在/etc/passwd文件中增加一行。字段1字段2字段3字段4字段5字段6字段7用户名口令UIDGID账号信息主目录登录shellrootx0
3、0root/root/bin/bash/etc/passwd中包含的字段用户名用户名 口令口令 UID GID UID GID 账号信息账号信息 主目录主目录 登录登录shell(shell(桌面桌面)Root:x:0:0:Super-User:/root:/usr/bin/bash login:password:uid:gid:comment:home:shell login:用户的登录名。由大、小写字母、数字、小数点、下划线以及连字符等字符组成,其中第一个字符必须是字母。此外,登录名中还至少包含一个小写字母。password:用户密码。该列原来是用来存储加密后的用户密码的,后来用户密码被转
4、移到/etc/shadow文件中。因此,值为值为x,则表示该用户设有密码设有密码,并且密码存储在/etc/shadow文件中;如果该列的值为*,则表示该用户无法无法正常登录正常登录到UNIX系统。7列?uid:用户标识符。是UNIX系统分配给每个用户的用于系统内部识别的唯一的数字标识。32位无符号整数,位于02,147,483,647之间,099,系统用户使用的;普通用户10060,000之间。gid:用户组标识符。32位无符号整数,099保留给系统使用。每个用户都至少属于一个用户组。comment:用户注释。可以包括用户真实姓名、电话号码以及电子邮件地址等信息。7列?home:用户主目录。是
5、UNIX分配给每个用户的私有目录,仅供个人存储文档使用。除了超级用户,其他的普通用户无法访问其他用户的主目录。主目录也是用户登录之后的起始路径。shell:用户默认的Shell。即命令解释器,可以通过该列指定用户登录之后需要调用哪种Shell,例如/bin/sh或者/bin/ksh等。如果该列的值为空,则默认使用/bin/sh,即Bourne Shell。用ls-l查看/etc/passwd的属性 文件的所有者是root用户 只有root用户才能强制修改该文件。即:只有root用户才有添加用户的权限。6442/etc/shadow/etc/shadow 与/etc/passwd配合使用 包含加
6、密后的用户密码以及其他的有关信息。文本文件。在该文件中,每一行描述一个用户的有关信息,每一行由9列组成,列与列之间通过冒号隔开。当对用户的密码进行修改时,UNIX会自动将更新后的密码同步到该文件中。2/etc/shadow login:password:lastchanged:mindays:maxdays:warn:inactive:expire:reserve9列?login:登录名。与/etc/passwd文件中的登录名一一对应。password:加密后的密码。用户密码长度至少应包含6个字符。加密后的密码至少包含13个字符;p如果该列的值为空或者为空或者为NP,没有没有设置设置密码(此时
7、用户不能登录系统);p如果前4个字符为*LK*,用户已经被锁定(lock)。p值为NONE,尚未设置密码,当该用户下次登录系统时,会要求该用户设定密码。9列?lastchanged:该列表示从1970年1月1日至最近一次修改密码之日的天数。9列?mindays:保持密码不变的最少天数。如果不满足该列的值,则用户不能修改密码。只有当该列的值大于或者等于0时,才会启用密码的有效期检查。maxdays:保持用户密码不变的最多天数。如果超过这个天数,系统会强制要求用户修改密码,否则不能登录系统。warn:该列表示在用户密码到期前多少天向用户发出警告。9列?inactive:该列表示密码到期之后,保持用
8、户信息有效的最多天数。如果超过这个天数限制,用户还没有修改密码,则该用户会被锁定。expire:有效期。该列用来指定用户有效期的截止日期。reserve:保留列。目前该列值都为空。用ls-l查看/etc/shadow的属性 即只有root用户有只读权限,其他的任何用户,都没有任何的访问权限。laodongsolaris:$ls-l/etc/shadow-r-1 root sys 910 9月 16日 23:57/etc/shadow注意注意/etc/shadow文件对于任何的非root用户都是不可访问的 why 任何用户都可以使用passwd命令来修改自己的密码呢?passwd命令的所有者为r
9、oot用户,并且该命令被设置了粘滞位。当非root用户在使用该命令时,其权限会得到临时提升。3/etc/groupu关于用户组的主要配置文件,存储了当前系统中的所有用户组以及该组的成员u文本文件。4列?group_name:passwd:gid:user_list group_name:用户组名称。password:用户组密码。通常为空。gid:组标识符。是一个无符号整数,与用户标识符基本相同。user_list:用户列表。如果组中有多个用户,则每个用户之间用逗号分割。本列的值可以为空,如果该列的值为空则表示主组为当前用户组的用户4/etc/skel 存放用户启动文件的目录,该目录的所有者是r
10、oot用户。当我们使用useradd命令添加用户时,该目录下的启动文件会作为模版自动复制到新用户的主目录下 可通过修改、添加、删除/etc/skel目录下的文件,来为用户提供一个统一、标准的、默认的用户环境。如通过修改/etc/passwd文件来添加用户,则需手工创建用户主目录,再把/etc/skel目录下面的文件复制到用户主目录下,最后再修改这些文件的所有者为新用户。注:UNIXUNIX中每当建立一个用户时,同时也建立一个同名的组,但是此用中每当建立一个用户时,同时也建立一个同名的组,但是此用 户默认是不加入到此组中户默认是不加入到此组中.2.用户建立与删除等操作(1 1)useradd/a
11、dduser useradd/adduser 用户名用户名 表示新建用户表示新建用户(2 2)passwd passwd 用户名用户名 表示修改用户口令表示修改用户口令(3 3)userdel userdel 用户名用户名 表示删除用户表示删除用户(4 4)usermod usermod l l 新用户名新用户名 旧用户名旧用户名 表示修改用户名称表示修改用户名称(5 5)usermod usermod L L 用户名用户名 表示锁定用户名表示锁定用户名(6 6)usermod usermod U U 用户名用户名 表示解锁用户名表示解锁用户名3.组的建立与管理(1 1)groupadd gr
12、oupadd 组名组名 表示新建组表示新建组(2 2)groupdel groupdel 组名组名 表示删除组表示删除组(3 3)groupmod groupmod 新组名新组名 旧组名旧组名 表示修改组名称表示修改组名称(5 5)gpasswd a gpasswd a 用户名用户名 组名组名 表示把用户加入到组中表示把用户加入到组中(6 6)gpasswd d gpasswd d 用户名用户名 组名组名 表示把用户从组中删除表示把用户从组中删除256.2添加添加用户用户 6.2.1使用默认选项添加用户使用默认选项添加用户 useradd命令用来添加用户。当没有当没有指定指定任何的任何的选项时
13、,选项时,UNIX系统不会为新用户系统不会为新用户创建主目录创建主目录。新用户的主组将会是other组 Shell将会是/bin/sh。例如,下面的命令在系统中添加一个用户user1:rootsolaris:#useradd user1 user1:*LK*:设置密码后才可使用再使用同样的方法查看上面两个文件的变化6.2.2为用户指定主目录为用户指定主目录-d以及-m。-d:指定新用户主目录的路径,可以是一个已经存在的路径,也可以是一个不存在的路径。-m:如果-d选项指定的目录不存在,则自动创建该目录,并将该目录的所有者设置为新用户。此外,还将/etc/skel目录中的初始化文件模板复制到用户
14、主目录中。添加user2,并指定其主目录为/export/home/user2。如果主目录不存在,则自动创建该目录6.2.3为用户指定默认为用户指定默认Shell-s选项:该选项的值是所要使用的Shell程序的绝对路径,如/bin/sh、/bin/csh等 指定C Shell(提示符为%)为新用户的默认Shell:Shell 的切换 可随时切换所使用的Shell,在命令行中输入Shell程序的名称。例如我们想在C Shell环境下切换到B Shell rootsolaris:#sh/C Shell用#作提示符 laodongsolaris:$/B Shell用$作提示符 rootsolaris
15、:#sh laodongsolaris:$csh/切换回C Shell solaris#6.2.4为用户指定组为用户指定组 在UNIX系统中,每个用户都属于1-17个组,其中包括主组以及备用组。在创建用户时,如果没有为用户指定组,则新用户将成为other组的成员。在useradd命令中,-g以及-G这两个选项分别用来指定主组和备用组。这两个选项的值都是UNIX系统中已经存在的用户组的名称。为用户添加组 新添加一个名称为user5的用户,并且指定该用户的主组为root,备用组为staff:rootopensolaris:#useradd-g root-G staff-d/export/home/
16、user5-m user5 执行完成之后,我们可以通过groups命令来查看该用户所属的组,命令如下:rootopensolaris:#groups user5 root staff 如果用户的备用组有多个,可以在-G选项后列出所有的备用组,备用组的名称之间用逗号隔开。rootopensolaris:#useradd-g root-G mysql,adm,staff user6 rootopensolaris:#groups user6 root adm staff mysql 6.2.5为用户指定为用户指定UID 用户标识符(User Identification,UID)实际上,某些系统用
17、户使用固定的数值来作为它们的UID,例如:root用户:其UID值为0。daemon用户:其UID值为1。bin用户:其UID值为2。nobody用户:其UID值为60001。noaccess用户:其UID值为60002。6.2.5为用户指定为用户指定UID UID与用户的登录名一般是一一对应。如果管理员在添加用户时没有明确指定UID值,则UNIX系统会从100开始自动为新用户分配UID号码,所分配的UID号码一般是当前的最大值加1。6.2.5为用户指定为用户指定UID 如果在增加新用户的时候想明确指定UID号码,可以使用useradd命令的-u选项。例如,下面的命令增加了一个名称为user7
18、的用户,并且该用户的UID号码为200:rootopensolaris:#useradd-m-d/export/home/user7-u 200 user7 查看/etc/passwd文件,来验证user7的UID号码是否为200,命令如下:rootopensolaris:#cat/etc/passwd|grep user7 user7:x:200:1:/export/home/user7:/bin/sh 为新用户指定了已经存在的UID号码,则提示UID号码已经被使用,并拒绝添加用户,例如我们再尝试增加一个新用户user78,并指定其UID号码为200,命令如下:rootopensolaris
19、:#useradd-m-d/export/home/user8-u 200 user78 UX:useradd:ERROR:uid 200 is already in use.Choose another.注意 实际上在UNIX以及UNIX中并不禁止多个登录名使用同一个UID。我们可以通过直接修改/etc/passwd文件的方式来使多个登录名共用一个UID号码。6.2.7使用图形界面添加用户使用图形界面添加用户 选择System|Administration|Users and Groups命令,打开Users and Groups对话框6.3 修改用户 通常情况下,系统管理员都是通过登录名来
20、区分用户的。UNIX提供了usermod命令来修改(modify)用户的登录信息。usermod options login options参数用来指定具体的要修改的登录信息,例如,UID号、主组、备用组、主目录以及默认的Shell等。而login参数用来指定要修改的用户的登录名。修改用户的登录名 使用usermod命令的-l选项,其语法如下 usermod-l new_login_name old_login_name 6.3.2修改登录名的有效期限修改登录名的有效期限 UNIX为usermod命令提供了-e选项来设置登录名的有效期,其语法如下:usermod-e expire_date l
21、ogin_name expire_date参数必须参数必须是一个有效的日期是一个有效的日期。格式必须使用/etc/datemsk文件中定义的格式之一来表示。/etc/datemsk常用的格式有:%m/%d/%y%H:%M%m/%d/%Y%H:%M%m/%d/%y%m/%d/%Y 其中%m、%d、%y、%H、%M分别代表月、日、年、小时和分钟,如:10/6/2015 或者:October 6,2015 以下命令将用户user11的有效期更改为2015年12月31日:rootopensolaris:#usermod-e 12/31/2015 user11 当系统时间到达2016年1月1日凌晨时,用
22、户user11将被禁用。6.3.3修改用户所属的修改用户所属的组组 UNIX中,用户所属的组分为主组和备用组。任何一个用户在某一个时刻只能属于一个主在某一个时刻只能属于一个主组组,但可同时可同时属于多个备用组属于多个备用组。主组是用来标识用户创建的文件的,也就是说,文件的属性中的组属性的值就是创建该文件的属性中的组属性的值就是创建该文件的用户的主组文件的用户的主组。如果用户的主组或者备用组需要改动,系统管理员可以使用usermod命令的-g以及-G选项来对用户进行修改。6.3.3修改用户所属的组修改用户所属的组 usermod-gnew_primary_group-Gnew_supplemen
23、tary_grouplogin_name new_primary_group参数表示用户的新的主组,该值必须是一个已经在系统中存在的用户组,可以是组名或者是组ID。new_supplementary_group备用组,该值同样也必须是一个已存在的用户组,可以使用组名或者组ID来表示。例如,以下命令将用户user6的主组由0,即root组,修改为10,即staff组:rootopensolaris:#usermod-g staff user6 6.3.4修改用户主目录修改用户主目录 usermod-d home_dir login_name rootopensolaris:#mkdir/user
24、1 rootopensolaris:#chown-R user1/user1 -R选项表示包含所有的子目录。注意:chown命令用来修改文件的所有者 修改user1用户的主目录,命令如下:rootopensolaris:#usermod-d/user1 user1 6.3.5修改用户默认的修改用户默认的Shell Shell是用户登录之后自动调用的命令解释器。可用usermod命令的-s选项来修改。usermod-s shell_name login_name shell_name参数即用户默认的Shell,该参数可以取bin/sh、/bin/csh等值。将用户user1的默认的Shell修改
25、为/bin/csh rootopensolaris:#usermod-s/bin/csh user1 6.4删除用户删除用户6.4.1使用默认选项删除使用默认选项删除用户(用户(不会删除用户的主目录)UNIX系统提供了userdel命令来删除用户 userdel login_name rootopensolaris:#ls-ld/user1 drwxr-xr-x 2 103 other 4 2011-09-16 15:17 /user1 6.4.2删除用户及其主目录删除用户及其主目录 userdel-rlogin_name 将user2用户及其主目录从系统中删除,rootopensolaris
26、:#userdel-r user2 用户user2及其主目录/export/home/user2会彻底被删除。ls命令来验证该命令是否成功执行 rootopensolaris:#ls-ld/export/home/user2 ls:cannotaccess/export/home/user2:Nosuchfileordirectory6.5添加组添加组 通过用户组,系统管理员可以非常方便地对用户进行分类,或者批量授权6.5.1组名的组名的约定约定 组名是一个用来标识用户组的字符串。只能只能包含小写字母和数字,包含小写字母和数字,只能以字母只能以字母开头开头。长度一般一般不超过不超过8个个字符。
27、如:正确:abc、users、guests、group1 错误:Group、_group1、123。6.5.2使用默认选项添加组使用默认选项添加组 6.5.2使用默认选项添加组使用默认选项添加组 groupadd group_name group_name用户组的名称必须符合上面的约定。增加一个名称为dba的用户组:rootopensolaris:#groupadd dba 用户组存储在/etc/group文件中。groupadd命令添加一个用户组dba之后,会在/etc/group文件中增加一行记录。验证:rootopensolaris:#cat/etc/group|grep dba dba
28、:104:104即s系统自动指定的组ID。6.5.3指定组指定组ID 如添加用户组的时未指定组ID,则系统在当前最大组ID的基础上加1 系统管理员也可在增加组时,明确指定组ID。groupadd-ggidgroup_name Gid,无符号整数。6.5.3指定组指定组ID 新建名为account的用户组,并且指定其组ID为102:rootopensolaris:#groupadd-g 102 account /etc/group文件中就应该有account用户组的信息了。rootopensolaris:#cat/etc/group|grep account account:102:6.5.4指
29、定重复的组指定重复的组ID 指定用户组ID,只能指定当前系统中不存在的。实际上,允许多个用户组使用相同的组ID。这些相同ID的组会被当作是同一个组。groupadd-g gid-ogroup_name 增加名为account1的用户组,其组ID仍然指定为前面的102,即与account用户组的ID相同。rootopensolaris:#groupadd-g 102-o account1 6.6修改组修改组 6.6.1修改组名修改组名 组名是面向用户的用户组标识。一般来说,组名都是具有明确涵义的字符串,groupmod-n new_name group_name -n选项用来指定用户组的新的名称
30、 下面的命令将account1用户组的组名修改为account2 rootopensolaris:#groupmod-n account2 account1 6.6.2修改组修改组ID groupmod命令的-g选项来修改已有用户组的组ID,其基本语法如下:groupmod-g gid group_name -g选项指定用户组新的组ID gid是一个无符号整数,且不能使用当前系统中已经使用了的值。group_name参数指定要修改的用户组的组名,该组名必须是当前系统中存在的组名。将用户组account的组ID修改为105:rootopensolaris:#groupmod-g 105 acco
31、unt 验证一下用户组account的组ID是否已经被修改为105:rootopensolaris:#cat/etc/group|grep account account:105 通过以上输出可以得知,用户组account的组ID已经由102变成了105。6.6.3指定重复的组指定重复的组ID groupmod-o-g gid group_name 将用户组account的组ID修改为与staff用户组相同,即组ID的值为10:rootopensolaris:#groupmod-o-g 10 account 查看/etc/group文件来验证组ID是否修改成功rootopensolaris:#
32、cat/etc/group|grep account account:10:6.7删除删除组组 groupdel group_name 将用户组account删除:rootopensolaris:#groupdel account 删除用户组之后,属于该组的用户并不会随之删除,甚至这些用户所属的组ID也不会发生变化。下面我们通过一个具体的例子来说明用户组被删除之后对于该组成员的影响。6.7删除组删除组(1)首先创建一个名称为group1的用户组,rootopensolaris:#groupadd group1 (2)为上面创建的用户组添加一个成员用户rootopensolaris:#usera
33、dd-g group1-m-d/export/home/user1 user1 (3)通过id命令查看一下用户user1的身份信息 rootopensolaris:#id user1 uid=101(user1)gid=106(group1)groups=106(group1)可知,用户user1的主组和备用组都是group1。(4)删除用户组group1,命令如下:rootopensolaris:#groupdel group1 (5)再次使用id命令来查看用户user1的身份信息,命令如下:rootopensolaris:#id user1 uid=101(user1)gid=106 gr
34、oups=106 说明 尽管group1已被删,但其成员用户user1的所属组的组ID仍然为106,即原来用户组group1的组ID。此时由于用户组group1已经不存在,因此组ID值106已经成为无效的组ID,也就是说现在106已经没有对应的用户组。所以,在上面的id命令的输出结果中,只有组ID的值出现,而没有对应的用户组名。在这种情况下,系统管理员应该尽快为用户user1指定另外一个用户组。既然106已经成为一个空闲的组ID值,如果我们再添加一个组ID为106的用户组,用户user1会不会自动成为该用户组的成员?rootopensolaris:#groupadd-g 106 group2
35、rootopensolaris:#id user1 uid=101(user1)gid=106(group2)groups=106(group2)当我们添加用户组group2之后,用户user1自动成为group2的成员。这说明这说明UNIX系统内部是通系统内部是通过组过组ID来区分用户组的。来区分用户组的。6.8添加角色添加角色 在传统的UNIX安全模型中,超级管理员root拥有完全的特权,而其他的用户却经常由于没有权限而不能完成某些任务。有了基于角色的访问控制(RBAC),便可以取代传统的安全模型。角色的利用,使得管理员更加细致地管理UNIX系统的用户权限。本节介绍在UNIX系统中如何添加
36、角色。6.8.1指定角色基目录指定角色基目录 角色:特殊的用户。添加角色时,可以指定主目录。如果没有为角色明确指定主目录,则会自动使用基目录加登录名的方式为角色自动分配主目录。因此,基目录可以看作是所有角色的主目录的上级目录。添加角色 添加角色需要使用roleadd命令,其中基目录需要使用-b选项,其基本语法如下:roleadd-b base_dir-m role_name -b选项用来指定角色的基目录;-m选项表示当角色的主目录不存在时,自动创建该目录。如果指定的目录已经存在,则角色所属的主组必须对该目录拥有读、写以及执行的权限。增加一个名称为role1的角色,并指定基目录为/export/
37、home:laodongsolaris:$su Password:rootsolaris:#roleadd-d/export/home m role1查看一下角色的主目录是否成功创建 rootsolaris:#ls-l/export/home/total 14 drwxr-xr-x 25 laodong staff 43 9月 21日 16:32 laodong drwxr-xr-x 2 user2 staff 7 9月 16日 23:45 user2 drwxr-xr-x 2 user3 staff 7 9月 21日 11:17 user3 drwxr-xr-x 3 role1 staff
38、8 9月 17日 00:02 user4 角色创建之后还处于锁定状态角色创建之后还处于锁定状态,当我们为该角色设置密码之后,它才可以变为可用状态。为角色设置密码与操作普通用户完全相同 在OpenSolars中,添加角色实际上是在/etc/passwd、/etc/shadow以及以及/etc/user_attr这3个文件中分别添加相应的条目。rootsolaris:#cat/etc/passwd|greprole1 role1:x:105:10:/export/home:/usr/bin/pfbash rootsolaris:#cat/etc/shadow|greprole1 role1:$5$
39、4ZaotYV7$pR8pigSNKCbP8HiS0F1XH8gsXUPCwCO.LEKoK2m18o/:16699:rootsolaris:#cat/etc/user_attr|greprole1 role1:type=role;profiles=All;roleauth=role6.8.2指定角色主目录指定角色主目录 roleadd-d home_dir role_name -d选项用来指定角色的主目录;创建名称为role2的角色,其主目录位于/export/home/role2:rootsolaris:#roleadd-d/export/home/role4 role26.8.3指定角色
40、的用户组指定角色的用户组 角色所属的用户组同样分为主组与备用组两种,其中主组使用-g选项来指定,备用组使用-G选项来指定,其基本语法如下:roleadd-g primary_group-G supplementary_group role_name primary_group,supplementary_group可以可以是当前系统中已经存在的组名或者组是当前系统中已经存在的组名或者组ID。6.8.3指定角色的用户组指定角色的用户组 以下命令添加一个名称为role3的角色,并且指定其主组为root:rootsolaris:/#roleadd-g root-d/export/home/role3
41、 role36.8.4指定角色的有效期指定角色的有效期 roleadd-e expire role_name 添加一个名称为role4的角色,其有效期为2015年12月20日:rootsolaris:/export/home#roleadd-e 12/20/2015 role46.8.5指定角色的指定角色的UID 非负整数。如没有明确指定UID,则系统会根据当前最大值当前最大值UID值加值加1来自动分配UID。在同一个系统中,用户的UID和角色的UID是混在一起编码的,也就是说,用户也就是说,用户UID和角色和角色UID共用一段连续的整数值。共用一段连续的整数值。如果在创建角色时需要明确指定U
42、ID,则可以使用-u选项,其基本语法如下:6.8.5指定角色的指定角色的UID 如果在创建角色时需要明确指定UID,则可以使用-u选项,其基本语法如下:roleadd-u uid role_name-uid参数必须是当前系统中未被使用的数值。例如,以下命令创建一个名称为role5的角色,并且指定其UID为200:rootsolaris:/export/home#roleadd-u200-d/export/home/role5 role56.8.6 指定角色默认的Shell roleadd-sshell role_name 参数shell表示默认的Shell程序,该参数的值必须是一个可执行文件,
43、例如/usr/bin/bash以及/usr/bin/csh的 为新的角色指定默认的为新的角色指定默认的Shell为为/usr/bin/bash:rootopensolaris:#roleadd-s/usr/bin/bash-d/export/home/role8 role8 如果没有明确为角色指定默认的Shell,则系统系统将会为角色指定将会为角色指定/bin/pfsh作为默认的作为默认的Shell。6.8.7指定角色的指定角色的成员成员 角色与普通用户非常相似,但是角色是不能作为登录名来登录UNIX系统的。只有以普通的用户登录UNIX系统之后,才承担角色。因此,要使角色能够发挥作用,还必须为
44、角色指定成员用户,即角色的承担者。6.8.7指定角色的成员指定角色的成员 为角色指定成员或者为用户分配角色需要使用usermod命令的-R选项,其基本语法如下:usermod-R role1,role2,role3 login_name role1、role2等是当前系统中已经存在的角色名已经存在的角色名称称,如果为用户指定多个角色,可以将所有的角色罗列出来,角色名称之间用逗号隔开。参数login_name是当前系统中已经存在的登录名已经存在的登录名。6.8.7指定角色的成员指定角色的成员 还可以在添加用户的时候指定角色 useradd-R role1,role2,role3 login_na
45、me 下面的命令为用户user1指定role1、role3和role10共3个角色:rootopensolaris:#usermod-R role1,role3,role10 user1 6.8.7指定角色的成员指定角色的成员 执行完以上命令之后,我们可以通过roles命令来查看用户的角色,命令如下:rootopensolaris:#roles user1 role1,role3,role10 得知,将role1、role3和role10这3个角色分配给了用户user1。注意:在为用户指定多个角色的时候,角色名在为用户指定多个角色的时候,角色名称之间不能有任何的空格,只能是逗号称之间不能有任何
46、的空格,只能是逗号,否则会出现语法错误。6.8.8 为角色授权(1)在OpenSolaris中,与角色授权有关的配置文件主要有以下4个:扩展用户属性数据库(扩展用户属性数据库(user_attr):):将用户与具有授权和权限的角色相关联。权限配置文件属性数据库(权限配置文件属性数据库(prof_attr):):定义权限配置文件,列出配置文件的指定授权,并标识关联的帮助文件。授权属性数据库(授权属性数据库(auth_attr):):定义授权及其属性,并标识关联的帮助文件。执行属性数据库(执行属性数据库(exec_attr):):定义需要安全属性才能成功运行的命令,这些命令是权限配置文件的一部分,
47、具有安全属性的命令可以由为其指定了此配置文件的角色运行。/etc/user_attr 扩展的用户属性文件,系统能够知道某个用户能够使用哪些角色。还定义了用户在切换到角色身份时所使用的权限配置文件(profile)。该文件中的每一行都由5列组成,其格式如下:login_name:qualifier:res1:res2:attr 第1列表示登录名,该列的值与/etc/passwd文件中定义的登录名相对应,并且该列的值不能为空;第23列是保留列;第4列是描述信息,该列的值是可选的;第5列是一组由分号隔开的属性及其值的组合,其中每个属性的形式为:key=value key的取值范围为help、prof
48、s或者auths。help用来指定帮助文件,profs用来指定权限配置文件,auths用来指定权限。每个key都有与之相对应的不同的value。同样,该列的值也是可选的。例如,下面是一个典型的user_attr文件的内容:root:auths=solaris.*,solaris.grant;profiles=All lp:profiles=Printer Management adm:profiles=Log Management 在上面的代码中,第1行的root是登录名,auths=solaris.*,solaris.grant是用户的授权,其中solaris.*表示所有由Solaris操作系统提供的授权。solaris.grant表示角色拥有为任何权限配置文件、角色或用户指定任何授权的能力。授权名称在/etc/security/auth_attr文件中定义。profiles=All是表示该用户使用所有的权限配置文件,权限配置文件在/etc/security/prof_attr文件中定义。