用户账户和组账户概述
用户账户
超级用户: root 用户是 Linux 操作系统中默认的超级用户账号,对本主机拥有最高权限。
程序用户: 在安装 Linux 操作系统及部分应用程序时,会添加一些特定的低权限用 户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运行。
普通用户: 账号需要由 root 用户或其他管理员用户创建,拥有的权限受 到一定限制,处理问题受到限制,一般只在用户自己的宿主目录中拥有完整权限。
组账户
如何理解组?组相当于 职位 运维工程师 都具有大概相同的权限
看到组最常见的组词是不是组织?组织:按照一定的宗旨和系统建立起来的集体。那linux和windows中的组就是将多个用户集合起来,统一分配某种相同的权限(开通或关闭)。
基本组
-
建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是私有组,这个组默认只容纳了一个用户。
-
在用户所属组中的第一个组称为基本组,基本组在 /etc/passwd 文件中指定
有且唯一
附加组
除了第一个组外的其他组为附加组或公共组,附加组在 /etc/group 文件中指定
UID 和 GID
UID
UID(User IDentity,用户标识号):Linux 操作系统中的每一个用户账号都有一个数字形式的身份标记,称为 UID(UserIDentity,用户标识号),对于操作系统核心来说,UID 是区分用户的基本依据,原则上每个用户的 UID 号应该是唯一的。
GID
GID(Group IDentify,组标识号):与 UID 类似,每一个组账号也有一个数字形式的身份标记,称为 GID(Group IDentity,组标识号)。
| 用户 | UID | GID |
|---|---|---|
| 超级用户 | 固定为0 | 固定为0 |
| 程序用户 | 默认1~499 | 默认1~499 |
| 普通用户 | 默认500~60000 | 默认500~60000 |
用户账户管理
文件位置
-
/etc/passwd
存放保存用户名称、宿主目录、登录 Shell 等基本信息
root:x:0:0:root:/root:/bin/bash
第一段 root : 用户名
第二段 x : 密码占位符
第三段 0: uid
第四段 0: 组id
第五段 root: 备注
第六段 /root: 家目录
第七段 /bin/bash: 默认的shell环境
/bin/bash: 默认的shell环境
-
/etc/shadow
存放保存密码
第一字段:用户名:root
第二字段:密码
第三字段:上次修改密码时间,最后一次修改密码的时间
第四字段:最小修改密码间隔时间
第五字段:密码有效期
第六字段:密码到期提醒(提示密码即将过期时间)
第七字段:密码过期后的宽限天数 (密码过期后多少天禁用此用户)
第八字段:账号失效时间
第九字段:保留字段收费内容
添加用户
useradd
基本格式
useradd [选项] 用户名
- 在/etc/passwd 文件和/etc/shadow 文件的末尾增加该用户账号的记录
- 若未明确指定用户的宿主目录,则在/home 目录下自动创建与该用户账号同名的宿 主目录,并在该目录中建立用户的各种初始配置文件。
- 若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账 号的记录信息将保存到/etc/group 和/etc/shadow 文件中。
选项
| 选项 | 作用 |
|---|---|
| -u | 指定用户的 UID 号,要求该 UID 号码未被其他用户使用 |
| -d | 指定用户的宿主目录位置(当与-M 一起使用时,不生效) |
| -e | 指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式 |
| -g | 指定用户的基本组名(或使用 GID 号) |
| -G | 指定用户的附加组名(或使用 GID 号) |
| -M | 不建立宿主目录,即使/etc/login.defs 系统配置中已设定要建立宿主目录 |
| -s | 指定用户的登录 Shell /sbin/nologin |
密码管理
passwd
格式
passwd [选项]... 用户名
[root@test1 /]# passwd km 修改km 用户密码输入两次密码
更改用户 km 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
| 选项 | 作用 |
|---|---|
| -d | 清空指定用户的密码,仅使用用户名即可登录系统 |
| -l | 锁定用户账户 |
| -S | 查看用户账户的状态(是否被锁定) |
| -u | 解锁用户账户 |
[root@test1 /]# passwd -l km
[root@test1 /]# tail -1 /etc/shadow
lisi:!!:18809:0:99999:7:::
[root@test1 /]# passwd -d km
清除用户的密码 km。
passwd: 操作成功
[root@test1 /]# passwd -S km
km NP 2021-07-01 0 99999 7 -1 (密码为空。)
[root@test1 /]# passwd -u km
解锁用户 km 的密码。
passwd: 警告:未锁定的密码将是空的。
passwd: 不安全的操作(使用 -f 参数强制进行该操作)
[root@test1 /]# passwd -fu km
解锁用户 km 的密码。
passwd: 操作成功
[root@test1 dnf]# echo "123123"|passwd --stdin km
#免于交互
更改用户 km 的密码 。
passwd:所有的身份验证令牌已经成功更新。
修改用户账户的属性
usermod
格式
usermod [选项]... 用户名
| 选项 | 作用 |
|---|---|
| -l | 更改用户账号的登录名称 |
| -L | 锁定用户账户 |
| -u | 修改用户的 UID 号 |
| -U | 解锁锁用户账户 |
| -d | 修改用户的宿主目录位置 |
| -e | 修改用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式 |
| -g | 修改用户的基本组名 |
| -G | 修改用户的附加组名 |
| -s | 指定用户的登录 Shell |
[root@test1 home]# echo "123123" | passwd --stdin km //无交互修改
更改用户 km 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@test1 home]# usermod -L km //锁定用户
[root@test1 home]# passwd -S km //查看状态
zhou LK 2021-07-02 0 99999 7 -1 (密码已被锁定。)
[root@test1 home]# usermod -U km //解锁
[root@test1 home]# passwd -S km //查看状态
zhou1 PS 2021-07-02 0 99999 7 -1 (密码已设置)
[root@test1 home]# usermod -l km1 km //修改用户名
[root@test1 home]# id km //验证查看
id: km: no such user
[root@test1 home]# id km1
uid=1002(zhou1) gid=10(wheel) 组=10(wheel),0(root)
[root@test1 ~]# cd /home/
[root@test1 home]# ls
lisi zhangsan km
[root@test1 home]# mv km/ /
[root@test1 home]# ls
lisi zhangsan
[root@test1 home]# usermod -d /zhou zhou
使用前要先手动更改目录,-d只是更新信息
删除用户
userdel
格式
userdel -r 用户名
[root@test1 etc]# userdel -r km1 //连宿主目录一起删除
[root@test1 etc]# id km1 //验证
id: km1: no such user
[root@test1 etc]# cd /home/
[root@test1 home]# ls
lisi zhangsan
组管理
组账号文件
/etc/group:保存组帐号基本信息
/etc/gshadow:保存组帐号的密码信息基本不使用
添加组
groupadd
格式
groupadd [-g GID] 组账号名
[root@test1 /]# groupadd km //添加组账号
[root@test1 /]# tail -1 /etc/group
km:x:1002:
[root@test1 /]# groupadd -g 45 km //-g指定组id
[root@test1 /]# tail -1 /etc/group
km:x:45:
组内管理
gpasswd
| 选项 | 作用 |
|---|---|
| -a | 向组内添加一个用户 |
| -d | 从组内删除一个用户成员 |
| -M | 定义组成员列表,以逗号分隔 |
[root@test1 /]# useradd km1 //组内加入新成员
[root@test1 /]# gpasswd -a km1 km
正在将用户“km1”加入到“km”组中 用户在前,组在后
[root@test1 /]# gpasswd -d km1 km
正在将用户“km1”从“km”组中删除
[root@test1 /]# gpasswd -M km1,km km
[root@test1 /]# grep "^km" /etc/group
km:x:45:km1,km
删除组账号
格式
groupdel 组帐号名
[root@test1 /]# groupdel km
[root@test1 /]#
查询
1.finger 查询用户账号的详细信息
finger [用户名]
2.w 查询已登录到主机的用户信息
w [选项] [用户名]
3.who 只能显示当前登陆的用户信息
[root@localhost ~]# who [选项] [file]
| 选项 | 含义 |
|---|---|
| -a | 列出所有信息,相当于所有选项。 |
| -b | 列出系统最近启动的时间日期。 |
| -l | 列出所有可登陆的终端信息。 |
| -m | 仅列出关于当前终端的信息,who -m 命令等同于 who am i。 |
| -q | 列出在本地系统上的用户和用户数的清单。 |
| -r | 显示当前系统的运行级别。 |
| -s | 仅显示名称、线路和时间字段信息,这是 who 命令的默认选项。 |
| -u | 显示当前每个用户的用户名、登陆终端、登陆时间、线路活动和进程标识。 |
| -T 或 -w | 显示 tty 终端的状态,“+”表示对任何人可写,“-”表示仅对 root 用户或所有者可写,“?”表示遇到线路故障。 |
4.users
[root@localhost ~]#users
root
文件/目录的权限和归属
程序访问文件时的权限,取决于此程序的发起者
- 进程的发起者,同文件的属主:则应用文件属主权限
- 进程的发起者,属于文件属组;则应用文件属组权限
- 应用文件“其它”权限
访问人群分为三类
- 所属主 (u)
- 所属组 (g)
- 其他人 (o)
权限分为三种
- 读(r,4)
- 写(w,2)
- 执行(x,1程序,脚本)
对文件的权限
- r 可使用文件查看类工具,比如:cat,可以获取其内容
- w 可修改其内容
- x 可以把此文件提请内核启动为一个进程,即可以执行(运行)此文件(此文件的内容必须是可执行)
对目录的权限
- r 可以使用ls查看此目录中文件列表
- w 可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关
- x 可以cd进入此目录,可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最小权限
chmod
1.模式法
chmod [所有者,所属组,其他] [+ - =] [权限] [文件或目录]
2.数字法
1 2 4
x w r
umask
保留在创建文件权限
使用方式:
1.新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变
2.新建目录的默认权限: 777-umask
3.非特权用户umask默认是 002
4.root的umask 默认是 022