The secret of getting ahead is getting started.
目录
1 Linux权限的概念
我们知道Linux下有两种用户:超级用户(root)、普通用户。
- 超级用户:可以再linux系统下做任何事情,不受限制
- 普通用户:在linux下做有限的事情。
- 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
如何从普通用户转到超级用户呢?
命令:
su root (root可以省略)
从超级用户转为普通用户命令:
su username
另外再复习一下Linux下新建用户的指令是:
useradd username
删除用户的命令是:
userdel -r username
为新用户设新密码的命令是:
passwd username
2 文件访问者的分类(人)
在Linux中,文件访问者分成3种:
- 文件和文件目录的所有者:u---User
- 文件和文件目录的所有者所在的组的用户:g---Group
- 其它用户:o---Others
3 文件类型和访问权限(事物属性)
我们创建一个文件text.c ,那这个文件创建好的默认权限是什么呢?
通过上面我们不难看出建立一个普通文件的默认权限是 :rw- r-- r--
而建立一个目录的默认权限是:rwx r-x r-x
这里的 r w x分别代表什么意思呢?
- i.读(r):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
- ii.写(w):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
- iii.执行(x):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
- iv:“—”表示不具有该项权限
具体图解:
这里我们再普及一下文件有哪些类型:
- d:文件夹
- -:普通文件
- l:软链接(类似Windows的快捷方式)
- b:块设备文件(例如硬盘、光驱等)
- p:管道文件
- c:字符设备文件(例如屏幕等串口设备)
- s:套接口文件
有了上面的了解后,假如我们想修改文件的权限那应该怎么办呢?例如我想将text.c
这个文件的拥有者拥有可执行权限应该怎样操作呢?
这个时候就需要 chmod 这个指令了。
chmod
功能: 设置文件的访问权限格式: chmod [ 参数 ] 权限 文件名常用选项:
- R -> 递归修改目录文件的权限
- 说明:只有文件的拥有者和root才可以改变文件的权限
chmod 命令权限值的格式:① 用户表示符 +/-= 权限字符+: 向权限范围增加权限代号所表示的权限-: 向权限范围取消权限代号所表示的权限=: 向权限范围赋予权限代号所表示的权限用户符号:u :拥有者g :拥有者同组用o :其它用户a :所有用户我们可以来试试:这样我就修改了该文件拥有者的权限了,至于减去相应的权限就用 - ,组合用的话可以加一个' ,'例如:
减去相应权限也同理。
②三位 8 进制数字这个是什么意思呢?我列一个表格给大家:
权限符号(读写执行) 八进制 二进制 r-- 4 100 -w- 2 010 --x 1 001 rw- 6 110 r-x 5 101 -wx 3 011 rwx 7 111 --- 0 000 通过八进制数字修改也可以达到我们的需求:
这个很简单,大家都能够理解。
另一个问题:假如我想更换该文件的拥有者和所属组应该咋办?
这个时候我们就可以使用chown 和 chgrp 指令了:
chown:
chgrp:
我们可以来试试:
[root@VM -8 -12-centos lesson6] # ll total 8 drwxr-xr-x 2 root root 4096 Dec 2 21: 31 mydir -rwxrwxrwx 1 root root 0 Dec 2 21: 30 mytxt.txt -rwxr--rwx 1 root root 110 Dec 2 17: 05 text.c -rw-r--r-- 1 root root 0 Dec 2 21: 31 text.cpp [root@VM -8 -12-centos lesson6] # chown grm text.c [root@VM -8 -12-centos lesson6] # ll total 8 drwxr-xr-x 2 root root 4096 Dec 2 21: 31 mydir -rwxrwxrwx 1 root root 0 Dec 2 21: 30 mytxt.txt -rwxr--rwx 1 grm root 110 Dec 2 17: 05 text.c -rw-r--r-- 1 root root 0 Dec 2 21: 31 text.cpp [root@VM -8 -12-centos lesson6]#不难发现该文件的所属组已经被修改成功。
修改所属组也是同样的方法,只是用的命令变为:chgrp
4 文件掩码
通过上面我们知道:
超级用户建立一个普通文件(不包括可执行文件)的默认权限是 :rw- r-- r-- (644)
而建立一个目录的默认权限是:rwx r-x r-x (755)
那么为什么是这样子的呢?
umask
功能 :查看或修改文件掩码格式 : umask 权限值说明 :将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为 0022 ,普通用户默认为 0002 。
-
在超级用户下建立
-
文件:
-
110
110
110 (
666)
-
111
101
101 &
-
------------
-
110
100
100 (
644)
-
-
目录:
-
111
111
111 (
777)
-
111
101
101 &
-
------------
-
111
101
101 (
755)
假如我们想修改系统默认的文件掩码呢?
可以使用命令:
umask XXX
我们不妨跳转到普通用户下来使用一下:
-
[grm@VM
-8
-12-centos ~]$ umask
012
-
[grm@VM
-8
-12-centos ~]$ touch tmp.txt
-
[grm@VM
-8
-12-centos ~]$ mkdir -p dir
-
[grm@VM
-8
-12-centos ~]$ ll
-
total
4
-
drwxrw-r-x
2 grm grm
4096 Dec
18
13:
24 dir
-
-rw-rw-r--
1 grm grm
0 Dec
2
22:
30 grmfile
-
-rw-rw-r--
1 grm grm
0 Dec
18
13:
23 tmp.txt
通过计算我们也能很快速的得到上面的结果。
5 目录的权限
- 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中。
- 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容。
- 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
其中比较容易出错的就是这个可执行权限了,进入一个目录首先需要的就是可执行权限,这点大家务必要牢记。
6 粘滞位
我们用root用户创建一个共享目录(也就是其他用户都能够在里面建立文件的目录)将其权限都打开
但是问题来了,如果有一天grm把bxz惹毛了,bxz一气之下就把grm所创建的文件给干掉了,操作系统会同意这样做的吗?
我们发现好像还真的就删除了,这合理吗?还是一个bug?
所以我们就引出了粘滞位的概念:
一、超级管理员删除二、该目录的所有者删除三、该文件的所有者删除
我们为share目录增加一个粘滞位:
-
[root@VM
-8
-12-centos /]
# chmod +t share
-
[root@VM
-8
-12-centos /]
# ll
-
total
84
-
lrwxrwxrwx.
1 root root
7 Mar
7
2019 bin -> usr/bin
-
dr-xr-xr-x.
5 root root
4096 Jul
28
11:
37 boot
-
drwxr-xr-x
4 root root
4096 Nov
4
17:
34 cpp
-
drwxr-xr-x
2 root root
4096 Nov
5
2019 data
-
drwxr-xr-x
19 root root
3020 Sep
20
16:
33 dev
-
drwxr-xr-x.
95 root root
12288 Dec
2
22:
04 etc
-
drwxr-xr-x.
4 root root
4096 Dec
2
22:
02 home
-
lrwxrwxrwx.
1 root root
7 Mar
7
2019 lib -> usr/lib
-
lrwxrwxrwx.
1 root root
9 Mar
7
2019 lib64 -> usr/lib64
-
drwxr-xr-x
3 root root
4096 Oct
3
20:
34 linux
-
drwx------.
2 root root
16384 Mar
7
2019 lost+found
-
drwxr-xr-x.
2 root root
4096 Apr
11
2018 media
-
drwxr-xr-x.
2 root root
4096 Apr
11
2018 mnt
-
drwxr-xr-x.
4 root root
4096 Sep
20
15:
18 opt
-
dr-xr-xr-x
117 root root
0 Sep
20
16:
33 proc
-
dr-xr-x---.
8 root root
4096 Nov
23
21:
26 root
-
drwxr-xr-x
25 root root
880 Nov
15
20:
05 run
-
lrwxrwxrwx.
1 root root
8 Mar
7
2019 sbin -> usr/sbin
-
drwxrwxrwt
2 root root
4096 Dec
18
13:
58 share
-
drwxr-xr-x.
2 root root
4096 Apr
11
2018 srv
-
dr-xr-xr-x
13 root root
0 Sep
26
20:
53 sys
-
drwxrwxrwt.
8 root root
4096 Dec
18
12:
56 tmp
-
drwxr-xr-x.
14 root root
4096 Jan
8
2021 usr
-
drwxr-xr-x.
20 root root
4096 Jan
8
2021 var
我们发现other的最后一位权限由x变成了t
接下来我们再删除来试试:
-
[bxz@VM
-8
-12-centos share]$ ll
-
total
8
-
-rw-rw-r--
1 bxz bxz
0 Dec
18
13:
53 bxz1
-
-rw-rw-r--
1 bxz bxz
0 Dec
18
13:
53 bxz2
-
-rw-rw-r--
1 grm grm
30 Dec
18
13:
52 grm1
-
-rw-rw-r--
1 bxz bxz
91 Dec
18
13:
54 nxz1
-
-rw-r--r--
1 root root
0 Dec
18
13:
51 root1
-
-rw-r--r--
1 root root
0 Dec
18
13:
51 root2
-
[bxz@VM
-8
-12-centos share]$ rm -rf grm1
-
rm: cannot remove ‘grm1’: Operation
not permitted
很明显该操作现在已经不被允许了。
7 权限的总结
- 目录的可执行权限是表示你可否在目录下执行命令。
- 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目录, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
- 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
转载:https://blog.csdn.net/m0_68872612/article/details/128150459