文章目录
1 Linux组的基本介绍
-
用户与组:Linux中每一位用户必须属于一个组,不能独立于组外,创建用户时系统会默认给用户分配一个组,默认组的名称与用户名一样
-
文件/目录的权限范围:Linux中每一个文件/目录有以下3个权限范围概念
权限范围 解释 所有者/拥有者(User) 文件/目录的拥有者,默认是创建文件/目录的用户,但也可以修改成其他用户 所在组(Group) 与用户类似,文件/目录也必须属于一个组,该组就是文件/目录的所在组,默认所在组就是文件所有者的组 其他组/其他人(Other) 除了文件/目录所在组之外的组(除了文件/目录所有者和所在组的用户之外的用户) PS:文件/目录的其他组(其他人)不一定对该文件/目录没有权限,如root用户也可以是某个文件的其他组,但root用户肯定能访问到该文件
-
注意事项:一般都是系统管理员root下才能修改对文件/目录的权限范围和权限
2 文件/目录所有者相关指令
2.1 查看所有者
-
概述:查看文件/目录的所有者可以通过查看文件详细信息来查看,详细信息中就包括了文件/目录的所有者
-
基本语法:
ls -ahl 目录
🔺关于命令
- [选项]
-h
表示人性化显示每一个子目录或文件大小,添加后会显示每一个文件/目录大小的单位 - 也可以使用
ll
来查看目录信息,ll
是ls -l
的别名/缩写,但==ll
在Linux系统中不是正式的指令==,使用man ll
指令后会显示无记录
- [选项]
-
测试:查看/home/key所有子目录和文件的所有者
2.2 修改所有者
-
基本语法:
chown 新所有者(用户名) 文件/目录
(chown --> change own修改拥有者) -
拓展:chown指令还可以在修改所有者同时修改文件/目录的所在组 -->
chown 新所有者:新组 文件/目录
-
测试:
① 通过系统管理员在/root目录下创建一个keyFile.txt文件(此时keyFile.txt文件所有者默认就是root)
② 然后把文件所有者修改成key用户
3 文件/目录所在组相关指令
3.1 查看文件/目录所在组
-
概述:与查看文件/目录所有者一样,可以通过查看目录下所有子目录和文件的详细信息来查看文件所在组
-
基本语法:
ll 目录
或ls -ahl 目录
-
测试:查看/home/key/animal目录下的所有文件和字目录所在组
3.2 修改文件/目录所在组
-
基本语法:
chgrp 新组名 文件或目录
(chgrp --> change group修改组) -
注意事项:新的组必须已存在才能修改为文件/目录的新所在组,所以修改文件/目录所在组前最好先查看需要设置的组是否存在,修改用户所在组也一样
🔺查看当前已有的组
- 在【用户管理】中已经介绍过,系统中所有组的信息存放在/etc/group文件中,所有通过cat指令查看即可 -->
cat /etc/group
(注意group是文件不是目录,所以后面不能加/
) - 如果只想查看某一个组是否存在,则无需打印/etc/group文件的所有内容,可以使用grep指令过滤查看即可 -->
cat /etc/group | grep 要查看的组名
或grep 要查看的组名 /etc/group
- 在【用户管理】中已经介绍过,系统中所有组的信息存放在/etc/group文件中,所有通过cat指令查看即可 -->
-
测试
① 使用系统管理员root修改tom用户所在组为emp(tom原来组为tom)
② 在切换到tom用户,在/home/tom目录下创建一个apple.txt文件,查看此时apple.txt所在组
③ 在root用户下再创建一个fruit组,然后将/home/tom/apple.txt文件所在组修改为fruit,再查看此时apple.txt所在组
4 用户与组相关指令
4.1 指定用户所在组
- 概述:用户被创建时,默认进的组是与用户名同名的组,也可以在创建用户同时为用户指定一个组
- 基本语法:
useradd -g 组名 用户名
4.2 修改用户所在组
-
基本语法:
usermod -g 新组名 用户名
-
拓展:usermod指令也可以修改用户登录后的初始目录 -->
usermod -d 指定初始目录 用户名
PS:修改用户登录后的初始目录时,用户必须要有进入该初始目录的权限才能修改
5 权限管理
5.1 ll指令显示内容解释
-
概述:通过
ll
指令可以查看某个目录下所有子目录和文件的详细信息,显示的详细信息中不仅包括文件所有者、所在组等,还包括了文件/目录的所有者、所在组以及其他组对文件/目录的具体权限 -
具体解释
① 例子:查看/home/key/animal目录的详细信息
[key@vm-learn-net ~]$ ll /home/key/animal/ 总用量 8 drwxrwxr-x. 2 key key 4096 12月 1 16:07 dog drwxrwxr-x. 5 key key 4096 12月 1 17:21 pet
② 分解显示的信息(以/home/key/animal/dog为例),并解释每一部分的含义
编号 拆分后的显示信息 解释 P1 d 表示文件/目录的类型,下面再具体解释👇 P2 rwxrwxr-x. 表示所有者、所在组以及其他组对文件/目录的权限,下面再具体解释👇 P3 2 目录里文件的总数量(包括子目录里的文件),如果是文件就显示1 P4 key 文件/目录的所有者 P5 key 文件/目录所在组 P6 4096 文件/目录的大小,这里是以字节B为单位,其他单位有k、M、G等 P7 12月 1 16:07 文件/目录最近修改时间 P8 dog 文件/目录名 ③ 分解示意图
5.2 P1 & P2的具体解释
5.2.1 P1——文件/目录类型
-
概述:按照上面对ll指令显示信息的分解结果,P1表示的是文件/目录的类型,类型有5种
-
文件/目录的5种类型
代号 表示类型 - 普通文件 d 目录 l 链接文件(软链接、硬链接) c 字符设备文件(鼠标、键盘等硬件设备) b 块文件(硬盘) -
查看5种类型的文件
① 普通文件、目录
② 链接文件
③ 字符设备文件、块文件(在/dev目录下可以找到)
5.2.2 P2——rwx权限
-
概述:按照上面对ll指令显示信息的分解结果,P2表示的是所有者、所在组和其他组对文件/目录的权限,而rwx分别是三种权限的代号
-
具体解释
① 例子:还是以上面的/home/key/animal中的dog目录为例
drwxrwxr-x. 2 key key 4096 12月 1 16:07 dog
② 将P2部分继续分解成三个部分,每3个字符为一个部分
分解后的三个部分 表示谁的权限 rwx(前三个字符) 所有者 rwx(中间三个字符) 所在组 r-x(后面三个字符) 其他组 ❓关于分解后的各个部分
- 这里所在组和其他组对文件/目录的权限,其实是指组里面的用户对文件/目录的权限
- 其实P2中最后还有一个
.
(我忽略了),这个.
表示其所属的文件或目录开启了SELinux安全上下文标签,如果没有,则表示未开启(在Mac终端会显示成@
)
③ 分解示意图
-
rwx权限具体含义
-
作用于文件
权限字符代号 权限数字代号 权限英文全称 解释 r 4 read 读取/查看文件(打印/输出文件内容),如cat指令、more指令等 w 2 write 修改文件,但不一定可以删除文件,删除文件的前提条件是对文件所在目录有写权限(w) x 1 execute 执行文件 - 0 无权限 -
作用于目录
权限字符代号 权限数字代号 权限英文全称 解释 r 4 read 查看目录的子目录和文件信息,如ls指令、ll指令等 w 2 write 修改目录,包括删除目录、修改其子目录和文件、重命名等 x 1 execute 进入该目录,如cd指令 - 0 无权限
-
5.3 修改/设置权限-chmod指令
PS:这里只简单介绍了修改/设置对文件权限,对目录的权限设置需要添加[选项]
-r
或-R
(递归),了解更多 --> https://blog.csdn.net/qq_35246620/article/details/78624256
5.3.1 使用字符代号设置权限
-
基本语法:
chmod [选项] [权限范围i]+/=/-[权限1][权限2][...],... 文件/目录
PS:这里的权限范围是指所有者、所在组和其他组
-
各个字符含义说明
字符 解释 u 【user】表示所有者 g 【group】表示所在组 o 【other】表示其他组 a 【all】表示所有者、所在组和其他组 = 表示将某个权限赋予给某个用户 + 与 =
一样,都是将某个权限赋予给某个用户- 除去用户对文件/目录的某个权限 r、w、x 上面介绍的三个权限 -
注意事项
- 修改/设置权限时可以对同一个权限范围设置多个权限,多个权限之间不同分隔开,没有设置的权限也不用
-
表示 - 对不同权限范围设置权限时,需要使用
,
分隔开 - 如果需要对目录下所有文件设置权限,可以直接使用通配符
*
表示所有文件 - 一般只有root系统管理员才能修改权限
- 修改/设置权限时可以对同一个权限范围设置多个权限,多个权限之间不同分隔开,没有设置的权限也不用
-
示例
① 赋予/home/key/test.txt文件的所有者读写的权限,赋予所在组执行的权限,赋予其他组只读的权限 -->
chmod u=rw,g=x,o=r /home/key/test.txt
② 赋予apple.txt文件所在组全部权限 -->chmod g+rwx apple.txt
③ 为全部用户赋予对hello.java文件的写权限 -->chmod a=w hello.java
④ 除去hello.java其他组用户对其的写权限 -->chmod o-w hello.java
5.3.2 使用数字代号设置权限
-
概述:修改/设置权限时也可以使用权限的数字代号组合来设置,三种权限对应的数字代号分别为4、2、1,无权限对应的数字代号为0,数字相加得到的和就相当于权限的组合
🔺三种权限对应的数字代号的巧妙:把三种权限的全部组合都能表示出来,1-7各个数字分别表示x、w、wx、r、rx、rw、rwx(大于7的数字无意义)
-
基本语法:
chmod [选项] [数字和1][数字和2][数字和3] 文件/目录
-
注意事项
- 如果需要对目录下所有文件设置权限,可以直接使用通配符
*
表示所有文件 - 每一个数字和按顺序分别对应u、g、o三个权限范围
- 数字0(数字和为0)表示清空(取消)某一个权限范围对文件/目录的全部权限
- ❓使用数字代号设置权限时,三个权限范围必须有对应的权限设置,即必须有三个数字和的组合,不能只有两个或一个
- 如果需要对目录下所有文件设置权限,可以直接使用通配符
-
示例
① 赋予test.txt文件的所有者读写的权限,赋予所在组执行的权限,赋予其他组只读的权限 -->
chmod 614 test.txt
② 除去hello.java其他组用户对其的写权限,同时对所有者和所在组赋予全部权限 -->chmod 770 hello.java