1)文件位置
/etc/passwd
2)检索出所有用户
awk -F: awk -F: '{print $1}' /etc/passwd
3)/etc/passwd各个字段解释
username:password:User ID:Group ID;comment:home directory:shell
以root的哪一行为例
root:x:0:0:root:/root:/bin/bash
username:root
password:x
User ID:0
Group ID:0
comment:root
home directory:/root
shell:/bin/bash         ---shell的位置
4)passwd命令详解
名称:passwd
    
    使用权限:所有使用者
    使用方式:passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]
    说明:用来更改使用者的密码
 参数:
    -k    keep non-expired authentication tokens
    -l 关闭账号密码。效果相当于usermod -L,只有root才有权使用此项。
    -u 恢复账号密码。效果相当于usermod -U,同样只有root才有权使用。
    -g 修改组密码。gpasswd的等效命令。
    -f 更改由finger命令访问的用户信息。
    -d 关闭使用者的密码认证功能, 使用者在登入时将可以不用输入密码, 只有具备 root 权限的使用者方可使用.
    -S 显示指定使用者的密码认证种类, 只有具备 root 权限的使用者方可使用.
    [username] 指定帐号名称.

最常用最简单的用法: passwd tom,修改tom用户密码。

扩展阅读:passwd命令简介

passwd 命令设置和更改用户密码。使用此命令更改自己或者另一个用户的密码。使用 passwd 命令也能更改与登录名关联的全名(gecos)和用来作为操作系统界面的 shell。根据用户的定义,用户的密码可以存在于本地或远程。本地密码存在于 /etc/security/passwd 数据库中。远程密码存储在由远程域提供的数据库中。

要更改自己的密码,请输入 passwd 命令。passwd 命令提示非 root 用户输入旧密码(如果存在),然后提示输入两次新密码。(密码不显示在屏幕上。)如果两次新密码的输入不一致,passwd 命令提示重新输入新密码。



注:
passwd命令只使用密码的头八个字符作为本地和 NIS 密码。在密码中只支持 7 位字符。由于这个原因,本地语言支持(NLS)代码点不允许出现在密码中。

要更改另一个用户的密码,请输入 passwd 命令和用户的登录名(User 参数)。只有 root 用户或者安全组成员才允许更改另一个用户的密码。passwd 命令提示输入用户的旧密码以及用户的新密码。对于本地密码,passwd 命令并不提示 root 用户输入用户旧密码或者 root 用户密码。对于远程密码,在缺省情况下,将会提示 root 用户输入旧的密码,这样远程域就能够决定是使用该密码还是忽略它。要更改此行为,请参阅 /usr/lib/security/methods.cfg 文件中的 rootrequiresopw 选项。passwd 命令并不对 root 用户强加任何密码限制。

/etc/passwd 文件记录全名和使用的 shell 的路径名。要更改记录名,请输入 passwd -f 命令。要更改登录 shell,请输入 passwd -s 命令。

根据密码限制,在 /etc/security/user 配置文件中构造本地定义的密码。此文件包含下列限制:

minalpha     指定字母字符的最小数目。
minother     指定其他字符的最小数目。
minlen         指定字符的最小数目。    

注:
此值由 minalpha 值加上 minother 值或 minlen 值中的大者。
mindiff        指定出现在新密码中但没出现在旧密码中的字符的最小数。    

注:

此限制并不考虑位置。如果新密码是 abcd 并且旧密码是 edcb,不同字符数就是 1。
maxrepeats     指定在密码中单个字符使用的最大次数。
minage             指定密码能够更改的最小寿命。密码必须保持一个最小周期。此值用周来评测。
maxage             指定密码的最大寿命。密码必须在指定的周数后更改。
maxexpired     指定用户可以更改密码的超出最大寿命 maxage 的最大周数。
histexpire     指定用户不能重用密码的周数。
histsize         指定用户不能重用的前几个密码的数目。
dictionlist    指定更改密码时要检查的字典文件列表。
pwdchecks        指定更改密码时要调用的外部密码限制方法的列表。

如果 root 用户添加了 NOCHECK 属性到在 /etc/security/passwd 文件中的标志条目中,密码就不必满足这些限制。另外,root 用户也可指定新密码给其他用户而不遵循密码的限制。

如果 root 用户在标志条目中添加了 ADMIN 属性或者如果在 /etc/passwd 文件中的 password 字段包含 *(星号),则只有 root 用户才能更改密码。如果在 /etc/passwd 中的 password 字段包含有 !(感叹号)和在 /etc/security/passwd 文件中的 password 字段包含有 *(星号),则 root 用户拥有更改您的密码的超级特权。

