该章节所有命令都在上一讲介绍过
一.认识与用户账号有关的系统文件
1.Linux系统中的每个用户都在/etc/passwd
文件中有一个对应的记录行,它记录了这个用户的一些基本属性,这个文件对所有用户都是可读的
含义
用户名:口令 : 用户标识号 : 组标识号 : 注释性描述 : 主目录 : 登录Shell
用户名:通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头
口令:虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”
用户标识名:一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等,通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
组标识号:它对应着/etc/group文件中的一条记录
注释性描述:例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux 系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出
主目录:它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
登录shell:Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等,系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh,用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器),利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中
2、/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
登录名:/etc/passwd文件中的登录名相一致的用户账号
加密口令:存放的是加密后的用户密码,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令,加密显示为集合{ ./0-9A-Za-z }
最后一次修改时间:表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样
最小时间间隔:指的是两次修改口令之间所需的最小天数。
最大时间间隔:指的是口令保持有效的最大天数。
警告时间:字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
不活动时间:表示的是用户没有登录活动但账号仍能保持有效的最大天数。
失效时间:字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了
3、用户组的所有信息都存放在/etc/group文件中
将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段
每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组
当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组
用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员
用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段
组名:口令:组标识号:组内用户列表
组名:是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
口令:字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。
组标识号:与用户标识号类似,也是一个整数,被系统内部用来标识组。
组内用户列表:是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
二.用户管理命令
useradd:建立用户账号
语法:useradd [参数] [user]
但采用该命令创建一个新用户时,系统自动在passwd和shadow文件的末行添加一行该用户的信息,且在根目录下以用户名称自动生成一个目录文件
参数:
-c<备注> 加上备注文字。备注文字会保存在passwd的备注栏位中。
-d<登入目录> 指定用户登入时的起始目录。
-D 变更预设值.
-e<有效期限> 指定帐号的有效期限。
-f<缓冲天数> 指定在密码过期后多少天即关闭该帐号。
-g<群组> 指定用户所属的群组。
-G<群组> 指定用户所属的附加群组。
-m 制定用户的登入目录。
-M 不要自动建立用户的登入目录。
-n 取消建立以用户名称为名的群组.
-r 建立系统帐号。
-s<shell> 指定用户登入后所使用的shell。
-u<uid> 指定用户ID。
passwd:更改用户密码
语法:passwd [参数] [user]
参数:
-d 删除密码(无密码)
-f 强迫用户下次登录时必须修改口令
-w 口令要到期提前警告的天数
-k 更新只能发送在过期之后
-l 停止账号使用
-S 显示密码信息
-u 启用已被停止的账户
-x 指定口令最长存活期
-g 修改群组密码
-i 口令过期后多少天停用账户
usermod:修改用户帐号的各项设定
语法:usermod -LU [修改设定] [用户账户]
参数:
-c<备注> 修改用户帐号的备注文字。
-d登入目录> 修改用户登入时的目录。
-e<有效期限> 修改帐号的有效期限。
-f<缓冲天数> 修改在密码过期后多少天即关闭该帐号。
-g<群组> 修改用户所属的群组。
-G<群组> 修改用户所属的附加群组。
-l<帐号名称> 修改用户帐号名称。
-L 锁定用户密码,使密码无效。
-s<shell> 修改用户登入后所使用的shell。
-u<uid> 修改用户ID。
-U 解除密码锁定。
userdel:删除用户
语法:userdel [user]
chage:设置用户口令的失效期限
语法:chage [参数] [内容] [user]
参数:
-d: --lastday 最近日期 将最近一次密码设置时间设为"最近日期"
-E: --expiredate 过期日期 将帐户过期时间设为"过期日期"
-h: --help 显示此帮助信息并退出
-I: inactive 失效密码 将因过期而失效的密码设为"失效密码"
-l: --list 显示帐户年龄信息
-m: --mindays 最小天数 将两次改变密码之间相距的最小天数设为"最小天数"
-M: --maxdays 最大天数 将两次改变密码之间相距的最大天数设为"最大天数"
-W: --warndays 警告天数 将过期警告天数设为"警告天数"
su 切换用户
su [user]
三.批量添加用户
添加和删除用户对每位Linux系统管理员都是轻而易举的事,比较棘手的是如果要添加几十个、上百个甚至上千个用户时,我们不太可能还使用useradd一个一个地添加,必然要找一种简便的创建大量用户的方法。Linux系统提供了创建大量用户的工具,可以让您立即创建大量用户,方法如下:
(1)先编辑一个文本用户文件
每一列按照/etc/passwd
密码文件的格式书写,要注意每个用户的用户名、UID、宿主目录都不可以相同,其中密码栏可以留做空白或输入x号
(2)以root身份执行命令 /usr/sbin/newusers
,从刚创建的用户文件user.txt
中导入数据,创建用户
然后可以执行命令 vipw
或 vi /etc/passwd
检查 /etc/passwd
文件是否已经出现这些用户的数据,并且用户的宿主目录是否已经创建
(3)执行命令/usr/sbin/pwunconv
将 /etc/shadow
产生的 shadow
密码解码,然后回写到 /etc/passwd
中,并将/etc/shadow
的shadow
密码栏删掉。这是为了方便下一步的密码转换工作,即先取消 shadow password
功能
(4)编辑每个用户的密码对照文件
以 user001:123456 格式进行密码设置
(5)以 root 身份执行命令 /usr/sbin/chpasswd
创建用户密码,chpasswd
会将经过 /usr/bin/passwd
命令编码过的密码写入 /etc/passwd
的密码栏
(6)确定密码经编码写入/etc/passwd的密码栏后
执行命令 /usr/sbin/pwconv
将密码编码为 shadow password
,并将结果写入 /etc/shadow
评论区