手册页部分 1M: 系统管理命令

退出打印视图

更新时间: 2014 年 7 月
 
 

usermod(1M)

名称

usermod - 修改系统中的用户登录信息

用法概要

usermod [-u uid [
-o]] [-g group] [
-G [+|-]group [, group...]] 
     [-d dir [-m]] [
-s shell] [-c 
comment] [-l new_name]
     [-f inactive] [-e 
expire] [-p] project, project
     [-A [+|-]authorization [,
authorization]] 
     [-P [+|-]profile [,
profile]] [-R [+|-]role [,
role]] 
     [-K key[+|-]=value
] [-S repository] [-q qualifier] 
login

描述

usermod 实用程序可以修改系统中的用户登录名定义。该命令可以更改指定登录项的定义并对系统文件和文件系统进行与帐户相关的相应更改。

使用此命令创建的系统文件条目每行最多允许有 512 个字符。为多个选项指定长参数可能会超出此限制。

对于本地文件系统信息库中没有的用户,通过指定 –S 选项,文件将为用户创建/修改本地文件条目。

管理员必须具有 "User Security"(用户安全)配置文件才能修改现有用户的安全属性。要修改现有角色的非安全属性,用户需要 "User Management"(用户管理)配置文件。设置 passwdshadowuser_attr 中各个字段所需的授权可在 passwd(4)shadow(4)user_attr(4) 中找到。分配组所需的授权可以在 group(4) 中找到。

选项

支持以下选项:

–A [+|-]authorization

一个或多个在 auth_attr(4) 中定义的以逗号分隔的授权。只有对授权具有 grant 权限的用户或角色才能将授权分配给帐户。这将替换所有现有授权设置。如果未指定任何授权列表,将删除现有设置。

前缀 + 可以将授权添加到现有授权;前缀 - 则可以将授权从现有授权中删除。如果未指定任何前缀,authorization 将替换现有授权。

–c comment

指定注释字符串。comment 可以为任意文本字符串。它通常为登录项的简短描述,当前用作存储用户全名的字段。该信息存储在用户的 passwd 条目中。

–d dir

指定用户的新起始目录。缺省值为 base_dir/login,其中 base_dir 是新登录项起始目录的基目录,login 是新的登录项。这会创建或修改用户的 auto_home 条目。

该选项的参数可指定为 server:dir,其中 server 是起始目录所在计算机的主机名,dir 是用户起始目录所在的路径。如果服务器是远程主机,则在用户登录时,需要在远程主机上为挂载该起始目录的系统创建该目录。如果未指定任何服务器名称,将在执行使用了 –m 选项的命令时,在主机上创建起始目录。

–e expire

指定登录名的失效日期。此日期过后,没有任何用户能够访问此登录名。到期选项参数是使用模板文件 /etc/datemsk 中包含的日期格式之一输入的日期。请参见 getdate(3C)

例如,您可以输入 10/6/90October 6, 1990" " 值会使到期日期处于无效状态。

–f inactive

指定在声明登录 ID 无效之前,允许该登录 ID 在连续两次使用之间间隔的最大天数。正常值为正整数。0 值会使此状态无效。

–g group

指定现有组的整数 ID 或字符串名称。该命令会重新定义用户的主组成员关系。

–G [+|-]group

现有组的整数 ID 或字符串名称。它定义新用户的补充组成员关系。使用 –g–G 选项指定的组之间的重复项将被忽略。指定的组数不能大于 NGROUPS_MAX。Solaris 操行系统保留了 GID 0-99 供将来分配。

前缀 + 可以将组添加到现有组;前缀 - 则可以将组从现有组中删除。如果不使用前缀,group 会替换现有组。

–K key[+|-]= value

