一、了解用户账户文件
1./etc/passwd文件
2./etc/shadow文件
3./etc/login.defs文件
了解组群文件
1./etc/group文件
2./etc/gshadow文件
三、新用户
四、设置用户账户密码1.passwd命令
2.chage命令
五、维护用户账户
1.修改用户账户
2.禁止和恢复用户账户账户
3.删除用户账户
六、管理组
维护组群用户
2.为组添加用户
一、理解用户账户文件
1./etc/passwd文件
准备:新用户bobby、user1、user2,将user1和 user2加入bobby群组
[root@localhost ~] useradd bobby [root@localhost ~] useradd user1 [root@localhost ~] useradd user2 [root@localhost ~] usermod -G bobby user1 [root@localhost ~] usermod -G bobby user2
在Linux在系统中,用户账户及其相关信息(密码除外)放置在/etc/passwd在配置文件中vim编辑器(或使用)cat /etc/passwd)打开passwd内容格式如下:
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin user1:x:1002:1002::/home/user1:/bin/bash
字段 | 说明 |
用户名 | 用户帐户名、用户登录时使用的用户名 |
加密口令 | 考虑到系统的安全性,用户密码不再适用于字段保存密码,而是使用字母x” |
UID | 用户号,唯一表示用户的数字标识 |
GID | 该数字对应用户所属的私有组号group中的GID |
用户描述信息 | 用户全名、用户电话等可选描述信息 |
主目录 | 用户的宿主目录,用户成功登录后的默认目录 |
命令解释器 | 用户使用的shell,默认为“/bin/bash” |
2./etc/shadow文件
由于所有用户对//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////etc/passwd文件有读取权。为了提高系统的安全性,用户加密密码存储在/etc/shadow文件中。/etc/shadow文件只对root可读用户大大提高了系统的安全性。shadow文件的内容形式如下(cat /etc/shadow):
root:$6$PQxz7W3s$Ra7AKw53/n7rntDgjPNWdCG66/5RZgjhoelzT2 F00ouf2iDM.AVvRIYoez10hGG7kBHEaah.oH5U1t60Qj2Rf.:17654: 0:99999:7::: bin:↓:16925:0:999:7:: daemon:↓:16925:0:999:7:: bobby:!!!:1766:0:999:7:: user1:!!:1766:0:999:7::
.shadow文件保存了投影加密后的密码和一系列与密码相关的信息,每个用户的信息都在shadow文件占用一行,用:分为9个域,每个域的含义如表3-3所示。
字段 | 说明 | |
1 | 用户登录名 | |
2 | 加密后的用户口令,“表示非登录。!!表示没设置密码” | |
3 | 从1970年1月1日起,到用户可以更改密码的天数 | |
4 | 从1970年1月1日起,到用户可以更改密码的天数。即最短口令存活期限 | |
5 | 从1970年1月1日起,到用户必修更改的密码的天数。即最长口令存活期 | |
6 | 口令过期前几天提醒用户更改口令 | |
7 | 口令过期后几天账号被禁用 | |
8 | 口令被禁用的具体日期(相对日期,从1970年1月1日至禁用时的天数) | |
9 | 保留城,用于功能扩展 |
3./etc/login.defs文件
建立用户账户时会根据/etc/login.defs文件的配置设置用户账户的某些选项。该配置文件的有效设置内容及中文注释如下所示。
MAIL_DIR /var/spool/mail//用户邮箱目录
MAIL_FILE .mail
PASS_MAX_DAYS 99999 //账号密码最长有效天数
PASS_MIN_DAYS 0 //账号密码最短有效天数
PASS_MIN_LEN 5 //账号密码的最小长度
PASS_WARN_AGE 7 //账号密码过期前提前警告天数
UID_MIN 1000 //用useradd命令创建账户时自动产生的最小UID值
UID_MAX 60000 //用useradd命令创建账户时自动产生的最大UID值
GID_MIN 1000 //用groupaddd命令创建组群时自动产生的最小GID值
GID_MAX 60000 //用groupadd命令创建组群时自动产生的最大GID值
USERDEL CMD /usr/sbin/userdel_local //如果定义的话,将删除用户时执行,以删除相应用户的计划作业和打印作业等
CREATE_HOME yes //创建用户账户时是否为用户创建主目录
二、理解组群文件
组群账户的信息存放在/etc/group文件中,而关于组群管理的信息(组群口令、组群管理员等)则存放在/etc/gshadow文件中。
1./etc/group文件
group文件位于“/etc”目录,用于存放用户的组账户信息,对于该文件的内容任何用户都可以读取。每个组群账户在group文件中占用一行,并且用“:”分隔为4个域。每一行各域的内容如下(使用cat /etc/group):
组群名称:组群口令(一般为空,用x占位):GID:组群成员列表
group文件的内容形式如下:
root:x:0:
bin:x:1:
daemon:x:2:
bobby:x:1001:user1,user2
user1:x:1002:
可以看出,root的GID为0,没有其他组成员。group文件的组群成员列表中如果有多个用户账户属于同一个组群,则各成员之间以“,”分隔。在/etc/group文件中,用户的主组群并不把该用户作为成员列出,只有用户的附属组群才会把该用户作为成员列出。例如,用户bobby的主组群是bobby,但/etc/group文件中组群bobby的成员列表中并没有用户bobby,只有用户user1和user2。
2./etc/gshadow文件
/etc/gshadow文件用于存放组群的加密口令、组管理员等信息,该文件只有root用户可以读取。每个组群账户在gshadow文件中占用一行,并以“:”分隔为4个域。每一行中各域的内容如下:
组群名称:加密后的组群口令(没有就用!):组群的管理员:组群成员列表
gshadow文件的内容形式如下:
root:::
bin:::
daemon:::
bobby:!::user1,user2
user1:!::
三、新建用户
在系统新建用户可以使用useradd或者adduser命令。useradd命令的格式是:
useradd [选项] <username>
选项 | 说明 |
-c(comment) | 用户的注释性信息 |
-d(home_dir) | 指定用户的主目录 |
-e(expire_date) | 禁用账号的日期,格式为YYYY-MM-DD |
-f(inacfive_days) | 设置账户过期多少天后用户账户被禁用。如果为0,账户过期后将立即被禁用;如果为-1,账户过期后,将不被禁用 |
-g(inifial_group) | 用户所属主组群的组群名称或者GID |
-G(group-list) | 用户所属的附属组群列表,多个组群之间用逗号分隔开 |
-m | 若用户主目录不存在则创建它 |
-M | 不要创建用户主目录 |
-n | 不要为用户创建用户私人组群 |
-p(passwd) | 加密口令 |
-r | 创建UID小于500的不带主目录的系统账户 |
-s(shell) | 指定用户登录shell,默认为/bin/bash |
-u(UID) | 指定用户的UID,它必须是唯一的,且大于499 |
【例】新建用户user3,UID为1010,指定其所属的私有组为group1(group1组的标识符为1010),用户的主目录为/home/user3,用户的shell为/bin/bash,用户的密码为123456,账户永不过期。
[root@localhost ~]# groupadd -g 1010 group1
[root@localhost ~]# useradd -u 1010 -g 1000 -d /home/user3 -s /bin/bash -p 123456 -f -1 user3
[root@localhost ~]# tail -1 /etc/passwd
user3:x:1010:1000::/home/user3:/bin/bash
如果新建用户已经存在,那么在执行useradd命令时,系统会提示该用户已经存在:
[root@localhost ~]# useradd user3
useradd: user user1 exists
四、设置用户账户口令 1.passwd命令
指定和修改用户账户口令的命令是passwd。超级用户可以为自己和其他用户设置口令,而普通用户只能为自己设置口令。passwd命令的格式为:
passwd [选项] [username]
选项 | 说明 |
-l | 锁定(停用)用户账户 |
-u | 口令解锁 |
-d | 将用户口令设置为空,这与未设置口令的账户不同。未设置口令的账户无法登录系统,而口令为空的账户可以 |
-f | 强迫用户下次登录时必须修改口令 |
-n | 指定口令的最短存活期 |
-x | 指定口令的最长存活期 |
-w | 口令要到期前提前警告的天数 |
-i | 口令过期后多少天停用账户 |
-S | 显示账户口令的简短状态信息 |
【例】假设当前用户为root,则下面的两个命令分别为root用户修改自己的口令和root用户修改user1用户的口令。
//root用户修改自己的口令,直接用passwd命令回车即可
[root@localhost ~]# passwd
//root用户修改user1用户的口令
[root@localhost ~]# passwd user1
需要注意的是,普通用户修改口令时,passwd命令会首先询问原来的口令,只有验证通过才可以修改。而root用户为用户指定口令时,不需要知道原来的口令。为了系统安全,用户应选择包含字母、数字和特殊符号组合的复杂口令,且口令长度应至少为8个字符。
如果密码复杂度不够,系统会提示“无效的密码: 密码未通过字典检查 - 它基于字典单词”。这时有两种处理方法,一是再次输入刚才输入的简单密码,系统也会接受;另一种方法是更改为符合要求的密码。例如,P@ssw02d包含大小写字母、数字、特殊符号等8位或以上的字符组合。
2.chage命令
要修改用户账户口令,也可以用chage命令实现。
选项 | 说明 |
-l | 列出账户口令属性的各个数值 |
-m | 指定口令最短存活期 |
-M | 指定口令最长存活期 |
-W |
口令要到期前提前警告的天数 |
-l | 口令过期后多少天停用账户 |
-E | 用户账户到期作废的日期 |
-d | 设置口令上一次修改的日期 |
【例】设置user1用户的最短口令存活期为6天,最长口令存活期为60天,口令到期前5天提醒用户修改口令。设置完成后查看各属性值。
[root@localhost ~]# chage -m 6 -M 60 -W 5 user1
[root@localhost ~]# chage -l user1
最近一次密码修改时间 :5月 04, 2018
密码过期时间 :7月 03, 2018
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :6
两次改变密码之间相距的最大天数 :60
在密码过期之前警告的天数 :5
五、维护用户账户
1.修改用户账户
usermod命令用于修改用户的属性,格式为
usermod [选项] 用户名
Linux系统中的一切都是文件,因此在系统中创建用户也就是修改配置文件的过程。用户的信息保存在/etc/passwd文件中,可以直接用文本编辑器来修改其中的用户参数项目,也可以用usermod命令修改已经创建的用户信息,诸如用户的UID、基本/扩展用户组、默认终端等。
参数 | 作用 |
-c | 填写用户账户的备注信息 |
-d -m | 参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去 |
-e | 账户的到期时间,格式为YYYY-MM-DD |
-g | 变更所属用户组 |
-G | 变更扩展用户组 |
-L | 锁定用户禁止其登录系统 |
-U | 解锁用户,允许其登录系统 |
-s | 变更默认终端 |
-u | 修改用户的UID |
账户用户user1的默认信息:
[root@localhost ~]# id user1
uid=1002(user1) gid=1002(user1) 组=1002(user1),1001(bobby)
将用户user1加入root用户组中,这样扩展组列表中会出现root用户组的字样,而基本组不会受到影响:
[root@localhost ~]# usermod -G root user1
[root@localhost ~]# id user1
uid=1002(user1) gid=1002(user1) 组=1002(user1),0(root)
用-g参数修改用户的基本组ID,用-G参数修改用户扩展组ID
[root@localhost ~]# usermod -u 8888 user1
[root@localhost ~]# id user1
uid=8888(user1) gid=1002(user1) 组=1002(user1),0(root)
修改用户user1的主目录为/var/user1,把启动shell修改为/bin/tcsh,完成后恢复到初始状态,操作如下:
[root@localhost ~]# usermod -d /var/user1 -s /bin/tcsh user1
[root@localhost ~]# tail -3 /etc/passwd
user1:x:8888:1002::/var/user1:/bin/tcsh
user2:x:1003:1003::/home/user2:/bin/bash
user3:x:1010:1000::/home/user3:/bin/bash
[root@localhost ~]# usermod -d /var/user1 -s /bin/bash user1
2.禁用和恢复用户账户
有时需要临时禁用一个账户而不删除它。禁用用户账户可以用passwd或usermod命令实现,也可以直接修改/etc/passwd或/etc/shadow文件。
例如,暂时禁用和恢复user1账户,可以使用以下3种方法实现。
(1)使用passwd命令
//使用passwd命令禁用user1账户,利用tail命令查看,可以看到被锁定的账户密码栏前面会加上
[root@localhost ~]# passwd -l user1
锁定用户 user1 的密码
passwd: 操作成功
[root@localhost ~]# tail -1 /etc/shadow
user1:123456:17656:0:99999:7:::
//利用passwd命令的-u选项解除账户锁定,重新启用user1账户
[root@localhost ~]# passwd -u user1
(2)使用usermod命令
//禁用user1账户
[root@localhost ~]# usermod -L user1
//解除user1账户的锁定
[root@localhost ~]# usermod -U user1
(3)直接修改用户账户配置文件
可将/etc/passwd文件或/etc/shadow文件中关于user1账户的passwd域的第一个字符前面加上一个“*”,达到禁用账户的目的,在需要恢复的时候只要删除字符“*”即可。
3.删除用户账户
要删除一个账户,可以直接删除/etc/passwd和/etc/shadow文件中要删除的用户所对应的行,或者用userdel命令删除。userdel命令的格式为
userdel [-r] 用户名
如果不加-r选项,userdel命令会在系统中所有与账户有关的文件中(例如/etc/passwd,/etc/shadow,/etc/group)将用户的信息全部删除。
如果加-r选项,则在删除用户账户的同时,还将用户主目录以及其下的所有文件和目录全部删除掉。另外,如果用户使用E-mail的话,同时也将/var/spool/mail目录下的用户文件删掉。
六、管理组群
组群管理包括新建组群、维护组群账户和为组群添加用户等内容。
1、维护组群用户
创建组群和删除组群的命令与创建、维护账户的命令相似。创建组群可以使用命令groupadd或者addgroup。
例如,创建一个新的组群,组群的名称为testgroup,可用以下命令:
[root@localhost ~]# groupadd testgroup
要删除一个组可以用groupdel命令,例如删除刚创建的testgroup组时可用以下命令:
[root@localhost ~]# groupdel testgroup
修改组群的命令是groupmod,其命令格式为
groupmod [选项] 组名
选项 | 说明 |
-g gid | 把组群的GID改成gid |
-n group-name | 把组群的名称改为group-name |
-o | 强制接受更改的组的GID为重复的号码 |
2、为组群添加用户
在Red Hat Linux中使用不带任何参数的useradd命令创建用户时,会同时创建一个和用户账户同名的组群,称为主组群。当一个组群中必须包含多个用户时,则需要使用附属组群。在附属组中增加、删除用户都用gpasswd命令。(只有root用户和组管理员才能够使用这个命令)gpasswd命令的格式为
gpasswd [选项] [用户] [组]
选项 | 说明 |
-a | 把用户加入组 |
-d | 把用户从组中删除 |
-r | 取消组的密码 |
-A | 给组指派管理员 |
例如,要把user1用户加入testgroup组,并指派user1为管理员,可以执行下列命令:
[root@localhost ~]# groupadd testgroup
[root@localhost ~]# gpasswd -a user1 testgroup
[root@localhost ~]# gpasswd -A user1 testgroup