如果 root 用更改您的密码,则 ADMCHG 属性就会自动地添加到在 /etc/security/passwd 文件中的标志条目上。这种情况下,您必须在下次登录时更改密码。

如果 /etc/security/user 文件中用户的 registry 值是 DCE 或者 NIS,则密码更改只能在指定的数据库中进行。


标志

-f        更改由 finger 命令访问的用户信息。可以使用此标志提供在 /etc/passwd 文件中的全名。
-s        更改登录 shell。
-R load_module     指定可装入 I&A 模块,来更改用户的密码。

安全性
passwd 命令是支持 PAM 的带有服务名称 passwd 的应用程序。在 /etc/security/login.cfg 的 usw 节中,通过修改 auth_type 属性值来将要使用 PAM 进行认证的系统范围配置设置为作为 root 用户的 PAM_AUTH。

启用 PAM 时使用的认证机制取决于 /etc/pam.conf 中的 passwd 服务的配置。passwd 命令需要密码模块类型的 /etc/pam.conf 条目。以下列出了 /etc/pam.conf 中 passwd 服务的建议配置。
#
# AIX passwd configuration
#
passwd password required /usr/lib/security/pam_aix

示例
要更改密码,请输入: passwd
passwd 命令提示输入旧密码,如果它存在并且您不是 root 用户。输入旧密码后,命令提示输入两次新密码。

1 要更改 /etc/passwd 文件中的全名,请输入:    
passwd    -f
passwd命令显示为您的用户标识存储的名称。例如,对于登录名 sam,passwd 命令能够显示以下消息: sam's current gecos:

                                 "Sam Smith"
Change (yes) or no)? >
如果输入 Y(是),passwd 命令提示输入新名。 passwd 命令记录输入的名称到 /etc/passwd 文件中。

2 要在下次登录时使用不同的 shell,请输入:    
passwd -s
passwd命令列出可用的和当前使用的 shell 的路径名。此命令也显示提示: Change (yes) or (no)? >
如果输入 Y(是),passwd 命令提示输入要使用的 shell。下次登录时系统提供在此指定的 shell。
5)查看系统账号状态
root@root # more /etc/release
                                    Oracle Solaris 10 9/10 s10s_u9wos_14a SPARC
                 Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
                                             Assembled 11 August 2010
root@root # passwd -sa        
root                        PS                
daemon                NL                
bin                         NL                
sys                         NL                
adm                         NL                
lp                                NL                
uucp                        NL                
nuucp                 NL                
smmsp                 NL                
listen                LK                
gdm                         LK                
webservd        LK                
postgres        NL                
svctag                LK                
nobody                LK                
noaccess        LK                
nobody4         LK                
support         PS                
oracle                PS                
root@root #
man passwd可以知道,PS、LK、NL、NP之间的含义如下
status                            The password status of name.

                                                 The status field can take the    following
                                                 values:

                                                 PS                     This account    has    a    pass-
                                                                            word.

                                                 NL                     This account is a no    login
                                                                            account. See Security.

                                                 LK                     This    account     is     locked
                                                                            account. See Security.

                                                 NP                     This account has    no    pass-
                                                                            word    and is therefore open
                                                                            without authentication.
6)修改、查看用户状态
root@oracle # useradd test                ------增加测试用户test
root@oracle # more /etc/passwd |grep test                ------查看是否建立好测试账号
test:x:102:1::/home/test:/bin/sh    
root@oracle # passwd -l test                            ----锁定测试账号;
passwd: password information changed for test
root@oracle # passwd -sa|grep test                     -----查看是否锁定,可以看到LK,及锁定了账号
test                        LK                
root@oracle # passwd -u test                                     -----解锁test账户
passwd: password information changed for test
root@oracle # passwd -sa|grep test                 ------可以看到账户解锁,显示为没有密码NP状态
test                        NP                
root@oracle # passwd test                                             ------给test账号添加密码
New Password:
Re-enter new Password:
passwd: password successfully changed for test
root@oracle # passwd -sa|grep test                        -----查看test账户当前状态为PS即此用户有passwd
test                        PS                
root@oracle #
root@oracle # passwd -l test                                 ------再次锁定账户test
passwd: password information changed for test
root@oracle # passwd -sa|grep test                            ------查看是否锁定成功,LK代表成功
test            LK        
root@oracle # passwd -u test                                        -----再次给test账户解锁
passwd: password information changed for test
root@oracle # passwd -sa |grep test                         -----查看解锁是否成功,看到PS即有passwdk
test            PS        
root@oracle # userdel test                                         -----删除测试账号
root@oracle # passwd -sa|grep test                         ------查看是否删除成功
root@oracle #