商赢网站建设seo的中文含义是什么
目录
Shell的运行原理
Linux权限的概念
su命令
权限
文件访问权限的相关设置方法
chmod指令
chown指令
chgrp指令
sudo命令
文件的常见问题
umask
粘滞位
关于权限的总结
Shell的运行原理
Shell运行原理 —— 外壳程序。
#问:如何理解?为什么不能直接使用核心(kernel)?
#问:那么我们的如何访问操作系统的呢?那么图形化界面 && 指令操作究竟是什么东西呢?
- 将使用者的命令翻译给核心(kernel)处理。
- 同时,将核心的处理结果翻译给使用者。
- 创建子进程,让子进程进行命令行解释。
- 子进程出现任何问题,都不影响父进程Shell。
(用户让Shell(本身就是是一个进程 )去做的事情,可能会导致去执行的进程,出现错误,导致崩溃,所以让子进程进行命令)- 知道就可以了,父子进程学习的时候深论。
帮助理解:操作系统是银行的机器,Shell是银行职员,用户是办理服务的我们。我们对于机器操作不清楚的我们,于是请了一个银行职员帮助我们,比如我们想取钱,就告诉银行职员,让其帮我们进行取1000元,于是银行职员就去操作机器了,这个时候,机器说该用户余额不足无法取款,于是告诉操作它的银行职员,于是银行职员告诉我们。(这个时候就是操作系统层拒绝我们)
然后,我们又告诉银行职员我们就是要取1000,这个时候银行职员知道余额不足,就直接拒绝了。(这个时候就是Shell层拒绝我们)这个时候也就变相的保护了机器中的余额数据(Shell变相操作系统中的数据)
外壳程序shell的意义:
- 是用户和操作系统交互的中间软件层。
- 可以在一定程度,起到一定的保护操作系统的作用。
Linux权限的概念
Linux下有两种用户:超级用户(root)、普通用户。
- 超级用户:可以再linux系统下做任何事情,不受限制。
- 普通用户:在linux下做有限的事情。
所以:root <-切换-> 普通用户,潜台词就是切换我们当前的权限。超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
su命令
切换到超级用户root后切回刚刚的普通用户:Ctrl + d / logout
由超级用户root切换到普通用户:su 用户名
root是超级用户,无需输入普通用户密码。
权限
#问:是什么?
1. 文件访问者的分类(人)
- 文件和文件目录的所有者:u---User(中国平民 法律问题)
- 文件和文件目录的所有者所在的组的用户:g---Group(不多说)
- 其它用户:o---Others (外国人)
2. 文件类型和访问权限(事物属性)

