AIX用户和组管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AIX用户和组管理
了解IBM? AIX? 中与用户和组相关的配置文件,以及用来帮助管理用户和组的命令行工具。
先了解文件,然后了解命令
在学习AIX 中用来创建、修改和维护用户和组的命令之前,一定要了解在幕后发生的情况。
例如,应该了解相关文件及其作用。
下面是影响用户本身的一些文件:
AIX 中的命令
请记住,本文讨论的命令和方法应该可以在配置文件中有本地用户和组的AIX 系统上使用。
如果系统处理来自远程源(例如 Network Information System,即 NIS)的用户和组,那么不应该使用 chuser 和 chgroup 等命令。
/etc/passwd
/etc/security/.profile
/etc/security/limits
/etc/security/passwd
/etc/security/user
/usr/lib/security/mkuser.default
/etc/passwd
/etc/passwd 文件包含用户的基本信息,它可能是UNIX? 和Linux? 用户最熟知的用户管理文件。
清单 1 给出 /etc/passwd 文件的示例。
清单 1. /etc/passwd 文件示例
root:!:0:0::/:/usr/bin/ksh
daemon:!:1:1::/etc:
bin:!:2:2::/bin:
sys:!:3:3::/usr/sys:
adm:!:4:4::/var/adm:
uucp:!:5:5::/usr/lib/uucp:
guest:!:100:100::/home/guest:
nobody:!:4294967294:4294967294::/:
lpd:!:9:4294967294::/:
lp:*:11:11::/var/spool/lp:/bin/false
invscout:*:6:12::/var/adm/invscout:/usr/bin/ksh
snapp:*:200:13:snapp login user:/usr/sbin/snapp:/usr/sbin/snappd
ipsec:*:201:1::/etc/ipsec:/usr/bin/ksh
nuucp:*:7:5:uucp login
user:/var/spool/uucppublic:/usr/sbin/uucp/uucico
pconsole:*:8:0::/var/adm/pconsole:/usr/bin/ksh
esaadmin:*:10:0::/var/esa:/usr/bin/ksh
sshd:*:206:201::/var/empty:/usr/bin/ksh
atc:!:8000:400:Adam Cormany,Sr UNIX Admin:/home/atc:/bin/ksh
amdc:!:8001:401:AMDC:/home/amdc:/bin/ksh
pac:!:8002:400:PAC,Jr UNIX Admin:/home/pac:/bin/ksh
atc2:!:8003:402:ATCv2:/home/atc2:/bin/ksh
可以看到这个文件使用冒号 (:) 作为分隔符,每个条目按以下格式包含 7 个字段(为了便于阅读,在分隔符前后添加了空格):Username : Password Flag : UID : GID : GECOS : Home : Shell/Command
下面逐一解释这些字段:
Username。
这是与用户账户相关联的登录名/用户名。
Password Flag。
这个字段因 UNIX 和 Linux 的风格而异。
在 AIX 上,第二个字段可以包含两个字符之一:! 或*。
如果显示!,那么已经为此用户设置了密码。
如果还没有设置密码,就会出现 *。
密码本身存储在
/etc/security/passwd 中。
UID。
User Identifier (UID) 是用户的数字标识符。
GID。
Group Identifier (GID) 与 UID 相似,但是它与组相关联。
GID 在/etc/group 中定义。
GECOS。
General Electric Comprehensive Operating System (GECOS) 信息存储在第五个字段中。
这里存储用户的姓名、电话号码和其他一般个人信息。
Home。
这是用户的主目录。
Shell/Command。
通常情况下,最后一个字段包含在用户登录时启动的shell。
管理员也可以通过修改这个字段执行其他命令而不是shell(例如
/bin/false),从而限制访问。
/etc/security/.profile
/etc/security/.profile 文件可以节省宝贵的时间和减少麻烦。
在使用mkuser 命令创建用户时,执行 /usr/lib/security/mkuser.sys 脚本。
这个脚
本创建用户的目录,设置正确的权限,“创建” 用户的 .profile。
mkuser.sys 脚本实际上是把 /etc/security/.profile 文件复制到新用户的主目录中。
如果您正在构建新系统,或者一个新部门有100 名员工需要在系统上建立账户,那么一定要先修改/etc/security/.profile 文件,然后再开始创建用户账户。
如果已经创建了账户,然后意识到需要对某个变量或其他设置做简单的修改,就不得不手工修改每个用户的profile。
可以使用脚本简化这个过程,但是如果提前修改了/etc/security/.profile,会简单得多。
清单 2 给出一个 /etc/security/.profile 文件示例。
清单 2. /etc/security/.profile 文件示例
PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/
X11:/sbin:. export PATH
if [ -s "$MAIL" ] # This is at Shell startup. In normal
then echo "$MAILMSG" # operation, the Shell checks
fi # periodically.
/etc/security/limits
/etc/security/limits 文件包含所有ulimit,即用户的系统资源限制。
表1 列出 /etc/security/limits 文件中的字段及其用途。
表 1. /etc/security/limits 中的字段
软限制硬限制说明
fsize fsize_hard 用户可以创建的文件的大小
core core_hard 用户可以创建的核心文件的大小
cpu cpu_hard 允许的系统时间量
data data_hard 进程数据段的大小
stack stack_hard 进程堆栈段的大小
rss rss_hard 允许的物理内存量
nofiles nofiles_hard 同时打开的文件描述符数量
nproc nproc_hard 同时运行的进程数量
软限制和硬限制的区别是什么?在最大值(硬限制)范围内,用户或应用程序可以动态地修改软限制。
硬限制就是参数可以设置的最大值。
如果把参数
设置为数字值太困难(例如,如果开发人员不知道程序将使用的内存量或它需要打开的文件数量),那么可以把参数设置为-1,这表示无限制。
但是,不必为每个用户设置所有ulimit。
/etc/security/limits 文件包含一个default 部分,它为每个用户定义一组标准值,如果用户没有设置定制的值,就会使用这些值。
如果default 部分不存在,系统会设置预先确定的限制。
IBM 的默认值如下:
* Attribute Value
* ========== ============
* fsize_hard set to fsize
* cpu_hard set to cpu
* core_hard -1
* data_hard -1
* stack_hard 8388608
* rss_hard -1
* nofiles_hard -1
清单 3 给出一个 /etc/security/limits 文件示例。
清单 3. /etc/security/limits 文件示例
default:
fsize = 4194303
core = 16384
cpu = -1
data = 262144
rss = 65536
stack = 65536
pac:
fsize = 131072
fsize_hard = 262144
core = 262144
假设用户“pac” 是一位初级 UNIX 管理员,他的软限制值 fsize 由default 部分的4,194,303 降低到131,072;但是,允许他在需要时把这个值增加到262,144。
另外,pac 经常把自己的程序弄坏。
因此,把他的 core ulimit 增加到 262,144。
/etc/security/passwd
/etc/security/passwd 文件包含 AIX 用户的密码信息。
在这个文件中,每个用户有三个字段:
password。
加密的密码。
注意:如果这个字段只包含星号(*),那么账户被锁定,直到设置密码为止。
lastupdate。
最后一次更新密码的时间(系统纪元以来的秒数)。
flags。
对修改用户密码的限制。
可以设置三个标志:
ADMIN。
如果设置,那么只有根用户可以修改用户的密码。
ADMCHG。
如果设置,那么在用户下一次登录或执行su 时提示
修改密码。
NOCHECK。
如果设置,那么忽略/etc/security/user 中的任何其他限制。
清单 4 提供一个 /etc/security/password 文件示例。
清单 4. /etc/security/password 文件示例
amdc:
password = oBQaUkPkUryCY
lastupdate = 1243972006
flags = ADMCHG
在这个示例中,用户“amdc” 的密码是在 2009 年 6 月 2 日星期二15:46:46 EDT 设置的。
当用户下一次登录或执行 su 时,会提示修改密码。
您可能想知道如何把系统纪元以来的秒数转换为可读性更好的表示法,为此我编写了一个 Perl 脚本。
这个脚本的核心如下:# perl -e 'use POSIX; print strftime("%c\n",
localtime(1243972006));'
Tue Jun 2 15:46:46 EDT 2009
/etc/security/user
现在,要接触到 AIX 用户管理的核心了。
除了 /etc/passwd 中的基本信息之外,/etc/security/user 文件包含最重要的用户设置。
表 2 说明一些参数。
表 2. /etc/security/user 文件中的参数
参数格式说明
account_locked TRUE | FALSE 锁定账户;如果设置为 True,用户就无法登录。
admin TRUE | FALSE 如果设置为 True,用户就具有管理权力。
expires MMDDHHYY 如果到达此日期,账户就会过期并被锁定。
histexpire 0-260 用户在这个期限内不能重用密码(星期数)。
histsize 0-50 以前使用过的不能重用的密码数量。
login TRUE | FALSE 如果设置为 True ,用户可以登录。
maxage 0-52 密码的有效期(星期数)。
minage 0-52
用户在此期限之后才能修改密码(星期数)。
rlogin TRUE | FALSE 如果设置为 True ,那么可以远程访问此账户。
su
TRUE | FALSE
如果设置为 True ,那么其他用户可以使用 su 访问此账户。
参数的完整列表请查看 AIX 系统上的 /etc/security/user ,或访问 AIX Information Center 。
与 /etc/security/limits 一样,如果没有为账户指定值,就使用default 部分设置所有字段。
/usr/lib/security/mkuser.default
/usr/lib/security/mkuser.default 文件包含在通过 mkuser 创建新的 AIX 用户时使用的值。
清单 5 提供这个文件的示例。
清单 5. /usr/lib/security/mkuser.default 文件示例 user:
pgrp = staff groups = staff
shell = /usr/bin/ksh home = /home/$USER
admin:
pgrp = system groups = system
shell = /usr/bin/ksh home = /home/$USER
在这个文件中可以定义许多参数。
完整的列表请参见 man chuser 或访问 IBM Systems Information Center 。
基本命令
既然您已经熟悉了命令背后的文件,现在就来看看命令本身。
学习如何创建用户以及在创建用户之后修改用户。
mkuser
要了解的第一个命令是 mkuser。
如果没有 mkuser,其他命令都没什么用。
使用这个命令创建AIX 用户并设置初始值。
下面是在创建用户时要记住的几条简单规则:
用户名不能以下面的字符开头:
连字符或减号 (-)
加号 (+)
At 符号 (@)
波浪号 (~)
用户名不能是 ALL 或 default,因为这些名称是为操作系统保留的。
用户名不能包含:
冒号 (:)
引号—单引号或双引号 (' 或 ")
镑符或数字符 (#)
逗号 (,)
等号 (=)
斜杠—反斜杠或前向斜杠 (\ 或 /)
问号 (?)
反引号或勾号 (`)
空白(空格或制表符)
换行符
在 AIX 5.2 和更早的版本上,用户名的长度必须小于等于 8 个字符。
从AIX 5.3 开始,最大字符数增加到了 255。
为了在 AIX 5.3 和更高版本上检查这个设置,可以使用 getconf:# getconf LOGIN_NAME_MAX
9
或 lsattr:
# lsattr -El sys0
SW_dist_intr false Enable SW distribution of interrupts True
autorestart true Automatically REBOOT OS after a crash True boottype disk N/A
False
capacity_inc 1.00 Processor capacity increment False
capped true Partition is capped
False
conslogin enable System Console Login
False
cpuguard enable CPU Guard
True
dedicated true Partition is dedicated
False
enhanced_RBAC true Enhanced RBAC Mode
True
ent_capacity 1.00 Entitled processor capacity False
frequency 2656000000 System Bus Frequency
False
fullcore true Enable full CORE dump
True
fwversion IBM,EL340_075 Firmware version and revision levels False
id_to_partition 0X80000CE988400001 Partition ID
False
id_to_system 0X80000CE988400000 System ID
False
iostat false Continuously maintain DISK I/O history True
keylock normal State of system keylock at boot time False
log_pg_dealloc true Log predictive memory page deallocation events True
max_capacity 1.00 Maximum potential processor capacity False
max_logname 9 Maximum login name length at boot time True
maxbuf 20 Maximum number of pages in block I/O BUFFER CACHE True
maxmbuf 0 Maximum Kbytes of real memory allowed for MBUFS True
maxpout 0 HIGH water mark for pending write I/Os per file True
maxuproc 800 Maximum number of PROCESSES allowed per user True
min_capacity 1.00 Minimum potential processor capacity False
minpout 0 LOW water mark for pending write I/Os per file True
modelname IBM,8203-E4A Machine name
False
ncargs 256 ARG/ENV list size in 4K byte blocks True
nfs4_acl_compat secure NFS4 ACL Compatibility Mode True pre430core false Use pre-430 style CORE dump True
pre520tune disable Pre-520 tuning compatibility mode True realmem 3784704 Amount of usable physical memory in Kbytes False
rtasversion 1 Open Firmware RTAS version False
sed_config select Stack Execution Disable (SED) Mode True systemid IBM,021082744 Hardware system identifier
False
variable_weight 0 Variable processor capacity weight False 要修改这个设置,只需使用chdev 调整v_max_logname 参数(在 lsattr 输出中显示为 max_logname),把它设置为所需的最大字符数加一,加一是为了容纳终止字符。
例如,如果希望用户名的长度是 128 个字符,那么应该把
v_max_logname 设置为 129:
# chdev -l sys0 -a max_logname=129
sys0 changed
请注意,这一修改直到重新引导操作系统之后才会生效。
重新引导服务器之后,可以检查修改是否已经生效了:
# getconf LOGIN_NAME_MAX
128
但是请记住,如果环境包含 AIX 5.3 之前的IBM RS/6000? 服务器,或者操作系统无法处理超过 8 个字符的用户名,而且依靠 NIS 或其他身份验证机制,那么应该继续使用 8 个字符的用户名。
要想用默认设置创建用户并分配下一个可用的UID,只需执行mkuser 加上用户名:
# mkuser xander
# finger xander
Login name: xander
Directory: /home/xander Shell: /usr/bin/ksh
No Plan.
很容易,不是吗?现在试一下更有意思的操作。
通过添加在chuser 手册页(man chuser) 上找到的一些值,可以包含用户的GECOS 信息并把用户的 core ulimit 改为 524,288,见清单 6。
清单 6. 修改用户的 core ulimit
# mkuser core=524288 gecos="Xander Cormany,317.555.1234" xander # finger xander
Login name: xander In real life: Xander Cormany
Site Info: 317.555.1234
Directory: /home/xander Shell: /usr/bin/ksh
No Plan.
# su - xander "-c ulimit -a"
time(seconds) unlimited
file(blocks) unlimited
data(kbytes) unlimited
stack(kbytes) 4194304
memory(kbytes) unlimited
coredump(blocks) 524288
nofiles(descriptors) unlimited
threads(per process) unlimited
processes(per user) unlimited
与/etc/passwd 中的其他字段一样,GECOS 的值不应该包含冒号(:)。
添加冒号就会影响对字段位置的解释,所有期望值会向右移。
例如,如果用户试图在/etc/passwd 的GECOS 字段中设置Xander:Cormany 值,Xander 实际上会
在正确的字段中,而Cormany 成为右边字段(即主目录)的值。
另外,GECOS 字段不能以 !# 结尾。
大多数管理员其实并不使用这样的命令行,但是了解 SMIT(man smit 或man smitty)等实用程序在幕后做的工作是很重要的。
如果您愿意使用 SMIT,过程很简单。
下面是使用 SMIT 创建具有相同属性的同一用户的示例。
在用户创建屏幕上直接输入 SMIT,然后使用快速路径 mkuser:
# smitty mkuser
图 1 显示 SMIT 实用程序。
图 1. smitty mkuser 过程
图片看不清楚?请点击这里查看原图(大图)。
填写用户名、GECOS 字段和 core ulimit 之后,按 Enter 创建用户。
当SMIT 返回命令成功完成的消息时,按 F10 或 Esc + 0 退出程序。
可以使用清单 7 中的代码检查用户。
清单 7. 检查 SMIT 是否成功地创建了用户
# finger xander
Login name: xander In real life: Xander Cormany
Site Info: 317.555.1234
Directory: /home/xander Shell: /usr/bin/ksh
No Plan.
# su - xander "-c ulimit -a"
time(seconds) unlimited
file(blocks) unlimited
data(kbytes) unlimited
stack(kbytes) 4194304
memory(kbytes) unlimited
coredump(blocks) 524288
nofiles(descriptors) unlimited
threads(per process) unlimited
processes(per user) unlimited
chuser
现在到了比较难的部分。
但是等等:Xander 的经理Ann 刚才来告诉您Xander 的core ulimit 应该是1,048,576(有人忘记乘以2 了)。
没问题:只需用 chuser 修改 ulimit。
chuser 命令的语法与 mkuser 非常相似,使用相同的属性。
清单8 提供chuser 命令的示例。
清单 8. chuser 命令
# chuser core=1048576 xander
# su - xander "-c ulimit -a"
time(seconds) unlimited
file(blocks) unlimited
data(kbytes) unlimited
stack(kbytes) 4194304
memory(kbytes) unlimited
coredump(blocks) 1048576
nofiles(descriptors) unlimited
threads(per process) unlimited
processes(per user) unlimited
可以使用快速路径在SMIT 中方便地访问这些命令。
smitty chuser 会把您直接带到用户修改屏幕。
chsh
有时候希望改变 shell。
AIX 中的默认 shell 是 Korn shell,即 ksh。
改变 shell 的方法是执行 chsh 并提供用户名,然后选择所需的 shell,见清单9。
清单 9. 改变用户的 shell
# finger xander
Login name: xander In real life: Xander Cormany Site Info: 317.555.1234
Directory: /home/xander Shell: /usr/bin/ksh
No Plan.
# chsh xander
Current available shells:
/bin/sh
/bin/bsh
/bin/csh
/bin/ksh
/bin/tsh
/bin/ksh93
/usr/bin/sh
/usr/bin/bsh
/usr/bin/csh
/usr/bin/ksh
/usr/bin/tsh
/usr/bin/ksh93
/usr/bin/rksh
/usr/bin/rksh93
/usr/sbin/uucp/uucico
/usr/sbin/sliplogin
/usr/sbin/snappd
xander's current login shell:
/usr/bin/ksh
Change (yes) or (no)? > yes
To?>/usr/bin/csh
# finger xander
Login name: xander In real life: Xander Cormany
Site Info: 317.555.1234
Directory: /home/xander Shell: /usr/bin/csh
No Plan.
chfn
在为 Xander 创建 AIX 用户时,管理员在 GECOS 信息中的姓名中出现了输入错误。
要纠正这个错误,应该使用 chfn 命令。
这个命令与 chsh 很相似,它显示当前值,询问用户是否希望修改它,然后把值改为输入的值。
清单 10 提供一个示例。
清单 10. chfn 命令示例
# finger xander
Login name: xander In real life: Zander Cormany
Site Info: 317.555.1234
Directory: /home/xander Shell: /usr/bin/ksh
No Plan.
# chfn xander
xander's current gecos:
"Zander Cormany,317.555.1234"
Change (yes) or (no)? > yes
To?>Xander Cormany,317.555.1234
# finger xander
Login name: xander In real life: Xander Cormany
Site Info: 317.555.1234
Directory: /home/xander Shell: /usr/bin/ksh
No Plan.
纠正GECOS 信息看起来可能意义不大,但是这对系统上的其他管理员和用户有帮助。
例如,如果您试图找到Xander 的账户,但是没有记住他的用户名,就可以在GECOS 信息中搜索他的姓名。
搜索他的姓(已经在GECOS 字段中正确地输入了),可以快速地显示他的用户名。
finger 命令在 /etc/passwd 中用户名和 GECOS 信息的第一个字段中的真实姓名中搜索字符串:
# finger cormany
Login name: atc In real life: Adam Cormany
Directory: /home/cormany Shell: /bin/ksh
No Plan.
Login name: xander In real life: Xander Cormany
Site Info: 317.555.1234
Directory: /home/xander Shell: /usr/bin/ksh
No Plan.
lsuser
从各个用户文件收集某一用户的所有信息看起来可能很繁琐。
好在AIX 提供了一个简便的命令,可以一下子收集所有数据。
lsuser 命令从各个管理文件收集指定用户的所有属性。
这对于许多任务非常有帮助,比如对比用户、生成要备份的所有用户的完整列表和解决某一账户的问题。
可以使用-f 开关查看一个用户的属性,它按特定的结构显示所有信息。
清单 11 提供输出的示例。
清单 11. lsuser -f 的输出
# lsuser -f xander
xander:
id=214
pgrp=staff
groups=staff
home=/home/xander
shell=/usr/bin/ksh
gecos=Xander Cormany,317.555.1234
login=true
su=true
rlogin=true
daemon=true
admin=false
sugroups=ALL admgroups=
tpath=nosak
ttys=ALL
expires=0
auth1=SYSTEM
auth2=NONE umask=22
registry=files SYSTEM=compat logintimes= loginretries=0 pwdwarntime=0 account_locked=false minage=0
maxage=0 maxexpired=-1 minalpha=0 minother=0
mindiff=0 maxrepeats=8 minlen=0 histexpire=0 histsize=0 pwdchecks= dictionlist=
default_roles=
fsize=-1
cpu=-1
data=-1
stack=-1
core=1048576
rss=-1
nofiles=-1
roles=
如果要对比用户,只需把开关由 -f 改为 -c 并通过逗号分隔的参数添加要对比的用户。
清单 12 提供输出示例。
清单 12. lsuser -c 的输出
# lsuser -c xander,atc
#name:id:pgrp:groups:home:shell:gecos:login:su:rlogin:dae mon:admin:
sugroups:tpath:ttys:expires:auth1:auth2:umask:registry:SYSTEM:l oginre tries:
pwdwarntime:account_locked:minage:maxage:maxexpired: minalpha:minother:
mindiff:maxrepeats:minlen:histexpire:histsize:fsize:cpu:data:stack :co re:rss:nofiles
xander:214:staff:staff:/home/xander:/usr/bin/ksh:Xander
Cormany,317.555.1234:
true:true:true:true:false:ALL:nosak:ALL:0:SYSTEM:NONE:22:fil es:compat :0:0:false:
0:0:-1:0:0:0:8:0:0:0:-1:-1:-1:-1:1048576:-1:-1
#name:id:pgrp:groups:home:shell:gecos:login:su:rlogin:dae mon:admin:su groups:
tpath:ttys:expires:auth1:auth2:umask:registry:SYSTEM:loginr etries:pwd warntime:
account_locked:minage:maxage:maxexpired:minalpha:minot her:mindiff:max repeats:
minlen:histexpire:histsize:fsize:cpu:data:stack:core:rss:nofiles :time
_last_login:
time_last_unsuccessful_login:tty_last_login:tty_last_unsucces sful_log in:host_last_login:
host_last_unsuccessful_login:unsuccessful_login_count
cormany:215:staff:staff,support:/home/cormany:/bin/ksh:Ad am Cormany:true:true:
true:true:false:ALL:nosak:ALL:0:SYSTEM:NONE:22:NIS:compa t:0:0:false:0 :0:
-1:0:0:0:8:0:0:0:-1:-1:-1:-1:-1:-1:-
1:1250854405:1250522447:/dev/pts/ 3:/dev/pts/13:
10.20.30.40:10.20.30.41:0
这输出大量信息,看起来很乱。
但是,如果把这些数据导入电子表格,就一目了然了。
在脚本中使用这些数据管理用户时,这种包含分隔符的格式也有帮助。
如果只想寻找几个字段(例如用户的 shell 和主目录),那么可以在 lsuser 命令中使用 -a 开关。
清单 13 提供这个命令的示例,使用来自 chuser 手册页的字段。
清单 13. 运行 lsuser -c –a
# lsuser -c -a shell home xander,cormany
#name:shell:home
xander:/usr/bin/ksh:/home/xander
#name:shell:home
cormany:/bin/ksh:/home/cormany
passwd
许多人认为passwd 命令只用于修改用户的密码。
尽管passwd 确实执行这种重要的功能,但是它还有其他特性。
passwd 最重要的特性确实是修改用户的密码。
如果符合
/etc/security/user 和/etc/security/passwd 配置文件中设置的规则,标准用户就可以修改自己的密码;如果作为根用户登录,还可以修改其他用户的密码,见清单 14。
清单 14. 使用 passwd 修改用户的密码
# lsuser -c -a password xander
#name:password
xander:*
# passwd xander
Changing password for "xander"
xander's New password:
Enter the new password again:
# lsuser -c -a password xander
#name:password
xander:!
passwd 命令还可以像 chfn 一样修改用户的 GECOS 信息,或者像 chsh 一样修改用户登录时执行的 shell/命令。
清单 15 提供一个示例。
清单 15. 使用 passwd 修改用户的信息
# passwd -f xander
xander's current gecos:
"Xander Cormany,317.555.1234"
Change (yes) or (no)? > yes
To?>Xander Cormany,317.555.7890
# passwd -s xander
Current available shells:
/bin/sh
/bin/bsh
/bin/csh
/bin/ksh
/bin/tsh
/bin/ksh93
/usr/bin/sh
/usr/bin/bsh
/usr/bin/csh
/usr/bin/ksh
/usr/bin/tsh
/usr/bin/ksh93
/usr/bin/rksh
/usr/bin/rksh93
/usr/sbin/uucp/uucico
/usr/sbin/sliplogin
/usr/sbin/snappd
xander's current login shell:
/usr/bin/ksh
Change (yes) or (no)? > yes
To?>/usr/bin/bsh
# finger xander
Login name: xander In real life: Xander。