【Linux基础】shell运行原理+权限[内附大量实操截图] | 您所在的位置:网站首页 › linux 执行shell 不允许的操作 › 【Linux基础】shell运行原理+权限[内附大量实操截图] |
目录 一、shell命令及其运行原理 shell运行原理 —— 外壳程序 二、权限 1、权限访问者的分类 2、对角色和文件的操作 1) 文件类型 2)基本权限 3)文件访问者及其权限的分类 ①文件访问者 ②不同访问者的权限 ③文件访问权限的相关设置方法 a)chmod b)八进制方案 ④更改文件的拥有者和所属组 3、目录权限 4、粘滞位 三、权限总结 一、shell命令及其运行原理Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解? 那为什么不能直接使用kernel? 1、人不善于使用操作系统。 2、如果让人直接访问操作系统: a、操作的成本会非常高,因为不是所有的人都是程序员,而且程序员也不一定了解操作系统; b、人会犯错,会带来不安全的因素。 所以系统设计者不会让人直接操作 操作系统! shell运行原理 —— 外壳程序外壳程序的意义: 1、是用户和操作系统交互中间软件层。 2、可以在一定程度上,起到保护操作系统的作用。 从技术角度,Shell的最简单定义:命令行解释器(command Interpreter) 主要包含: 将使用者的命令翻译给核心(kernel)处理。 同时,将核心的处理结果翻译给使用者。 二、权限 1、权限访问者的分类Linux下有两种用户:超级用户(root)、普通用户。 超级用户:只有一个,具有Linux下的最高权限。可以再linux系统下做任何事情,不受限制。 普通用户:可以有多个,在linux下做有限的事情。 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。 root < -- 切换 -- > 普通用户 命令:su [用户名] 功能:切换用户。 例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。 d:目录 -:普通文件 l:软链接(类似Windows的快捷方式) b:块设备文件(例如硬盘、光驱等) p:管道文件 c:字符设备文件(例如屏幕等串口设备) s:套接口文件 2)基本权限i.读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限 ii.写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限 iii.执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限 iv.“—”表示不具有该项权限 3)文件访问者及其权限的分类 ①文件访问者在文件下,角色权限身份一共有三种:拥有者(uesr) ,所属组(group) ,其他人(other)。 拥有者:文件属于谁; 所属组:文件属于哪一个组; other:不属于上面两种中的任何一种,就是other; ②不同访问者的权限功能:设置文件的访问权限 格式:chmod [参数] 权限 文件名 常用选项: R -> 递归修改目录文件的权限 说明:只有文件的拥有者和root才可以改变文件的权限 用户表示符+/-= 权限字符 +:向权限范围增加权限代号所表示的权限 -:向权限范围取消权限代号所表示的权限 =:向权限范围赋予权限代号所表示的权限 用户符号: u:拥有者 g:拥有者同组用 o:其它用户 a:所有用户 a)chown 功能:修改文件的拥有者 格式:chown [参数] 用户名 文件名 b)chgrp 功能:修改文件或目录的所属组 格式:chgrp [参数] 用户组名 文件名 常用选项:-R 递归修改文件或目录的所属组 实例: 目录的起始权限是777,普通文件的起始权限是666. 但是我们可以看到在实际操作过程中并不是这样的,这是因为什么原因呢?原因就是创建文件或目录的时候还要受到 umask 的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & (~umask) umask 格式:umask 权限值 功能: 查看或修改文件掩码 说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用 户默认为0002 凡是在umask中出现的权限,不会在最终的文件权限中出现! 可以看到root和普通用户下目录和普通文件的最终权限是不一样的。那是怎么计算的呢? root(目录) root(普通文件)普通用户(目录)普通用户(普通文件)起始权限: 7 7 7 111 111 111 起始权限 6 6 6 110 110 110 起始权限: 7 7 7 111 111 111 起始权限 6 6 6 110 110 110 umask: 0 2 2 000 010 010 umask: 0 2 2 000 010 010 umask: 0 0 2 000 000 010 umask: 0 0 2 000 000 010 ~umask:111 101 101 mask & (~umask): 111 101 101 7 5 5 ~umask:111 101 101 mask & (~umask): 110 100 100 6 4 4 ~umask:111 111 101 mask & (~umask): 111 111 101 7 7 5 ~umask:111 111 101 mask & (~umask): 110 110 100 6 6 4
当然 umask也是可以修改的。 粘滞位发生前提:所有用户在一个共同的路径下,对该目录具有读写执行权限。 我们会发现这样的一个问题,按照之前的设定当一个文件的拥有者和所属组都是我时,其他人不能对该文件进行操作。但是我们发现处在同一路径下的其他人可以直接删除掉我的文件,这是怎么回事呢?这种情况该怎么解决呢? 我们在根目录下建立一个mytmp 目录来帮助我们理解。
那这样可能会想到可以把目录 other 的“写(w)”权限去掉就可以了,事实真的是这样吗? 我们发现确实不能删除别人的文件了,连自己的文件也不可以删除了,简直是伤敌一千,自损八百。
1)当多个用户共享一个目录,需要在该目录下进行读写,创建删除文件。 2)但是只能删除自己的,而不能删除别人的。 解决方法就是给目录 chmod +t 目录名
1)粘滞位只能给目录设置。 2)一般是谁设置谁取消。 三、权限总结 目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这 个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。 |
CopyRight 2018-2019 实验室设备网 版权所有 |