用户:可以认为是一种角色或者身份:root && 普通用户(它们可以各自扮演下面的三个)
- 拥有者:文件属于谁。
- 所属组:文件属于哪一个组。
- other:不属于上面两种的任何一个,就是other。
root、普通用户是具体的用户,上面是它们所扮演的角色。
#问:为什么会有所属组这个概念?
在某个公司当中有两个小组团队(A组、B组)在同一个Linux服务器上进行着同一款项目的开发(赛马模式),而你就是A组当中的一员。
有一天,A组的领导来找你,想看看你写的代码。如果这个时候用户只有:拥有者和other,没有所属组。这个时候想让A组领导看见代码,就需要将other的权限打开。但是这个时候,作为B组的李四,也是other,就会导致李四也有权限。所以,如果只有拥有者和other,就会导致组内的成员无法看见代码,打开other权限,也就回导致所有人都会有权限。这就是有问题的,所以Linux映入了所属组。这个时候想让同组的人看见代码,只需将和我们属于同一组人的权限打开就可以了。
文件类型:
Linux下,不以文件后缀来区分文件类型(并不代表可以不使用,在系统层虽然没有意义,但是可以给自己看)。注意:gcc、g++等是Linux上的软件,它们是认文件后缀的!
- d:文件夹
- -:普通文件
- l:软链接(类似Windows的快捷方式)
- b:块设备文件(例如硬盘、光驱等)
- p:管道文件
- c:字符设备文件(例如屏幕等串口设备)
- s:套接口文件
基本权限:
- 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。
- 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限。
- 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。
- “—”:表示不具有该项权限。
3. 文件权限值的表示方法
- 字符表示方法
Linux表示 | 说明 | Linux表示 | 说明 |
---|---|---|---|
r - - | 只读 | - w - | 仅可写 |
- - x | 仅可执行 | r w - | 可读可写 |
- w x | 可写和可执行 | r - x | 可读可执行 |
r w x | 可读可写可执行 | - - - | 无权限 |
文件访问权限的相关设置方法
于是更改权限的操作就有两类:
- 改用户
- 改属性
chmod指令
1. 用户表示符+/-=权限字符
- +:向权限范围增加权限代号所表示的权限。
- -:向权限范围取消权限代号所表示的权限。
- =:向权限范围赋予权限代号所表示的权限。
- 用户符号:
- u:拥有者
- g:拥有者同组用
- o:其它用户
- a:所有用户
举例:
若要同时设置不同类用户的访问权限,则需用逗号隔开。
2. 八进制
权限只有:有、没有,两个状态。这也就是位图的原理,二进制表示,为0即否,为1即是。于是便有了八进制的表现。
- 8进制数值表示方法
#问:如果没有权限是什么样子?
这个时候就是,根本原因:我们虽然是这个文件的所属组,但是,我们依旧不具备任何权限,因为拥有者的权限被我们清掉了。即使是我们的文件,但是没有权限就是不行。
#问:root是超级管理员,他的权限受不受约束?
这个时候,文件的拥有者和所属组都不是root,是不是root就是other用户了?此时是不是什么权限都没有了?但是,可以发现root用户是可以进行任何操作的。
并且还能更改该文件的权限。
Note:
root用户的权限十分的大!几乎是不受权限的约束的!权限就是用来限制普通用户。所以用户的密码十分重要。
chown指令
可以发现直接使用这个指令,报错:这个操作是不被允许的。因为我们给别人东西是需要得到别人的同意的。
如何让对方同意?
很简单,强迫对方同意!直接换成root进行操作。
chgrp指令
Note:
这个时候就使用chown、chgrp指令,改变了用户,这个时候普通用户qcr就变为了other。
sudo命令
除了用root超级用户压着对方强行移动文件还可以使用sudo。
Note:
如果用户想执行sudo,提升权限,需要该用户在信任列表里面,才可以执行sudo,添加用户到信任列表是需要root身份的!
首先你得先切换到超级用户,只有超级用户才有权力将普通用户添加到信任列表。切换到超级用户后,我们使用vim打开文件sudoers进行添加。
注意:普通用户打开文件sudoers是空白什么都看不到。
添加完毕后,该用户就可以使用sudo指令,也就是拥有提升当前指令权限的能力了。
文件的常见问题
1. 目录权限。
Note:
权限对于用户,如果是拥有者和所属组,只看拥有者权限,与所属组没有关系。不是拥有者是所属组,那只看所属组权限。因为权限只会认证一次。
- 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中。
- 可读权限:如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容。
- 可写权限:如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件。
umask
Linux默认:
- 一个目录被创建,起始权限是:777
- 一个普通文件被创建,起始权限是:666
但是我们会发现,我们创建的目录、文件一个是775、664.。并不是前面所提的起始权限。
#问:为何我们创建一个目录或者文件,默认权限是你所看到的样子?
因为有umask的存在。
- 查看或修改文件掩码。
- 新建文件夹默认权限=0666,新建目录默认权限=0777,但实际上我们所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
只需要关心umask的后三位。但第 1 个数代表的是文件所具有的特殊权限(SetUID、SetGID、Sticky BIT)此文不涉及讲解。
Note:
凡是在umask中出现的权限,都不应该在最终权限中出现。
我们实际创建出来的文件和目录的权限值并不是开始的起始权限,是还需要进行进一步umask换算才能得出 —— 掩码的的后三位八进制换算为二进制,然后对其进行按位取反。最终权限 = 起始权限 & (~umask)。
粘滞位
#问:当一个普通文件,不具备任何权限,我们是否能够删除它?
可以发现,我们可以利用读写权限阻挡别人阅读,但是我们没有办法阻挡别人删除。因为一个文件被删除并不是一个文件本身的属性,而是,文件所在的目录中用户是否具有写权限。所以也不用担心别人将我们的文件删除,因为该文件所在的目录是属于我们的。
结论:
- 删除一个文件,并不是这个文件说的算,而是这个文件所处的目录说的算。
- 该文件也处于,自己的目录下,所以也不用担心别人删除。(前提该目录就只属于你自己)
所以需要担心的是,未来我们与某一个人一起在一个目录下(特定路径下),共同在一个目录里维护一堆文件的时候,这个时候我们可以不给别人看的权限,但是我们架不住别人来删除。
于是在一个场景下:
大家所有的用户都在一个共同的路径下,对该目录具有读写执行权限。
有一个在根目录下的目录就是这样的:tmp
比如:我们创建了一个拥有者和所属组都是root的目录后,在该目录中使用两个普通用户创建普通文件。
这个时候由于test_dirw目录的拥有者和所属组即使都是root,但是放开了对于other的写权限,所以一个普通用户是可以将另一个普通用户的文件删除的。
有个最直接的方法,就是将test_dirw目录的other的写权限关闭。
这个时候,倒是解决了别人删我们的文件的问题,但是对于我们来说,我们也没有了删除的权限了,毕竟在这个拥有者与所属组都是root的目录下,作为普通用户的我们来说,我们就是other,other的写权限被我们关闭了。
因为怕别人删,反而导致了自己没法删除。
总结:
- 当多个用户共享一个目录,需要在该目录下,进行读写,创建删除文件。
- 但是自己只能删除自己的,而不能删除别人的。(w:可以互相删除)
所以便有了新的一个属性:粘滞位。
说白了就是:既能保证用户们在一个目录下,你创建你的、我创建我的,你读写你的。又能保证其他人,无法删除你的文件,你还能正常使用。
这个时候 t 是 x 的特殊情况,这个时候它的表现形式就是。
当一个目录被设置为"粘滞位" ( 用chmod + t ) ,则该目录下的文件只能由:
- 超级管理员删除。
- 该目录的所有者删除。
- 该文件的所有者删除。
Note:
粘滞位只能给目录设置,因为一个文件能否被删除本身就是目录的权限。
#问:会不会出现别的用户将粘滞位取消后,跑过来将我们的文件删除吗?
不可以,因为对于这种共享目录,一般都是拥有者和所属组都是root。而粘滞位只能够谁加的,谁来取。所以也不用担心别人讲目录的粘滞位取消掉,因为要不就是root的目录,要么就是我们的目录。
(root不用想了,它在服务器的机器上无所不能,它当然可以取消你设置的粘滞位)不是完全的无所不能,比如他删不掉一个正在被访问的文件。
关于权限的总结
- 目录的可执行权限是表示你可否在目录下执行命令。
- 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)。
- 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限。
- 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。