相关文件:
/etc/passwd 用户账户信息。

/etc/shadow 安全用户账户密码信息。

/etc/shadow- /etc/shadow 的备份文件。注意,此文件由 shadow 工具集使用,而不是所有的用户和密码管理工具都会使用


常用场景
[root@vms001 ~]# id abc #使用id命令,可以查看系统中是否存在此用户,也可以用来查看存在用户的ID

[root@vms002 桌面]# system-config-users #图形界面下打开用户管理界面,打开的界面只能管理我们的普通用户,不能管理root用户。

[root@vms002 ~]# useradd bob -c 'bob ftp user' -s /sbin/nologin -d /bob -G users -G root -u 3000 #添加bob用户。-c 指定注释信息;-s 指定用户shell;-d 指定用户家目录,如果不指定的话默认是/home/bob;-g 指定用户加入组,用户必须要属于某一个组,如果不指定默认就会创建一个与用户同名的组;-G指定用户附属组;-u 指定用户ID

[root@vms002 ~]# echo redhat | passwd --stdin bob #给bob用户设置密码。--stdin从标准输入读取令牌(只有根用户才能进行此操作);当我们创建用户时候,如果没有指定密码,此时这个用户创建好之后是处于锁定状态的,无法登陆用户,所以这里要使用passwd来设置密码。

[root@vms002 ~]# getent passwd bob #此命令与“cat /etc/passwd | grep bob”命令的输出是一样的

[root@vms002 ~]# passwd -S bob # -S报告已命名帐号的密码状态(只有根用户才能进行此操作)

[root@vms002 ~]# usermod -c 'ftp ftp user bob' bob #修改用户属性。修改bob用户的注释信息

[root@vms002 ~]# usermod -s /sbin/bash bob #修改用户属性。修改bob用户的默认登录shell

[root@vms002 ~]# usermod -d /home/abc/bob bob #修改用户属性。修改bob用户的家目录;要确保被修改的家目录存在,且以前家目录的文件都要copy到新的家目录中,才能保证该变了家目录的用户正常使用,因为被拷贝的文件里包含了环境变量等信息

[root@vms002 home]# groups bob #查看bob用户属于哪些用户组

[root@vms002 bob]# gpasswd -a bob bin #使用此命令可以将bob用户添加到 bin组

[root@vms002 bob]# gpasswd -d bob root #将bob用户从root组里边删除

[root@vms002 bob]# usermod -g root bob #g, --gid GROUP 制使用 GROUP 为新主组

[root@vms002 bob]# usermod -L bob #锁定用户bob,不影响root用户su到bob用户

[root@vms002 bob]# usermod -U bob #解锁bob用户

[root@vms002 bob]# chage -E 2019-12-21 bob #bob用户到2019年12月21日的时候会自动锁定

[root@vms002 bob]# chage -E 99999 bob #连续设置5个9,密码则永不过期

[root@vms002 bob]# chage -d 2018-11-12 bob #此命令用来修改一个时间,修改什么时间呢?修改的就是上次密码修改的时间值

[root@vms002 bob]# chage -m 10 -M 40 -W 7 -I 3 -d 2018-09-21 bob

-m 最小天数,两次改变密码之间相距的最小天数设为“最小天数”
-M 最大天数,将两次改变密码之间相距的最大天数设为“最大天数”
-W 警告天数,将过期警告天数设为“警告天数”
-I 过期多少天天数后,设定密码为失效状态
-d 最近日期,将最近一次密码设置时间设为“最近日期”

[root@vms002 bob]# chage -d 0 bob#强制修改密码。设置bob用户下次登录必须修改密码

[root@vms002 tmp]# chgrp users rh124/ #改变rh124目录的所属组为users组

[root@vms002 bob]# groupadd testg #添加用户组

[root@vms002 bob]# groupdel testg #删除用户组

[root@vms002 bob]# userdel -r 用户名 #删除用户。用户主目录中的文件将随用户主目录和用户邮箱一起删除。在其它文件系统中的文件必须手动搜索并删除。邮箱在 login.defs 文件中的 MAIL_DIR 变量中定义。


/etc/passwd详解
格式如下:(使用 :分隔)
jerry:x:1000:1000:jerry:/home/jerry:/bin/bash
第一列:用户名
第二列:密码,以前这里是直接存储密码的,但是问了安全现在把密码存放到/etc/shadow文件里了
第三列:UID,用户ID,普通用户RHEL7的范围为1000-60000,RHEL6的是从500开始的;root用户的UID为0;为什么普通用户的UID是从1000-60000的一个范围呢?这是由/etc/login.defs 这个文件决定的,文件中有“UID_MIN ”和“UID_MAX”的设置,这个文件你如果修改的话,它将影响我们新建的用户。
第四列:GID,用户ID,每个用户都要属于一个组
第五列:注释
第七列:家目录
第八列:用户使用的shell。如果用户的shell是/sbin/nologin,这表示这个用户不能登录系统,这个匿名用户,一般用于登录某服务,比如说:用户可以登录邮箱,但是不能登录系统。如果你想修改用户默认登录的shell,不建议直接修改/etc/passwd这个文件。


/etc/shadow详解
格式如下:(使用 :分隔)
jerry:$6$YrQoJHcd/Ok4Qnur$1F3HbZoTn0re5xGROIYswItAuZEoLbjUwDCpwdxMc/OYveyJ4hbkUCotJ2jFgLRyDPN7roy6Phs3GsnNni6cj0:17756:0:99999:7:::
第一列:用户名
第二列:加密的密码信息
第三列:17756指的是从1970年1月1日到现在为止,总共经历了多少天
第四列:密码最小使用天数,0的话是不做限制。作用:比如我们设置的策略是密码使用30天要求更换密码,好了到了30天,密码你修改了,但是你把密码改成了和原来一样的,这样是没意义的,所以这里有了密码最小使用天数的设置
第五列:密码最大使用天数,码永不过期
第六列:密码更换前警告的天数。密码过期前提前几天给用户警告
第七列:账号被取消前的天数,密码过期之后,有几天的缓冲期?比如用户30天过期,已经过期了,这时候用户是没法登录系统的,你在缓冲期期间登录系统就会强制你修改密码,如果过了缓冲期你还没有修改,账号就会被锁定。如果值是0的话就是没有缓冲期;果值是-1,表示你的缓冲期为永久。