目录
一、Linux权限的概念
a.什么是权限?
b.权限的本质
c.Linux中的用户
1.从root用户切换到普通用户user:
2.从普通用户user切换到root用户:
3.我不想直接变成root,但是我就是想以root的身份执行一个工作?
4.Linux中具体的角色需要用具体的人来扮演
二、如何修改权限
1、快速修改权限的做法
2.除了修改权限以外,我们还可以修改所属组和拥有者:
b.除以上的修改方法我们还可使用八进制
三、文件类型
a.LInux不通过后缀名区分文件类型,不是说Linux不用后缀
b.Linux系统不以文件后缀作为区分文件的类型,并不代表gcc不需要
四、目录的权限
1.如果我们要进入一个目录,需要什么权限?
2.Linux创建文件的时候,为什么好像有默认权限?为什么是我们看到的样子?
umask(Linux 默认权限掩码)
五、为什么我们一个普通人能够删掉别人的文件(包括root)?合理吗?
六、如果想在Linux下,由多个用户建立共享一个文件,来被大家共同访问,怎么办?
粘滞位:
一、Linux权限的概念
a.什么是权限?
就是通过一定的条件,拦住一部分人,给另一部分人权利,来访问某种资源,有无,或者能还是不能的问题。例如vip、门禁。
b.权限的本质
权限与人有关、权限和事物的属性有关
权限=人(角色)+ 事物(文件)的属性
c.Linux中的用户
Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
命令: su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令举例:
1.从root用户切换到普通用户user:
2.从普通用户user切换到root用户:
3.我不想直接变成root,但是我就是想以root的身份执行一个工作?
利用指令提权sudo(但是大有可能你还不能做到,在下一篇博客讲vim时再来解决这个问题)
你应该会有这样的报错,这是配置前,因此接下来使用到sudo的指令,你都可以先切换为root再执行。
4.Linux中具体的角色需要用具体的人来扮演
前面的:-rw-r--r--,不看第一个,后面的三个为一组分别表示
每组第一个字符r:具有可读权限
每组第二个字符w:具有写权限
每组第三个字符x:具有可执行权限
为 - 就是不具有以上的权限。
因此我们上面给的图的意思就是:
1.拥有者具有的权限是:可读可写权限
2.所有组具有的权限是:可读权限
3.其他具有的权限是:可读权限
举例:
我们现在新创建一个用户:
先让原来的用户创建一个文件:
other到底是什么?对于test.txt来说,拥有者是pupuruin,所属组是pupuruin,则study和root对于这个文件来说就是other,other的权限是只可读
检验:
在study时:
在root时:
为什么root对于test.txt来说是other却仍然可以在文件中写内容呢?因为root是超级管理员,不受权限的限制。
可执行性:
我们在test.c中简单的这样写
从这里可以看出由于study对于test.c来说是其他人不具有可执行性也不具有可写性,因此无法编译。
二、如何修改权限
1.快速修改权限的做法
一个文件的权限,谁能修改?
a.拥有者
b.root
chmod u+/-rwx,g+/-rwx,o+/-rwx,a+/-rwx filename
u----user
g---group
o---other
a----all
若想同时为u g o改变权限就使用a+/-rwx filename
示例:
如图当我们为test.txt的所属组和其他人加上相应权限后所发生的改变
这就证明我们的修改是有效的:
那可执行性呢?
原本的test.c对于pupuruin来说是不具有可执行性的,因此我为他加上了这个权限
但是我们发现,他已经具有了可执行性了,却不能被编译
这是为什么?
如何理解x
可执行权限 vs 可执行
能执行 = 具有可执行权限 +你就是一个可执行文件
他现在只具有可执行权限,但他却不是一个可执行文件
2.除了修改权限以外,我们还可以修改所属组和拥有者:
a.
修改拥有者:chown name filename
修改所属组:chgrp name filename
chown name1(拥有者):name2(所属组)filename
(为什么没有修改other的指令,因为不需要!!)
示例:
如图,我们可发现只有root能修改所属组和拥有者
b.除以上的修改方法我们还可使用八进制
chmod 八进制 filename
示例:
三、文件类型
Windows是如何区分文件类型的?
后缀名
a.LInux不通过后缀名区分文件类型,不是说Linux不用后缀
通过什么来区分?ls -l 第一个属性列:
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
b.Linux系统不以文件后缀作为区分文件的类型,并不代表gcc不需要
Linux != gcc
Linux 不区分文件类型
但Linux上面的工具可能区分!
四、目录的权限
1.如果我们要进入一个目录,需要什么权限?
进入一个目录需要x权限
目录的r权限:用户能否查看指定目录内的文件信息
目录的w权限:决定用户是否能在指定的目录内新建、修改,删除文件。
文件 = 内容(该目录里面所有的文件信息详细数据)+ 属性
证明:
2.Linux创建文件的时候,为什么好像有默认权限?为什么是我们看到的样子?
最终权限就是我们所看到的样子
umask(Linux 默认权限掩码)
这是我的umask默认值:(大家的umask默认值会不同,这是正常的)
五、为什么我们一个普通人能够删掉别人的文件(包括root)?合理吗?
a.删除一个文件和目标文件有关系吗?没关系!!
b.和谁有关系? 和我所在的目录有关系
无论任何人,在我的目录下建立文件,都可由我删除,因为我有对这个目录的w权限
六、如果想在Linux下,由多个用户建立共享一个文件,来被大家共同访问,怎么办?
1.首先这个文件,不能在我们各自的家目录下创建,为什么?其他人看不见,进不来
2.因此,我们只能在系统的非用户目录下创建
当前,我(pupuruin)准备新建一个文件和student1共享,不想让study看,study可以删吗?
study可不可以删取决于他(other)拥有的权限。
首先,我们先创建一个目录,并且为所有人打开写权限
现在所有的人都拥有在目录里 w 的权限,因此其他人也可以删该目录中的文件
pupuruin建立一个test.txt文件,并且打开了其他人可写的权限
如图,我(pupuruin)和student1共享文件test.txt,而study他可以看我们的共享文件,也将我们共享的文件给删掉,怎么办?
粘滞位:
当一个目录被设置为“粘滞位”(用chmod+t),则该目录下的文件只能由:
a.超级管理员删除
b.该目录的所有者删除
c.该文件的所有者删除
(一般a,b是同一人)
示例:
pupuruin创建一个新文件,study来删,已经不能删了
对于此时的study已经不具有w权限了
对于现在的log.txt来说,只有pupuruin、root能删,而study和student1都不能删
结语:
随着这篇关于题目解析的博客接近尾声,我衷心希望我所分享的内容能为你带来一些启发和帮助。学习和理解的过程往往充满挑战,但正是这些挑战让我们不断成长和进步。我在准备这篇文章时,也深刻体会到了学习与分享的乐趣。
在此,我要特别感谢每一位阅读到这里的你。是你的关注和支持,给予了我持续写作和分享的动力。我深知,无论我在某个领域有多少见解,都离不开大家的鼓励与指正。因此,如果你在阅读过程中有任何疑问、建议或是发现了文章中的不足之处,都欢迎你慷慨赐教。 你的每一条反馈都是我前进路上的宝贵财富。同时,我也非常期待能够得到你的点赞、收藏,关注这将是对我莫大的支持和鼓励。当然,我更期待的是能够持续为你带来有价值的内容,让我们在知识的道路上共同前行。