基础知识
Linux是一种多用户的操作系统,允许用户同时登录到系统上,并响应每个用户的请求。
Linux用户的分类:管理员账号 、普通账号。
Linux根据UID来确定是否是管理员,只要UID为0就是管理员。
Linux新建用户时,系统会自动创建一个与该用户同名的用户组作为该用户的主组。一个用户有且只有一个主组,可以有零个或者多个附加组。
Linux新建用户时,会自动分配递增的UID和GID(用户编号和用户组编号),也可以手动指定。
用户和组的关系
- 一对一:一个用户可以存在一个组中,是组中的唯一成员;
- 一对多:一个用户可以存在多个用户组中,用户具有多个组的共同权限;
- 多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限;
- 多对多:多个用户可以存在多个组中,也就是以上 3 种关系的扩展。
用户和组的配置文件
用户及其属性:/etc/passwd
用户组及其属性:/etc/group
用户密码及其属性: /etc/shadow
组密码及其属性: /etc/gshadow
/etc/passwd
文件解读
# 示例如下:
root:x:0:0:root:/root:/bin/bash
-
root
用户名 -
x
密码 -
0
UID (0:超级用户 1-499:代表系统用户) -
0
组id -
root
用户注释/描述内容 -
/root
用户的主目录 -
/bin/bash
用户默认使用的shell
/etc/shadow
文件解读
# 示例如下:
root:$6$yiyPm0o9$0:18956:0:99999:7:::
bin:*:17834:0:99999:7:::
testuser:!!:18970:0:99999:7:::
-
root
用户名 -
$6$yiyPm0o9$0
加密的密码, 所有伪用户的密码都是 "!!" 或 "*",代表没有密码是不能登录。新创建的用户如果不设定密码,那么它的密码项也是 "!!",代表这个用户没有密码,不能登录。 -
18956
最近一次更改的时间(日期是从1971 年1月1日累计的天数) -
0
最小修改时间间隔(0表示随时可以修改, 10表示10天之内不能修改) -
99999
密码的有效期(日期是从1971 年1月1日累计的天数) -
7
密码失效之前多少天要提示用户需要更改密码 -
未指定
密码过期后的宽限天数, 密码过期多久账户被锁定 -
未指定
账户失效时间,账号在此字段规定的时间之外,不论你的密码是否失效,都将无法使用!(日期是从1971 年1月1日累计的天数) -
未指定
保留字
/etc/group
文件解读
# 示例如下:
root:x:0:
bin:x:1:testuser02,testuser03
-
root
组名称 -
x
组密码标志 -
0
组Id -
未指定
组中的附加用户 多个使用逗号分割
/etc/gshadow
文件解读
# 示例如下:
root:::
bin:::testuser02,testuser03
- root 组名称
- 组密码
-
未指定
组管理员列表 -
未指定
组中的附加用户 多个使用逗号分割 (和 /etc/group 文件中附加组显示内容相同)
用户操作命令
添加用户 useradd
# 添加用户的命令格式 useradd [options] LOGIN
# 添加一个用户 不加任何选项 可以看到/etc/passwd中多了一条数据 myuser:x:1001:1001::/home/myuser:/bin/bash
useradd myuser
# 添加一个用户 指定用户主目录
useradd -d /home/myuser01 -m myuser01
options常用选项:
-
-u, --uid
指定用户的UID -
-d, --home-dir
指定用户的主目录,默认是 /home/<用户名>; -
-g, --gid
指定用户的主用户组 -
-G, --groups
指定用户的附加组 -
-s, --shell
指定用户的使用的shell,默认是 /bin/bash; -
-c, --comment
指定用户的描述内容 -
-e, --expiredate
指定用户的失效时间, 格式为 "YYYY-MM-DD" -
-m, --create-home
指定新建用户时强制新建用户的主目录,该选项是默认的; -
-r, --system
创建系统用户,也就是UID 在 1~499 之间,系统用户的创建默认不会创建主目录。
修改用户 usermod
# 修改用户的命令格式:usermod [options] LOGIN
# 修改用户名
usermod -l newUser myuser
# 锁定用户
usermod -L newUser
# 解锁用户
usermod -L newUser
options常用选项(大部分参数与useradd相同)
-
-l, --login NEW_LOGIN
指定新的用户名 -
-L, --lock
锁定用户 -
-U, --unlock
解锁用户
删除用户 userdel
# 删除用户的命令格式:userdel [options] LOGIN
# 删除一个用户
userdel myuser
# 删除一个用户 并且删除该用户的主目录
userdel -r myuser
options常用选项:
-
-r, --remove
在删除用户的同时删除用户的主目录 -
-f, --force
强制执行一些否则会失败的操作 例如删除仍然登录的用户或文件,即使不属于用户
用户密码管理 passwd
# 用户密码管理的命令格式 passwd [options] LOGIN
# 修改当前用户密码
passwd
# 修改指定用户密码
passwd myuser
# 删除用户密码
passwd -d myuser
options常用选项:
-
-d, --delete
删除用户密码(只有root有权限) -
-l, --lock
锁定用户密码,禁用用户(只有root有权限) -
-u, --unlock
解锁用户密码(只有root有权限) -
-e, --expire
指定密码失效时间 (只有root有权限) -
-f, --force
强迫用户下次登录时修改口令
查看用户的UID和GID id
id
# uid=0(root) gid=0(root) groups=0(root)
id newUser
# uid=1001(newUser) gid=1001(myuser) groups=1001(myuser)
用户切换 su
# 用户切换的命令格式 su [options] [-] [USER [arg]...]
# 切换用户
su - newUser
su - root
su 和 su - 的区别:
注意,使用 su 命令时,有 - 和没有 - 是完全不同的,- 选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的。即有 - 选项,切换用户身份更彻底;使用 - 选项可省略用户名,默认会切换为 root 用户。
用户组操作命令
添加组 groupadd
# 添加组的命令格式 groupadd [options] GROUP
# 新增一个用户组
groupadd mygroup
# 新增一个用户组指定组ID
groupadd -g 101 mygroup
options常用选项:
-
-g, --gid GID
指定组 ID -
-r, --system
创建系统用户组 -
-o, --non-unique
表示新用户组的GID可以与系统已有用户组的GID相同, 一般与-g选项同时使用
修改组 groupmod
# 修改组的命令格式 groupmod [options] GROUP
# 修改组的名称
groupmod -n newGroup mygroup
options常用选项:
-
-n, --new-name NEW_GROUP
指定新的组名
删除组 groupdel
# 删除组的命令格式 groupdel [options] GROUP
# 删除用户组
groupdel newGroup
切换主组 newgrp
# 用户切换用户组的命令格式 newgrp [-] [group]
# 示例1-5
# 1.新建几个用户组
groupadd group01
groupadd group02
groupadd group03
# 2.新建一个用户附加组绑定这些用户组
useradd -G group01,group02,group03 user01
# 3.设置用户user01的密码
passwd user01
# 4.切换到用户user01
su - user01
# 5.通过 newgrp 切换用户组
newgrp group01
newgrp group02
newgrp group03
组管理 gpasswd
# 组管理的命令格式: gpasswd [option] GROUP
# 指定一个用户为组的管理员
gpasswd -A user01 group01
# 添加一个用户到组
useradd user02
gpasswd -a user02 group01
# 删除组内的一个用户
gpasswd -d user02 group01
# 不加option 指定/修改组的密码
gpasswd group01
# 删除组的密码
gpasswd -r group01
options常用选项:
-
-A, --administrators ADMIN,...
指定管理员 -
-a, --add USER
添加用户到组 -
-d, --delete USER
从组删除用户 -
-r, --delete-password
删除组的密码