一、用户配置文件
-
用户配置文件(/etc/passwd)
-
越是对安全性要求高的服务器,越需要加你合理的用户权限等级制度。
-
在Linux中主要是通过用户配置文件(/etc/passwd)来查看和修改用户信息。
root:x:0:0:root:/root:/bin/bash
字段 含义 字段1 用户名称 字段2 密码标识 字段3 UID(用户ID)
字段4 GID(用户初始组ID)
字段5 用户说明 字段6 家目录 字段7 登录之后的shell -
初始组:就是指用户一登陆就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的用户组。
-
附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。
-
Shell:就是Linux的命令解释器。在
/etc/passwd
当中,除了标准Shell是/bin/bash之外,还可以写如/sbin/nologin
。
-
-
影子文件
root:$6$qbhVU8JqjrFXXlBs$YXUpNJOilLmLse45ULimO6IRSsbyJcBqf.FV7rZz.0i2smj6zb4ajIz4UVTtxmSnqhyX2/Ga0JPtP17JB7po/0:18100:0:99999:7:::
字段 含义 字段1 用户名称 字段2 加密字段(如果密码位是"!!“或”*"代表没有密码。不能登陆) 字段3 密码最后一次修改日期(使用1970年1月1日作为标准时间吗,每过一天时间戳加1) 字段4 两次密码的修改时间间隔(和第三字段相比) 字段5 密码有效期(和第三字段相比) 字段6 密码修改到期前的警告天数(和第5字段相比) 字段7 密码到期后的宽限天数(和第5字段相比)【0:代表密码过期后立即失效】【-1:则代表密码永远不会失效】 字段8 账号失效时间(要用时间戳表示) 字段9 保留 -
组信息文件(/etc/group)
root:x:0:
字段 含义 字段1 组名 字段2 组密码标志 字段3 GID 字段4 组中附加用户 -
组密码文件
root:::
字段 含义 字段1 组名 字段2 组密码 字段3 组管理员用户名 字段4 组中附加用户
二、用户管理的相关文件
-
用户的家目录
- 普通用户:/home/用户名,所有者和所属组都是此用户,权限是 700;如果把普通用户变为超级用户,权限为root,但是家目录不变
- 超级用户:/root/,所有者和所属组都是root用户,权限是550
-
用户的邮箱
/var/spool/mail/用户名
-
用户模板目录
/etc/skel
三、用户管理命令
-
用户添加命令(
useradd
)$ useradd [选项] 用户名 选项: -u UID 手工指定用户的UID号 -d 家目录 手工指定用户的家目录 -c 用户说明 手工指定用户的说明 -g 组名 手工指定用户的初始组 -G 组名 手工指定用户的附加组(用逗号分割) -s shell 手工指定用户的登陆sheell。默认是/bin/bash 范例: $ groupadd lamp1 $ useradd -u 550 -g lamp1 -G root -d /home/lamp1 \ -c "test user" -s /bin/bash lamp1
-
修改用户密码(
passwd
)$ passwd [选项] 密码 选项: -S 查询用户密码的密码状态。仅root用户可用。 -l 暂时锁定用户。仅root用户可用。 -u 解锁用户。仅root用户可用户。 --stdin 可以通过管道符输出的数据作为用户的密码 范例: //查看密码状态 $ passwd -S root root PS 2019-07-23 0 99999 7 -1 (密码已设置,使用 SHA512 加密。) 用户名 密码设定时间 密码修改间隔时间 密码有效期 警告时间 密码不失效(-1) //锁定用户和解锁用户,即修改了shadow文件 $ passwd -l sktfly $ passwd -u skyfly //使用字符串作为用户的密码: $ echo "123" | passwd --stdin lamp
-
修改用户信息
# usermod [选项] 用户名 选项: -u UID: 修改用户的UID号 -c 用户说明 修改用户的说明信息 -G 组名 修改用户的附加组 -L 临时锁定用户(LOCK) -U 解锁用户锁定
-
修改用户密码状态
#chage [选项] 用户名 选项: -l: 列出用户的详细密码状态 -d 日期: 修改密码最后一次更改日期(3字段) -m 天数: 两次密码修改时间(4字段) -M 天数: 密码有效期(5字段) -W 天数: 密码过期前警告天数(6字段) -I 天数: 密码过期后宽限天数(7字段) -E 日期: 账号失效时间(8字段) # chage -d 0 skyfly 这个命令其实是把密码修改日期归0了(shadow第三字段),这样用户一登陆就要修改密码
-
删除用户
# userdel [-r] 用户名 选项: 删除用户的同时删除用户的家目录 手工删除用户: $ vi /etc/passwd $ vi /etc/shadow $ vi /etc/group $ vi /etc/gshadow $ rm -rf /var/spool/mail/skyfly $ rm -rf /home/sktfl
-
用户切换命令(
su
)# su [选项] 用户名 选项: -:选项只使用"-"代表连带用户的环境变量一起切换 $ su - root -c 命令: 仅执行一次命令,而不切换用户身份 $ su -root -c "useradd user3"
四、用户组管理命令
-
添加用户组
$ groupadd [选项] 组名 选项: -g GID:指定组ID
-
修改用户组
$ groupmod [选项] 组名 选项: -g GID: 修改组ID -n 新组名:修改组名 例:$groupmod -n testgroup group1
-
删除用户组
//如果这个组是某一个用户的初始组,则不能删除;如果是附加组,则可以删除 # groupdel 组名
-
把用户添加入组或从组中删除
# gpasswd 选项 组名 选项: -a 用户名:把用户加入组(作为附加用户) -d 用户名:把用户从组中删除
查看有效和支持的用户组:groups
想要知道用户自己当前的有效用户组和支持的用户组,使用groups即可。
在这个输出的信息中,第一个输出的用户组就是当前的有效用户组了。
切换有效用户组:newgrp
使用newgrp命令可以切换有效用户组,注意只能切换当前账号支持的用户组。
假设当前用户支持“test”和“foo”这两个用户组。那么newgrp test和newgrp foo是有效的。其他的都是无效的。
这个命令是以另外一个shell来提供这个功能的,换句话说,用户使用了另一个shell来登录,而且新的shell给予该用户的有效GID是新切换的用户组。