用户管理
用户信息文件/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来进行验证,让各种验证方式具有一致的结果。