1.什么是权限?
a.权限是限制人的,人=真实的人+身份角色,因为我是学生所以我不能进校长办公室
b.目标事物的属性,也会影响权限
权限=角色+事物属性 权限就是你能不能做一件事情
认识人—用户、普通用户、root用户、人切换
root:超级管理员、几乎不受权限的约束
普通用户:Linux使用者,受权限约束
使用su命令让我们的普通用户提升到管理员用户
从普通用户变成超级用户su就行了
那么我们怎么从超级用户回到普通用户呢?
我们直接一个CTRL+D就行了,将刚刚身份切换直接退出了
那么现在我们又回到了普通账号了
但是我们使用pwd命令查看我们是可以发现通过su进行用户切换的时候,普通用户和root用户是在一个文件夹里面的
但是现在我们使用su -进行切换操作
我们发现这个命令进行用户切换的话会用一个Last Login的提示
并且我们使用pwd进行位置查看我们发现位置也变了
可以总结出我们使用su -进行用户切换就是重新使用root 用户进行登录了
本质是重新以root身份进行登录,家目录发生变化
我们可以利用sudo进行提权的操作
但是只有在白名单的用户才能进行sudo提权的操作
提权仅仅针对sudo后面的一条指令,
那么我们知道了提权这个东西,那么我们什么时候需要进行提权的操作呢?
我们在安装软件的时候需要进行提权的操作
ll文件属性、文件的权限属性,Linux角色划分
最右边的一般表示的是文件名
文件名的左边的三列表示的是文件最近的修改时间
再左边的一列数字就是文件的大小
那么再往左的两列名字表示的是什么呢?
从左边到右边,最左边的名字是文件的拥有者,右边的是文件的所属组
那么我们这里最左边的一列表示的是什么呢?
一共10个字符,我们从左边往右边进行分析
我们通过ll显示的众多属性的第一列的第一个字符就是表示的是文件的类型,
目前我们只介绍过:
d:目录
-:普通文件
c:字符设备文件
b:块设备文件
p:管道文件
l:链接文件
但是我们只需要知道d和-所代表的文件是什么就行了
Linux中角色分三类
1.文件拥有者
2.文件所属组
3.other
对于一个文件来说,文件有三个特征:r w x(可执行)
我们拿下面进行举例子,第一组是拥有者的权限,第二组是所属组的权限,第三组是other的权限
我们这里以拥有者为例子,位置信息是固定的,有r就是可读,没有就是-
有w就是写,没有就是-
有x就是可执行,没有就是-
我们这里拿file1.txt文件来说,我们有读和写的权限,但是无法执行
所以这第一列的10个字符,第一个字符表示的是文件的类型
后续的每三个分别表示这个文件的拥有者、所属组、other的权限
现在我们有一个文件叫做test.txt文件,我们当前的用户是可以读可以写的,但是不能执行
那么我们现在使用chmod进行用户权限的更改操作
我们需要去掉我们当前用户的可读的权限
那么我们输入命令chmod u-r test.txt
u就是我们的当前的拥有者,-就是去掉的意思,r就是阅读的能力
那么后面的文件就是我们要操控改变用户具体权限的文件
我们将拥有者的权限去掉,不能读这个文件了
然后我们再次ll我们可以发现这个我们之前的可读权限变成了-
就是说拥有者不具有读取的权限了
那么我们使用cat进行测试下,看看是否真的不能进行读取的操作了
我们也是可以通过相同的方式去掉我们对这个文件的
可写的权限现在我们是不能往这个文件进行写入的操作的
那么我们是如何进行权限的添加呢?
也是使用相同的方法进行权限的添加操作的
输入命令chmod u+rw test.txt
那么我们又具备了对这个文件的读和写的操作了
去掉和添加拥有者的权限我们用到的字母是u
那么对于所属组来说的话我们用到的是g
other就是o
如果我们想同时给每个人加上权限
那么我们可以同时利用逗号将命令间隔开就行了
如果我们想对三种用户都加上可读的权限的话
我们可以使用这个a ,a就是all的意思
如果想给所有人加上所有的权限的话那么我们可以这么操作
那么我们这里就展示了修改一个人的单个权限,一个人的多个权限
多个人的一个权限,多个人的多个权限
给test.txt这个文件的权限进行改变的操作
我们给拥有者加上我们的可执行的操作u+x
给我们的所属组加上我们的可写的操作g+w
给我们的other加上我们的可写的操作g+w
那么此时我们的权限就修改的差不多了
-rw-r--r-- 1 root root 0 Dec 21 10:43 test.txt
[root@hcss-ecs-28de lesson3]# chmod u+x,g+w,o+w test.txt
[root@hcss-ecs-28de lesson3]# ll
total 0
-rwxrw-rw- 1 root root 0 Dec 21 10:43 test.txt
[root@hcss-ecs-28de lesson3]#
如果想要修改所有人的权限的话我们使用chmod a-w进行修改的操作(去掉所有人的写权限)
去掉所有人的所有权限 chmod a-rwx
只有文件的拥有者,或者root才能修改自己的权限,文件是谁的,才能进行权限的更改操作
Linux下能执行=真的是一个可执行文件+可执行权限
如果我们在进行权限的更改的时候我们前面的没有加上我们要操作的对象
直接写个+wxr
那么我们默认就是所有的用户都会进行权限的增加的操作
比如说这里我们的拥有者和所属组都是我自己,whb
但是我们现在不能进行写入的操作了
为什么呢?
尽管我们的拥有者不具有这些权限,但是我们的所属组是具有权限的啊
我们对应的group是具有写的功能的
我们在文件拥有上,user、group、other和我自己进行身份对比的时候,依次只对比一次
就是说我当前是whb,当前文件的拥有者就是我,一但匹配到拥有者是我的话,那么我们就只看拥有者的权限,所属组不关心的
那么我们怎么进行验证呢?
我们可以使用chgrp进行所属组的权限的改变
直接进行我们的文件的所属组的用户的改变
现在我们将用户切换成zpw,zpw是我们的所属组
那么根据上面的推理的就是我们的所属组是可以进行读写的,我们直接匹配到所属组了
那么我们使用相关的命令进行测试我们发现确实是可以进
行读写操作的
所以假如说我现在是拥有者的话,我们直接进行对应的权限的检查,有什么权限就做什么事情
对应的用户有着对应的权限的
700表示的是什么呢?
7用二进制表示就是111
那么我们的用户如果同时拥有者三个权限的话那么三个位置都是111
所以就是7
00的话就是所属组和other都是没有权限的
那么这个760是什么呢?
7还是111 ,就是拥有者读写可执行三个权限都有
那么6呢?
那么6对应的就是我们的所属组的权限了
6的二进制表示是110
那么就是读写有权限,但是我们的可执行是没有权限的
所以这760这三个数字分别表示的是我们的三个用户对应的权限
chmod 760 whb.txt
直接同时设置三种用户的权限
如果我们想去掉所有人的权限就是直接输入命令
chmod 000 whb.txt
如果我们想给所以人加上所有权限就是直接输入命令
chmod 777 whb.txt
那么这个就是文件权限修改的8进制操作方案
所以从今天开始我们需要修改文件的权限的话我们是可以采用两种做法的
第一种就是chmod u/g/o/a +/- r/w/x 文件名
第二种就是chmod 八进制 文件名
现在我们需要将文件恢复成一个正常的文件
我们使用命令chmod 664 whb.txt
那么现在我们需要更改文件的拥有者我们怎么进行修改操作呢
我们文件的当前的拥有者是whb,但是我们现在需要将文件的拥有者给zpw
我们输入命令chown zpw whb.txt
就可以将我们的文件的拥有者给zpw了
但是我们将这个拥有者给别人的话好像需要别人的同意,但是这个的话是在Linux中实现不了的
那么我们可以尝试下进行强制给他
我们在前面加上sudo进行提权的操作
更改文件的拥有者我们需要root权限或者是进行提权的操作
如果是更改文件的所属组我们可以使用chgrp进行所属组的更改操作
但是我们需要root权限和提权操作我们才能真正的进行修改的操作
如果同时更改文件的拥有者和所属组呢?
我们可以输入命令sudo chmod whb:whb whb.txt
将我们的whb.txt的文件的权限都更改为whb
那么我们已经可以修改一个文件的角色和属性(读写可执行)
一个文件权限=角色+属性
使用chmod对属性进行更改的操作
使用chown和chgrp对文件的拥有者和所属组进行修改的操作
如果你对于一个文件没有权限的话,那么用任何工具都不行的
nano和vim都打不开的,都显示没有权限的
如果我们是超级用户root的话,那么我们怎么样都能进行查看的操作的
关于权限的三个问题:
1.目录权限
我们这里将这个目录的r权限进行删除了,但是我们还是进到了目录里面了,说明我们的进入目录的权限和r无关的
那么r对目录是什么?
如果我们的用户缺少对目录的r的权限的话,我们是不能查看目录里面的文件信息的
那么进入一个目录需要什么权限呢?
我们想将用户的r加上,w减去
那么我们再看看我们是否能进入到这个目录中去
但是我们cd到这个目录的话和w没有关系的
那么w对于一个目录的话有什么用呢?
如果没有w我们是不能在指定目录内部进行新建文件
除此之外,我们没有w权限不仅仅是新建文件夹不行,移动文件,删除文件都是不能进行操作的
删除、修改文件名等修改文件的操作都是不支持的
那么现在我们再看来,进入一个目录所需要的权限就是可执行x权限
如果我们缺少x的话那么我们是不能进入的
所以缺少x权限的话是会影响目录的进入
2.缺省权限
为什么我们新建的文件是664这样的呢?
为什么我们的目录的权限是775
知识点:1.普通文件,其实权限:666,目录文件,其实权限:777
2.umask的权限掩码
[root@hcss-ecs-28de ~]# umask
0002
我们这里输入umask输出的是0002
那么我们这里使用二进制转换出来就是
000 000 010 umask
~110 110 110 一开始的666
111 111 101 我们的umask和我们666的二进制进行按位取反的操作
然后我们再将我们的umask和上次的结果进行按位与的计算操作
110 110 110
111 111 101&
110 110 100 抓换成8进制就是664
3.最终权限(缺省权限):664,775
最终权限(默认)=其实权限&(~umask)
我们可以通过修改权限掩码,达到修改Linux权限的问题
umask是没坏处的,增加了我们设置权限的灵活性
3.粘滞位
1.Linux多用户下,对于文件的访问,是隔离的
2.需求:我们想让Linux下不同的账号用户,共享文件呢?
共享文件
3.问题:
a.不让你读,不让你写,在共享目录下,你却删除了他?
因为删除文件,由所在目录的w权限决定,与目标文件无关!删除你,与你何干
在目录中我们放开w权限的话那么我们就是可以在里面增加修改甚至删除文件的
使用命令sudo chmod +t /share_dir
进行粘滞位的添加操作
然后我们发现最后一个other的权限位从x变成了t了
我们只给other加上了粘滞位这个权限,因为粘滞位的影响只是针对other的
只要不是拥有者或者是所属组的,other是不能在目录里面进行文件的删除的操作的
我们加了这个权限t,other就不能在目录中随意进行操作了
那么这个粘滞位的意义就是任何用户在设置粘滞位的目录下,自己只能删除自己的文件,其他人无法删除,超级用户无视这所以这个粘滞位只能给目录进行设置,不能给普通文件进行设置的操作
为了方便文件的共享,我们的Linux的编写者一开始就在这里创建了一个tmp共享文件,我们可以发现这个tmp的文件的权限带有t
个,随便删除