文章目录
一、Linux下的用户
这里我们在上一篇:基本指令篇,开头稍微讲解了一些,接下来我们具体的讲一讲:
Linux下有两种用户:超级用户(root)、普通用户。
- 超级用户:可以再linux系统下做任何事情,不受限制
- 普通用户:在linux下做有限的事情。
- 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
命令: su [用户名] (su - [用户名])(后面的目录可以切换到用户的家目录下,路径发生改变,前者路径不发生改变)
功能: 切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。
命令: sudo
功能: 不切换用户,就仅仅让普通用户,在一行内提权,以root的身份,执行对应的指令
sudo command,短暂提权 --> root执行命令
建议: 不推荐将root密码和普通用户密码设为一致的
二、文件的权限
权限 = 人 + 事物的属性
权限描述的就是人和事物属性的关系。接下来的文件访问者的就是人,文件属性就是事物属性。
1. 文件访问者的分类
文件访问者分为三类:
- 拥有者(owner):即创建文件的用户
- 所属组(group):拥有者所在的组,如果文件访问者只分拥有者和其他人的话,不便于多用户协作
- 其他人(others):除了拥有者和所属组之外的都是其他人。
上图用框框出的第一列是文件的拥有者,第二列是所属组。由于用户较少所以自成一组
拥有者、所属组和其他,都是针对文件划分出的角色,而 root 和普通用户指的是具体的用户人
后面一列是文件的大小,再后面一列是文件的创建时间或最近修改时间。
2. 文件类型和访问权限
在上一篇中我们也稍微提到过,文件 = 内容 + 属性
而文件的属性数据我们知道的可就太多了,这里我们就讲解重要的两点,先看下图:
从上图可以清晰的看出,前面的一整块共有10列,共分成4组,第一列自成一组,之后每三列成一组,分别用不同的颜色框了起来。
而从我们学习指令到现在,我们可以发现,我们只要创建一个文件或目录,当我们查看文件的详细属性信息时,前面都有这么一大块,而这一大块代表什么呢?
1.文件类型:
通过
ll
显示的众多属性列中的第一列,在Linux中是用以区分文件类型的。一般有两种:
-
代表普通文件,
d
代表目录。
注意: Linux中不以文件后缀作为区分文件的方式,只以属性的第一列进行区分。
虽然Linux的文件类型与文件后缀无关,但并不意味着我们不可以使用后缀区分文件类型,而且我们Linux中的一些工具对文件后缀可能就有要求,比如在Linux中创建一个 .c 文件,我们可以在里面写代码,然后通过gcc工具编译运行,可以生成可执行程序,但如果是一个 .txt文件,就算我们在里面写了代码,我们gcc也编译不了它,更不可能生成可执行程序。
常见文件类型有以下几种:
前面标红的两个是我们必须要掌握的。
2.文件的权限属性:
上面讲了那么多,仅仅说的是属性的第一列,那还剩下的9列呢?
剩下九列,三三为一组,分别代表的是文件拥有者、所属组和其他人对文件的权限。
文件的权限分三种:
r
:读权限,read对于文件而言,具有读取文件内容的权限;对于目录而言,具有浏览该目录信息的权限w
:写权限,write对于文件而言,具有修改文件内容的权限;对于目录而言,具有创建或删除目录下文件的权限x
:执行权限,execute对于文件而言,具有执行文件的权限;对于目录而言,具有进入目录的权限- "
—
”表示不具有该项权限
注意:拥有的权限对应位置是固定的,从左到右分别是,r,w,x。若对应位置没有该项权限,则用
-
表示。
3. 文件权限值的表示方法
- 字符表示法 字符表示法就如上图所示。
Linux表示说明Linux表示说明
只读r--
```
-wx
可写可执行
-w-
只写
r-x
可读可执行
--x
仅可执行
rwx
可读可写可执行
rw-
可读可写
无任何权限
1. **8进制数字表示法**
权限符号八进制二进制
r--
4100
-w-
2010
--x
1001
rw-
6110
r-x
5101
-wx
3011
rwx
7111
0000
**总结:**
我们上方所讲的文件的权限用下图总结表示出,这样更加清晰:
![在这里插入图片描述](https://img-blog.csdnimg.cn/8c4b10d9d5ce4567a700e8481fee67a3.png)
## 三、文件访问权限的相关设置方法
修改文件的权限分为两种,一是修改文件的读写执行属性,二是修改文件的拥有者和所属组。先看第一种:
### 1. chmod
chmod
可以针对三种访问者修改文件的读写执行权限
**说明:只有文件的拥有者和root用户才可以改变文件的权限**
chmod命令修改文件权限值的格式
① 用户表示符 +/-/= 权限字符
> ```
> +
> ```
> :增加权限
>
> ```
> -
> ```
> :取消权限
>
> ```
> =
> ```
> :赋予权限 - - 相当于赋值,会覆盖其他权限
> 用户符号:
>
> ```
> u
> ```
> :拥有者
>
> ```
> g
> ```
> :所属组
>
> ```
> o
> ```
> :其它用户
>
> ```
> a
> ```
> :所有用户
具体如下:
u表示拥有者user
[wyt@VM-20-4-centos lesson3]$ chmod u+x test.c #给拥有者添加执行权限
[wyt@VM-20-4-centos lesson3]$ chmod u-w test.c #给拥有者取消写权限
[wyt@VM-20-4-centos lesson3]$ chmod u=r test.c #给拥有者赋予读权限
g表示所属组group
[wyt@VM-20-4-centos lesson3]$ chmod g+w test.c # 给所属组添加写权限
[wyt@VM-20-4-centos lesson3]$ chmod g-r test.c # 给所属组取消读权限
[wyt@VM-20-4-centos lesson3]$ chmod g=x test.c # 给所属组赋予执行权限
o表示其他人other
[wyt@VM-20-4-centos lesson3]$ chmod o+w test.c # 给其他用户添加写权限
[wyt@VM-20-4-centos lesson3]$ chmod o-r test.c # 给其他用户取消读权限
[wyt@VM-20-4-centos lesson3]$ chmod o=x test.c # 给其他用户赋予执行权限
执行效果如图(只列举其一):
![在这里插入图片描述](https://img-blog.csdnimg.cn/392072ba11e649508450c591aa92da09.png)
chmod 支持连续修改多个访问者的权限,也支持连续修改单个访问者的多个权限,也支持连续修改多个访问者的多个权限,也支持连续操作多个文件。
![在这里插入图片描述](https://img-blog.csdnimg.cn/6b8ca279d69249d580adcb2fbe81cfc1.png)
②使用八进制方法修改权限
![在这里插入图片描述](https://img-blog.csdnimg.cn/14fa6c759a494bceba3d03d2b0f427a0.png)
说明:
[wyt@VM-20-4-centos lesson3]$ chmod 000 test.c # 权限值为0也就是---[wyt@VM-20-4-centos lesson3]$ chmod u-rwx,g-rwx,o-rwx test.c #这两种写法是一致的
[wyt@VM-20-4-centos lesson3]$ chmod 664 test.c #权限值为664也就是rw-rw-r--[wyt@VM-20-4-centos lesson3]$ chmod u+rw,g+rw,o+r test.c #这两种写法是一致的
### 2. chown
chown 可用于修改文件的拥有者,也可以将文件拥有者和所属组一同修改
**格式:** chown 用户名 文件名
**示例1:** 修改文件拥有者
![在这里插入图片描述](https://img-blog.csdnimg.cn/25b18df9a2ff42c1aa675b58d4a2c78c.png)
可以看出,**文件是不能随便更改所有者给别的用户的,即使是文件所有者也不行**。
那如何进行修改呢?
我们在本文最初就讲过,root用户是超级管理员用户,它是不受权限的约束的,我们在上一篇也学过一条指令
sudo
命令,可以暂时提权,所以修改方式如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/88422f741d5b4bea8edd929da4a1bb71.png)
**示例2:** 一同修改文件拥有者和所属组
![在这里插入图片描述](https://img-blog.csdnimg.cn/861dab49af9c4a2db033270cc6fd42d5.png)
### 3. chgrp
chgrp 则是用于修改文件的所属组
**格式:** chgrp 用户组名 文件名
**示例:**
![在这里插入图片描述](https://img-blog.csdnimg.cn/6e1752fbe3634d9995bf9de3578b2135.png)
### 4. umask(重点)
为什么我们创建的目录或者普通文件,默认权限就是 我们所看到的样子呢?比如:
![在这里插入图片描述](https://img-blog.csdnimg.cn/fee7e06d902645afb8d97b05cd66b90d.png)
其实在**Linux中规定**:
- **目录的起始权限是**:777
- **普通文件的起始权限是**:666
但我们所看到的权限也不是777和666呀,这是为什么呢?
其实在系统中还有一个
umask
:叫做
权限掩码
![在这里插入图片描述](https://img-blog.csdnimg.cn/5c57ad578b2e4acc84b9fe84581ad073.png)
我们只需要关注后面三个数字即可,第一个数字不需要关心。
系统默认会配置好
umask
权限掩码:
- 超级用户默认掩码值为0022
- 普通用户默认为0002
说这么多,那权限掩码和我们创建的文件权限有什么关系呢,有什么功能呢?
**权限掩码:凡是在umask中出现的权限,都必须在起始权限中去掉**
就拿我们上面创建的目录和文件举例:
![在这里插入图片描述](https://img-blog.csdnimg.cn/effbafd61f7a45d18fa3e968036c2778.png)
我们除了可以查看umask权限掩码的值,还可以进行修改:
#umask//查看#umask044//设置
**示例1:**
![在这里插入图片描述](https://img-blog.csdnimg.cn/0b0d1fffe5894ab3a3e5ccf768c2246b.png)
**示例2:**
![在这里插入图片描述](https://img-blog.csdnimg.cn/4bc4601193064ee9bfd1af1bc1eb3f2c.png)
讲了这么多,上述也列举了例子,那这到底是如何计算的呢?是用减法吗?----不是!
计算方法如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/627f9c24ba6840019fa75d099d9512d4.png)
**示例:** 拿普通文件举例
![在这里插入图片描述](https://img-blog.csdnimg.cn/6d0fe8e39c534a149e41251f3bd7cf4c.png)
**与实际结果也一致:**
![在这里插入图片描述](https://img-blog.csdnimg.cn/fe0a7cdd93e04e729acdf141e6e5e582.png)
## 四、file指令
**功能说明**:辨识文件类型
**语法**:file [选项] 文件或目录.
**常用选项:**
> -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
> -z 尝试去解读压缩文件的内容。
![在这里插入图片描述](https://img-blog.csdnimg.cn/5df37b980b8e4a7ca012e5ec13e390b4.png)
## 五、目录的权限
> 经过上面的讲解,普通文件的读写执行分别代表着什么含义,这对于我们来说是很明确的。但目录的读写执行分别又代表什么意义呢?与普通文件有什么不同呢?
**目录下的三种权限**
>
> - ```可执行权限(x)```: 如果目录没有可执行权限, 则无法cd到目录中.
> - ```可读权限(r)```: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容
> - ```可写权限(w)```: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件
**示例1:** 去掉目录的可执行权限,观察是否可以进入目录
![在这里插入图片描述](https://img-blog.csdnimg.cn/14050e8d56914467a2e88d886d521bdc.png)
**示例2:** 去掉目录的可读权限,看是否可以ls该目录查看它下面的文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/700d1c0913964c168beb6bd7f34f19f6.png)
**示例3:** 去掉目录的可写权限,看是否可以在该目录下创建或删除文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/7b8a763265214493812fb9324b7904d2.png)
### 粘滞位
Linux系统中有很多人,当我们需要在一个公共的目录下,进行临时文件的操作(增删查改)
根据目录的权限规定,只要用户对目录具有写权限,那么目录内的他人所创建的文件,用户不经他人同意也可以删除。
所以让一个公共目录,大家可以各自进行rwx操作,但是,禁止大家互删对方文件!我们可以给**目录**设置
粘滞位
```
(权限的一种特殊情况)
当一个目录被设置粘滞位时,该目录只能被三种用户删除:
- 超级用户root
- 用户所有者
- 用户所属组
Linux系统根目录下默认有一个公共目录:tmp
注意:设置粘滞位,需要用root用户来设置,普通用户不能设置。
注意,粘滞位是对目录进行修改的,对目录下的所有文件生效
版权归原作者 Clumsy、笨拙 所有, 如有侵权,请联系我们删除。