●🧑个人主页:你帅你先说.
●📃欢迎点赞👍关注💡收藏💖
●📖既选择了远方,便只顾风雨兼程。
●🤟欢迎大家有问题随时私信我!
●🧐版权:本文由[你帅你先说.]原创,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
就按照新的权限掩码来分配对应权限。
注意:修改的权限掩码只在本次登录有效
喜欢这篇文章的可以给个一键三连
点赞👍关注💡收藏💖