替换现有用户的 key=value 对属性,或向角色中添加此对属性。可以使用多个 –K 选项来替换或添加多个 key=value 对。但是,键不能重复。可以使用通用 –K 选项以及相应键来代替特定的隐式键选项(–A–P–R–p)。有关有效的 key 列表,请参见 user_attr(4)。这些键的值通常可在手册页或与这些键相关的其他来源中找到。例如,有关 project 键的值的指导,请参见 project(4)。将命令 ppriv(1) 以及 –v–l 选项用于键 defaultprivlimitpriv 的值列表。如果未指定任何值,将删除现有键。

可以为关键字 type 指定值 role 或值 normal。使用值 role 时,帐户会从正常用户更改为角色户;使用值 normal 会将帐户保留为正常用户。

作为 role 帐户,不能有任何角色(–Rroles=value)。

前缀 + 可以将值添加到现有值;前缀 - 则可以将值从现有值中删除。如果未指定任何前缀,value 将替换现有值。

+/- 前缀操作仅适用于以下键:authsprofilesauth_profilesrolesprojectlimitprivdefaultprivauth_profilesaccess_times

–l new_logname

指定用户的新登录名。有关用户名的要求,请参见 passwd(4)

–m

将用户的起始目录移动到使用 –d 选项指定的新目录。如果该目录已存在,group 必须对其具有读/写/执行权限,其中 group 为用户的主组。如果指定给 –d 选项的服务器名称是远程主机,系统将不尝试创建起始目录。

如果目录尚不存在,将创建新的 ZFS 数据集。在全局区域中,数据集会创建为 rpool/export/home/rolename。对于非全局区域,数据集将创建为 ROOT-dataset/export/home/rolename。缺省情况下,ZFS 数据集的挂载点为 /export/home/ rolename。如果指定了 –d path,并且它是本地计算机上的路径,数据集将挂载在指定位置。授予角色创建 ZFS 快照并对其进行提升的权限。新创建的数据集将继承其父项的加密设置。如果该数据集已加密,将授予角色更改其包装密钥的权限。

–o

该选项允许指定的 UID 重复(不唯一)。

–p

现有项目的整数 ID 或字符串名称。它定义用户的补充项目成员关系。

–P [+|-]profile

一个或多个由逗号分隔的在 prof_attr(4) 中定义的权限配置文件。这会替换 user_attr(4) 中的任何现有配置文件设置。如果指定了空配置文件列表,则会删除现有设置。

前缀 + 可以将配置文件添加到现有配置文件;前缀 - 则可以将配置文件从现有配置文件中删除。如果未指定任何前缀,profile 会替换现有配置文件。

–q qualifier

用于限定扩展属性(通过 -K、-P、-A 和 + -R 指定)适用位置的主机或 netgroup 的名称。需要前缀 @ 来指示限定符是 netgroup 名称。仅当在 LDAP 名称服务中维护用户帐户时,–q 选项才有效。

–R [+|-]role

一个或多个逗号分隔的角色(请参见 roleadd(1M))。这将替换所有现有角色设置。如果未指定任何角色列表,将删除现有设置。

前缀 + 将角色添加到现有角色;前缀 - 将角色从现有角色中删除。如果没有前缀,role 会替换现有角色。

–s shell

指定程序的全路径名,登录时可用作用户的 shell。shell 的值必须为一个有效的可执行文件。

–S repository

有效的系统信息库包括 filesldap。系统信息库指定将更新哪个名称服务。缺省的系统信息库为 files。系统信息库为 files 时,授权、配置文件和角色可存在于其他名称服务系统信息库中,并可以分配给 files 系统信息库中的用户。当系统信息库为 ldap 时,所有可分配的属性必须存在于 ldap 系统信息库中。

–u uid

为用户指定新的 UID。该值必须为小于 <param.h> 中定义的 MAXUID 的非负十进制整数。

操作数

支持下列操作数:

login

要修改的现有登录名。

示例

示例 1 为用户分配特权

以下命令添加的特权会影响用户初始可继承权限集的高分辨率时间。

# usermod -K defaultpriv=basic,proc_clock_highres jdoe

此命令将在 user_attr 中生成以下条目:

