一,用户配置文件
1.1 用户信息文件
路径: /etc/passwd
首先获得该配置文件的帮助信息:
[root@localhost ~]# man 5 passwd
进入配置文件:
[root@localhost ~]# vim /etc/passwd
- 第一字段:
用户名称
- 第二字段:
密码标志,但密码存在 /etc/shadow 中,这是因为passwd和shadow的权限不同,只有root用户才能查看shadow文件。
- 第三字段:
UID(用户ID)
- 0: 超级用户
- 1-999: 系统用户
- 1000-65535 普通用户
- 第四字段:
GID(用户初始组ID)
- 初始组:每个用户只有一个初始组,一般就是和这个用户名相同的组名作为这个用户的初始组。(能改但不推荐)
- 附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。
- 第五字段:
用户说明(备注)
- 第六字段:
家目录
普通用户:/home/用户名/
超级用户:/root/
- 第七字段:
登陆之后的Shell
Shell是Linux的命令解释器。
在 /etc/passwd 当中,除了标准Shell是 /bin/bash 之外,还可以写如 /sbin/nologin 。
1.2 影子文件
路径:/etc/shadow
进入配置文件:
[root@localhost /]# vim /etc/shadow
- 第一字段:
用户名
- 第二字段:
加密密码
SHA512散列加密算法。
如果密码位是 “!!” 或 “*” 代表没有密码,不能登陆。
- 第三字段:
密码最后修改日期。
1970年1月1日到修改密码日期的总天数。
- 第四字段:
两次密码的修改间隔时间。
- 第五字段:
密码有效期(以第三字段为起点)。
- 第六字段:
密码修改到期前的警告天数(以第五字段为起点)。
- 第七字段:
密码过期后的宽限天数。
0代表密码过期后立即失效。
-1表示密码永远不会失效。
- 第八字段:
账号失效时间。
用时间戳表示。
- 第9字段:
保留
1.3 组信息文件和组密码文件
组信息文件/etc/group
- 第一字段:
组名
- 第二字段:
组密码标志
- 第三字段:
GID
- 第四字段:
组中附加用户
组密码文件/etc/gshadow
二,用户管理相关文件
2.1 用户的家目录
普通用户:/home/用户名/,所有者和所属组都是此用户,权限是700。
超级用户: /root/,所有者和所属组都是root用户,权限是550。
2.2 用户的邮箱
路径:/var/spool/mail/
2.3 用户模板目录
路径:/etc/skel/
新建一个用户,会将**/etc/skel/**中的文件拷贝在该用户的的目录下,可以理解为新建用户时默认产生的文件,例如帮助文档,操作指南等。
三,用户管理命令
3.1 用户添加命令
useradd [选项] 用户名
选项:
-u UID: #人为指定用户UID号
-d 家目录: #手工指定用户的家目录
-c 用户说明: #手工指定用户的说明
-g 组名: #手工指定用户的初始组
-G 组名: #指定用户的附加组
-s Shell: #手工指定用户的登陆shell。默认是/bin/bash
例如建立一个名叫ceshi的用户
useradd -u 250 -G root,bin -c "test" -d /zhou -s /bin/bash ceshi
用户默认值文件
- 路径 /etc/default/useradd
GROUP=100 #用户默认组
HOME=/home #用户家目录
INACTIVE=-1 #密码过期宽限天数(shadow的第7个字段)
EXPIRE= #密码失效时间(shadow的第8个字段)
SHELL=/bin/bash #默认shell
SKEL=/etc/skel #模板目录
CREATE_MAIL_SPOOL=yes #是否建立邮箱
但这个文件中只定义了shadow文件的第七和第八个字段,其余字段的定义在下面这个文件中。
- 路径 /etc/login.defs
PASS_MAX_DAYS #密码有效期(shadow的第5个字段)
PASS_MIN_DAYS #密码修改间隔(shadow的第4个字段)
PASS_MIN_LEN #密码的最小位数(现在是PAM生效)
PASS_WARN_AGE #密码到期警告(shadow的第6个字段)
UID_MIN #最小和最大UID范围
UID_MAX
ENCRYPT_METHOD SHA512 #密码加密算法是SHA512
3.2 修改用户密码
passwd [选项] 用户名
选项:
-S #查询用户密码的密码状态,仅root可用
-l #暂时锁定用户(仅root可用)
-u #解锁用户(仅root可用)
--stdin #可以通过管道符输出的数据作为用户的密码
这里重点说一下最后一个选项的使用:
echo"456"|passwd --stdin 用户名
这句命令的意思是默认将456这个字符串作为该用户的密码,这种方法在创建多个用户时比较有效。
3.3 修改用户信息
usermod [选项] 用户名
选项:
-u UID #修改用户的UID号
-c "用户说明" #修改用户的说明信息
-G 组名 #修改用户的附加组
-L #临时锁定用户(Lock)
-U #解锁用户锁定(Unlock)
3.4修改用户密码状态
其实用vim直接修改shadow文件更好。
chage [选项] 用户名
选项:
-l #列出用户的详细密码状态
-d 日期: #修改密码最后一次更改日期(shadow第3字段),天数设为0就可以使用户登陆就要修改密码
-m 天数: #两次密码修改间隔(第4字段)
-M 天数: #密码有效期(第5字段)
-W 天数: #密码过期前警告天数(第6字段)
-I 天数: #密码过后宽限天数(第7字段)
-E 日期: #账号失效时间(第8字段)
3.5 删除用户
userdel -r 用户名
选项:
-r #连同用户的家目录一起删除
手工删除用户文件:(太麻烦,不建议用)
文件
3.6 用户ID
id 用户名
3.7 切换用户身份
su [选项] 用户名
选项:
-: #连带用户的环境变量一起切换(坚决不能省略)
-c "命令": #仅执行一次命令,而不切换用户身份
su - markling
- 号坚决不能省略
四,用户组管理命令
4.1 添加用户组
groupadd [选项] 组名
选项:
-g GID: #指定组ID
4.2 修改用户组
groupmod [选项] 组名
选项:
-g GID: #修改组ID
-n 新组名: #修改组名
例如将user1改为user2(但不建议修改组名)
groupmod -n user1 user2
4.3 删除用户组
groupdel 组名
- 如果该组没有初始用户才可进行删除,要想删除,要优先删除初始用户。
- 如果组里有附加用户,删除组将不影响。
4.4 将用户添加到组或从组删除
gpasswd [选项] 组名
选项:
-a 用户名: #把用户加入组
-d 用户名: #把用户从组中删除