用户管理

用户信息文件/etc/passwd

用户信息文件/etc/passwd:

 

文件中一行代表一个用户:

第一个字段代表用户名;

第二个字段是密码标识x,代表有密码,但密码本身不存在文件中;

第三个字段是UID,0代表超级用户(超级用户可以不只有一个,但是一般不建议设置多个),1-499是系统用户,500-65535是普通用户(CentOS7中系统用户是1-999,而普通用户是1000-60000);

第四个字段是GID(用户初始组ID),初始组在用户创建时就自动创建,初始组名一般和用户名相同(一个用户可以有一个初始组,同时可以有多个附加组,一旦用户加入一个附加组,他就拥有附加组的权限);

第五个字段是用户说明;

第六个字段是用户家目录;

第七个字段是登录后的Shell解释器,不同种类的用户不同。

影子文件/etc/shadow

影子文件/etc/shadow,这个文件的所有权限都是空,也就是该文件只能root用户来操作。

 

文件中一行代表一个用户:

第一个字段是用户名;

第二个字段是加密密码,若密码是!!或*代表没有密码,不能登录(如果想让密码不能登录可以修改这里的字符串,给字符串加上星号或者感叹号);

第三个字段是修改密码的时间,从1970年1月1日后开始的天数(linux中的时间戳);

第四个字段是两次密码的修改间隔时间,如果是10代表10天后才能再次修改密码;

第五个字段是密码有效期;

第六个字段是密码修改到期前的警告天数,如果有效期是50,警告天数是5,那么第45天后没修改密码就会出现警告信息;

第七个字段是0代表到期立即失效,-1代表永不失效,10代表过期后10天依然有效;

第八个字段是时间戳表示的账号失效时间天数,一旦到达这个时间无论密码是否过期都将无法使用;

第九个字段是保留位置。

查看shadow的加密机制:authconfig --test | grep hashing

时间戳和日期之间的转换:

 

组信息文件/etc/group和组密码文件/etc/gshadow

组信息文件/etc/group:

 

每个用户占一行,每个字段的意思是组名、组密码标志、GID、组中附加用户(初始用户不会加)。

组密码文件/etc/gshadow,内部保存了组名、组密码文件、组管理员用户名、组中附加用户。

用户邮箱文件:/var/spool/mail/用户名

用户模板目录:/etc/skel,当在这个目录下建立警告文件时,所有用户登录后都会在家目录出现对应文件。

添加用户useradd

useradd用来添加用户,后加用户名,只有root可以执行该命令。

useradd的其他选项:

 

设置UID为1500,且设置users为初始群组:useradd -u 1500 -g users 用户名

创建系统账户:useradd -r 用户名,创建系统用户是不会生成家目录的。

添加用户的默认设置记录在两个文件中:/etc/default/useradd和/etc/login.defs。

密码命令passwd

设置密码passwd 用户名只有超级用户才能接用户名,普通用户只能执行passwd来修改自己的密码。选项-l可以锁定用户,-u可以解锁用户。加-S可以查询密码的状态(只能超级用户才能使用):

 

使某个用户无法登陆,密码失效:passwd -l 用户名,恢复:passwd -u 用户名

显示密码参数:passwd -S,或更详细的:chage -l 用户名

接受字符串作为密码,shell编程时可以用到:echo "123" | passwd --stdin 用户名管道符的作用就是将第一个命令输出值作为第二个命令输入值。

chage命令

chage命令可以查看密码的详细信息:chage -l 用户名

还可以设置使用者首次登陆必须更改密码:chage -d 0 用户名

其他用户管理命令

修改已经存在用户的信息usermod命令:

 

修改密码状态chage(shadow文件中的几个时间):

 

要求普通用户登录就必须修改密码:chage -d 0 用户名这实际上就是通过修改shadow中的密码修改时间生效的。

删除用户:userdel -r 用户名-r的意思是删除用户时把家目录删掉。如果在所有配置文件删掉一个用户的所有信息,也可以删除一个用户。(这个命令会彻底删除用户数据,如果想暂时使账号失效的话只需要修改shadow文件即可)

查看用户id:id 用户会显示uid和gid、初始组和附加组。

用户组管理命令

新增一个组groupadd 组名加-g后加GID可以自定义组的ID。

修改组的GID和修改组名groupmod [选项] 组名-g加GID意思是修改组ID,-n加新组名意思是修改组名。

删除用户组:groupdel 组名。初始组是不能删除的,因为用户依存该组,附加组可以删除。

查看使用者的所有群组:groups,输出的信息中第一个就是有效群组,也就是此时新建文件群组就是该群组。用newgrp后加群组名可以将该群组切换到有效群组。newgrp这个命令是开启一个子shell来切换有效群组的,执行exit命令可以退出这个子shell。

将用户添加到某个组gpasswd -a 用户名 组名-d后加用户名代表从组中删除该用户,这个命令必须是群组管理员才能执行的,将某个用户设置为群组管理员:gpasswd -A 用户名 组名,给群组设置密码:gpasswd 组名

PAM模块简介

PAM(pluggable Authentication modules)嵌入式模块是一套API,提供一连串的验证机制,只要使用者将验证阶段的需求告知PAM,PAM就能够返回使用者验证的结果。常用的包括使用者验证程序等,这种程序就会调用PAM来进行验证,让各种验证方式具有一致的结果。