[Linux]深入理解权限

这篇博客详细介绍了Linux中的shell命令运行原理,包括用户权限的分类与切换,文件的访问权限表示方法以及如何进行权限设置。还探讨了粘滞位的概念及其应用,用于防止非所有者删除文件。此外,文章讲解了默认权限的设定,如umask,以及如何通过umask调整新创建文件的权限。最后,博主分享了一道关于进入目录所需权限的面试题,强调了可执行权限的重要性。
摘要由CSDN通过智能技术生成

●🧑个人主页:你帅你先说.
●📃欢迎点赞👍关注💡收藏💖
●📖既选择了远方,便只顾风雨兼程。
●🤟欢迎大家有问题随时私信我!
●🧐版权:本文由[你帅你先说.]原创,CSDN首发,侵权必究。

🎩1.shell命令及运行原理

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:

  • 将使用者的命令翻译给核心(kernel)处理。
  • 同时,将核心的处理结果翻译给使用者。

对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作。
shell对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。

广义上,Linux发行版 = Linux内核 + 外壳程序
狭义上,Linux = Linux内核
在这里插入图片描述
shell作用:
1.传递请求指令,让OS执行命令
2.保护内核

shell并没有每次都亲自传递指令,有时也会创建子进程来进行执行具有风险的事情。
这里就涉及到一个进程的概念,简单来说,程序运行起来就是一个进程。shell本身也是一个进程。

🎓2.权限

Linux中,默认有两类用户:
root:超级管理员,具有非常高的权限。
普通用户:具有一般权限,需要受权限约束的。

2.1切换用户

su - 用户名

在这里插入图片描述
注意:在使用中尽量不要频繁切换用户,否则系统会一直创建进程,可以使用快捷键exit or ctrl D来进行回退。
在Linux中如果你不是超级管理员但你需要提升权限,我们可以在指令前加上sudo来提升权限。这个指令可以短暂的临时提升权限,本质是让root用户来执行这个指令。

2.2文件访问者的分类

在这里插入图片描述
Linux中的用户类别:
1.拥有者 owner
2.所属组 group
3.其他 other

2.3文件类型和访问权限

在这里插入图片描述
各种开头代表的文件类型
-:普通文件[文本,各种动静态库,可执行程序,源程序,指令]
d:目录文件
c:字符设备文件(键盘与显示器)
b:块设备文件(磁盘)
p:管道文件(通信)
l:链接文件(软连接)
注意:我们在Linux系统中不以文件后缀区分,但系统上的命令就会以后缀区分,例如gcc编译器,
必须gcc xxx.c才能运行程序。

2.4文件权限值的表示方法

在这里插入图片描述
这三个位置分别代表是否具有读是否具有写是否具有可执行。具有读为r,具有写为w,具有可执行为x,如果没有,则为-

2.5文件访问权限的相关设置方法

chmod
功能:设置文件的访问权限

chmod [参数]权限 文件名

例如

chmod u+x file.txt

给u(拥有者)的file.txt加上可执行权限
u:拥有者
g:所属组
o:其他人
a:全称all,所以人,包括拥有者、所属组、其他人。
还可以一次对多个人进行权限修改

chmod u+x,o-r,g+w file.txt

注意:这些权限限制的是非root用户,root不受这些权限的约束。
chown
功能:修改文件的拥有者
非root用户

sudo chown root file.txt

root用户

chown xxx file.txt

chgrp与chown原理类似,chgrp改的是文件的所属组,这里不再介绍。
chown也可以一次改两个权限

sudo chown root:root file.txt

此时拥有者和所属组就都是root了。
这三个权限也可以用八进制来表示。
例如
rw- -w- —
110010000
转换成八进制就是
620
此时你可以直接

chmod 620 file.txt

就会转换成rw- -w- ---的权限。
chgrp
功能:修改文件的所属组

chgrp xxx file.txt

这个操作与chown不同,若这个文件的拥有者属于你,则更改所属组不需要root权限。
学了这么多,我们来看一道面试题:
进入目录需要什么权限?
x(可执行权限)

2.6粘滞位

Linux中other对目录有这样的权限:
如果目录本身对other具有w权限,other可以删掉任何目录下的文件。
如果目录本身对other没有w权限,other不可以删掉任何文件。

但有的时候我们会有这样的需求:other可以在特定的目录下创建文件,并写入但是不想让任何人删掉自己的文件。
你会发现这个需求和上面的矛盾了,所以Linux中就引入了粘滞位来解决这个问题。
对设置了粘滞位的目录,在该目录下,只能文件的拥有者、目录的拥有者以及root可以删除,其他人不能删除。

chmod u/g/o/+t #一般都是对o限制 chmod o+t

粘滞位只能对目录设置,一般是限制other的权限。加粗样式
粘滞位的应用
在我们的根目录下有一个文件是/tmp,这是用来存放临时文件的,这个目录不是一个人使用的,是多个人使用的,所以以防被别人误删文件,就有了粘滞位这个功能来保护你所创建的文件。

2.7默认权限

普通文件:起始权限(rw-rw-rw-)
目录文件:起始权限(rwxrwxrwx)
但实际上你看到的确不是这样,因为Linux中有一个权限掩码
在这里插入图片描述
凡是在umask中出现的,都应在起始权限中去掉。
这个掩码的第一位先不用考虑,只看后三位,022把它转换成权限----w--w-
在这里插入图片描述
所以这边所属组和其他人的w权限就没有显示。
也可以从C语言的角度来看
起始权限(普通文件为例)
110 110 110
umask
000 010 010
也就是说起始权限中在umask中为1的位置要改成0。利用C语言的位操作可以这样:
先对umask按位取反~
111 101 101
然后和起始权限按位与&
111 101 101
110 110 110
110 100 100
rw- r-- r–
在这里插入图片描述

2.8设置默认权限

umask 0xxx

比如

umask 0333

在这里插入图片描述
此时你会发现新创建出来的文件file.txt就按照新的权限掩码来分配对应权限。
注意:修改的权限掩码只在本次登录有效
喜欢这篇文章的可以给个一键三连 点赞👍关注💡收藏💖

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你帅你先说.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值