jdoe::::type=normal;defaultpriv=basic,proc_clock_highres
示例 2 从用户的限制权限集中删除特权

以下命令删除的特权允许指定用户创建目录的硬链接以及取消目录链接。

# usermod -K limitpriv=all,!sys_linkdir jdoe

此命令将在 user_attr 中生成以下条目:

jdoe::::type=normal;defaultpriv=basic,limitpriv=all,!sys_linkdir
示例 3 从用户的基本特权集中删除特权

以下命令删除的特权允许指定用户检查用户会话以外的进程。

# usermod -K defaultpriv=basic,!proc_session jdoe

此命令将在 user_attr 中生成以下条目:

jdoe::::type=normal;defaultpriv=basic,!proc_session;limitpriv=all
示例 4 将角色分配给用户

以下命令将角色分配给用户。该角色必须是在执行此命令之前就已使用 roleadd(1M) 创建的角色。

# usermod -R mailadm jdoe

此命令将在 user_attr 中生成以下条目:

jdoe::::type=normal;roles=mailadm;defaultpriv=basic;limitpriv=all
示例 5 向用户授予授权角色

以下命令授予 solaris.zone.manage 授权、"Project Management"(项目管理)权限配置文件,将限制特权设置为基本特权,并将 mailadm 角色分配给用户。

# usermod -A 'solaris.zone.manage' -P 'Project Management' -K limitpriv=basic
 -R mailadm -S files jdoe_ldap

此命令将在 user_attr 中生成以下条目:

jdoe_ldap::::auths=solaris.zone.manage;profiles=ProjectManagement;limitpriv=basic;
roles=mailadm
示例 6 删除用户的所有配置文件

以下命令删除直接授予用户的所有配置文件。用户仍将拥有通过 policy.conf(4) 中的 PROFS_GRANTED 键授予的权限配置文件。

# usermod -P "" jdoe

退出状态

如果出现错误,usermod 将输出错误消息并以下列某一值退出:

1

无权执行尝试的操作。

2

命令语法无效。将显示 usermod 命令的用法消息。

3

为选项提供的参数无效。

4

使用 –u 选项指定的 giduid 已在使用中。

5

passwordshadow 文件相互不一致。可使用 pwconv(1M) 更正可能的错误。请参见 passwd(4)shadow(4)

6

要修改的登录项不存在,giduid 不存在。

7

grouppasswdshadow 文件缺失。

9

组名或用户名已在使用中。

10

无法更新 passwdshadowuser_attr 文件。

11

空间不足,无法移动起始目录(–m 选项)。

12

无法创建、删除或移动新的起始目录。

13

请求的登录名已在使用中。

14

意外失败。

16

无法更新组数据库。

17

无法更新项目数据库。

18

授权不足。

19

没有角色。

20

没有配置文件。

21

没有特权。

22

没有标签。

23

没有组。

24

系统未运行 Trusted Extensions。

25

没有项目。

26

无法更新 auto_home

文件

/etc/group

包含组定义的系统文件

/etc/datemsk

包含日期格式的系统文件

/etc/passwd

系统口令文件

/etc/shadow

包含用户加密口令和相关信息的系统文件

/etc/user_attr

包含其他用户和角色属性的系统文件

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os
接口稳定性
Committed(已确定)

另请参见

auths(1)chown(1)passwd(1)profiles(1)users(1B)groupadd(1M)groupdel(1M)groupmod(1M)logins(1M)pwconv(1M)roleadd(1M)roledel(1M)rolemod(1M)useradd(1M)userdel(1M)getdate(3C)auth_attr(4)passwd(4)policy.conf(4)prof_attr(4)user_attr(4)attributes(5)

附注

usermod 实用程序修改(缺省或指定的)作用域中的 passwdshadowgroupprojectuser_attr 数据库中的定义。该实用程序将依据外部名称服务验证用户名和用户 ID 的唯一性。

usermod 实用程序使用通过 SUNWaccr 获得的 /etc/datemsk 文件进行数据格式化。