民族服装的网站建设,南通网站制作怎样,米绘设计师服务平台,wordpress 侧边栏错位目录
Shell的运行原理
Linux权限的概念
su命令
权限
文件访问权限的相关设置方法
chmod指令
chown指令
chgrp指令
sudo命令
文件的常见问题
umask
粘滞位
关于权限的总结 Shell的运行原理
Shell运行原理 —— 外壳程序。 Linux严格意义上说的是一个操作系统…目录
Shell的运行原理
Linux权限的概念
su命令
权限
文件访问权限的相关设置方法
chmod指令
chown指令
chgrp指令
sudo命令
文件的常见问题
umask
粘滞位
关于权限的总结 Shell的运行原理
Shell运行原理 —— 外壳程序。 Linux严格意义上说的是一个操作系统我们称之为“核心kernel“ 但我们一般用户不能直接使用核心kernel。 而是通过核心kernel的“外壳”程序也就是所谓的shell来与核心kernel沟通。#问如何理解为什么不能直接使用核心kernel 可以但是专业性太强门槛太高用户直接使用核心kernel会过于的麻烦、复杂。所以是可以的但是是不建议的。所以系统的设计者不会让用户直接操作操作系统。#问那么我们的如何访问操作系统的呢那么图形化界面 指令操作究竟是什么东西呢 从技术角度Shell的最简单定义命令行解释器command Interpreter主要包含 将使用者的命令翻译给核心kernel处理。 同时将核心的处理结果翻译给使用者。 对比windows的图形化界面GUI我们操作windows 不是直接操作windows内核而是通过图形接口点击从而完成我们的操作比如进入D盘的操作我们通常是双击D盘盘符.或者运行起来一个应用程序。shell 对于Linux有相同的作用主要是对我们的指令进行解析解析指令给Linux内核。反馈结果在通过内核运行出结果通过shell解析给用户。 帮助理解也就比如我们去银行取钱并不是对于存储方式不清楚的我们去做而是将银行卡与钱交给柜台让柜台帮助我们去做这也是一定程度上的解耦合不需要我们多么的清楚银行内部的配置内部的运行方式。Shell运行原理创建子进程让子进程进行命令行解释。子进程出现任何问题都不影响父进程Shell。
用户让Shell本身就是是一个进程 去做的事情可能会导致去执行的进程出现错误导致崩溃所以让子进程进行命令- 知道就可以了父子进程学习的时候深论。 帮助理解操作系统是银行的机器Shell是银行职员用户是办理服务的我们。我们对于机器操作不清楚的我们于是请了一个银行职员帮助我们比如我们想取钱就告诉银行职员让其帮我们进行取1000元于是银行职员就去操作机器了这个时候机器说该用户余额不足无法取款于是告诉操作它的银行职员于是银行职员告诉我们。这个时候就是操作系统层拒绝我们 然后我们又告诉银行职员我们就是要取1000这个时候银行职员知道余额不足就直接拒绝了。这个时候就是Shell层拒绝我们这个时候也就变相的保护了机器中的余额数据Shell变相操作系统中的数据 外壳程序shell的意义
是用户和操作系统交互的中间软件层。可以在一定程度起到一定的保护操作系统的作用。Linux权限的概念
Linux下有两种用户超级用户root、普通用户。
超级用户可以再linux系统下做任何事情不受限制。普通用户在linux下做有限的事情。 所以root -切换- 普通用户潜台词就是切换我们当前的权限。超级用户的命令提示符是“#”普通用户的命令提示符是“$”。
su命令
命令su [用户名] 功能切换用户。 例如要从root用户切换到普通用户user则使用 su user。 要从普通用户user切换到root用户则使用 surootroot可以省略此时系统会提示输入root用户的口令。由普通用户切换到超级用户rootsu -切换到超级用户root后切回刚刚的普通用户Ctrl d / logout 由普通用户切换到普通用户su 用户名由超级用户root切换到普通用户su 用户名 root是超级用户无需输入普通用户密码。 权限 #问是什么 权限针对人的 事物的基本属性决定权限相关的概念 —Linux下一切皆文件— 文件权限 —— 一件事是否允许被用户做。则权限的核心 人 事物属性。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/4Read对文件而言具有读取文件内容的权限对目录来说具有浏览该目录信息的权限。写w/2Write对文件而言具有修改文件内容的权限对目录来说具有删除移动目录内文件的权限。执行x/1execute对文件而言具有执行文件的权限对目录来说具有进入目录的权限。“—”表示不具有该项权限。3. 文件权限值的表示方法 字符表示方法
Linux表示说明Linux表示说明r - -只读- w -仅可写- - x仅可执行r w -可读可写- w x可写和可执行r - x可读可执行r w x可读可写可执行- - -无权限文件访问权限的相关设置方法 于是更改权限的操作就有两类 改用户改属性chmod指令 功能设置文件的访问权限 格式chmod [参数] 权限 文件名 常用选项 R - 递归修改目录文件的权限 说明只有文件的拥有者和root才可以改变文件的权限 chmo命令权限的格式 1. 用户表示符/-权限字符 向权限范围增加权限代号所表示的权限。-向权限范围取消权限代号所表示的权限。向权限范围赋予权限代号所表示的权限。用户符号 u拥有者 g拥有者同组用 o其它用户 a所有用户举例 若要同时设置不同类用户的访问权限则需用逗号隔开。 2. 八进制 权限只有有、没有两个状态。这也就是位图的原理二进制表示为0即否为1即是。于是便有了八进制的表现。 8进制数值表示方法 #问如果没有权限是什么样子 这个时候就是根本原因我们虽然是这个文件的所属组但是我们依旧不具备任何权限因为拥有者的权限被我们清掉了。即使是我们的文件但是没有权限就是不行。 #问root是超级管理员他的权限受不受约束 这个时候文件的拥有者和所属组都不是root是不是root就是other用户了此时是不是什么权限都没有了但是可以发现root用户是可以进行任何操作的。 并且还能更改该文件的权限。 Note root用户的权限十分的大几乎是不受权限的约束的权限就是用来限制普通用户。所以用户的密码十分重要。 chown指令
功能修改文件的拥有者。格式chown [参数] 用户名 文件名。实例可以发现直接使用这个指令报错这个操作是不被允许的。因为我们给别人东西是需要得到别人的同意的。 如何让对方同意 很简单强迫对方同意直接换成root进行操作。 chgrp指令 功能修改文件或目录的所属组。 格式chgrp [参数] 用户组名 文件名。 常用选项-R 递归修改文件或目录的所属组。 实例 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 权限值说明将现有的存取权限减去权限掩码后即可产生建立文件时预设权限。超级用户默认掩码值为0022普通用户默认为0002。 只需要关心umask的后三位。但第 1 个数代表的是文件所具有的特殊权限SetUID、SetGID、Sticky BIT此文不涉及讲解。 Note 凡是在umask中出现的权限都不应该在最终权限中出现。 我们实际创建出来的文件和目录的权限值并不是开始的起始权限是还需要进行进一步umask换算才能得出 —— 掩码的的后三位八进制换算为二进制然后对其进行按位取反。最终权限 起始权限 (~umask)。 实例粘滞位 #问当一个普通文件不具备任何权限我们是否能够删除它 可以发现我们可以利用读写权限阻挡别人阅读但是我们没有办法阻挡别人删除。因为一个文件被删除并不是一个文件本身的属性而是文件所在的目录中用户是否具有写权限。所以也不用担心别人将我们的文件删除因为该文件所在的目录是属于我们的。 结论 删除一个文件并不是这个文件说的算而是这个文件所处的目录说的算。该文件也处于自己的目录下所以也不用担心别人删除。前提该目录就只属于你自己所以需要担心的是未来我们与某一个人一起在一个目录下特定路径下共同在一个目录里维护一堆文件的时候这个时候我们可以不给别人看的权限但是我们架不住别人来删除。
于是在一个场景下 大家所有的用户都在一个共同的路径下对该目录具有读写执行权限。 有一个在根目录下的目录就是这样的tmp 比如我们创建了一个拥有者和所属组都是root的目录后在该目录中使用两个普通用户创建普通文件。 这个时候由于test_dirw目录的拥有者和所属组即使都是root但是放开了对于other的写权限所以一个普通用户是可以将另一个普通用户的文件删除的。 有个最直接的方法就是将test_dirw目录的other的写权限关闭。 这个时候倒是解决了别人删我们的文件的问题但是对于我们来说我们也没有了删除的权限了毕竟在这个拥有者与所属组都是root的目录下作为普通用户的我们来说我们就是otherother的写权限被我们关闭了。 因为怕别人删反而导致了自己没法删除。 总结 当多个用户共享一个目录需要在该目录下进行读写创建删除文件。但是自己只能删除自己的而不能删除别人的。w可以互相删除所以便有了新的一个属性粘滞位。 说白了就是既能保证用户们在一个目录下你创建你的、我创建我的你读写你的。又能保证其他人无法删除你的文件你还能正常使用。 这个时候 t 是 x 的特殊情况这个时候它的表现形式就是。 当一个目录被设置为粘滞位 ( 用chmod t ) 则该目录下的文件只能由
超级管理员删除。该目录的所有者删除。该文件的所有者删除。Note 粘滞位只能给目录设置因为一个文件能否被删除本身就是目录的权限。 #问会不会出现别的用户将粘滞位取消后跑过来将我们的文件删除吗 不可以因为对于这种共享目录一般都是拥有者和所属组都是root。而粘滞位只能够谁加的谁来取。所以也不用担心别人讲目录的粘滞位取消掉因为要不就是root的目录要么就是我们的目录。 root不用想了它在服务器的机器上无所不能它当然可以取消你设置的粘滞位不是完全的无所不能比如他删不掉一个正在被访问的文件。
关于权限的总结
目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限则无法对目录执行任何命令甚至无法cd 进入目, 即使目录仍然有-r 读权限这个地方很容易犯错认为有读权限就可以进入目录读取目录下的文件。而如果目录具有-x权限但没有-r权限则用户可以执行命令可以cd进入目录。但由于没有目录的读权限。所以在目录下即使可以执行ls命令但仍然没有权限读出目录下的文档。