【Linux】权限(shell运行原理、概念,Linux权限)

简介: 【Linux】权限(shell运行原理、概念,Linux权限)

shell命令以及运行原理

Shell的最简单定义:命令行解释器(command Interpreter)主要包含:


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


帮助理解:如果说张三是一个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是张三村头漂亮且心动的MM如花。他看上了如花,但是有不好意思直接表白,就让家人找媒婆帮他提亲,所有的事情他都直接跟媒婆沟通,由媒婆转达他的意思给小花,而我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使用的bash。


Shell外壳的存在,可以对请求进行合法性检查,变相的保护OS。


Shell是外壳程序的总称,bash就是具体的一款外壳程序。


创建和删除用户

当我们在第一次使用linux时最开始都是只有一个超级用户(root),而普通用户则是用过超级用户进行创建而形成的,所以我们首先来在超级用户下进行创建一个普通用户


创建新普通用户


第一步:首先进入linux系统中输入指令 whoami 显示root则表示当前用户为超级用户,接下来我们就可以继续进行创建新的普通用户操作。




第二步:输入 adduser+要创建的用户名,接着我们passwd+用户名设置该用户的密码,密码设置最少7位,不能太简单,不然会报错,这里建议字母+数字,再重复输入新密码(注意这里输入密码不回显)当出现all authentication tokens updated successfully则表示新用户已经创建成功,一般创建的新用户会在home目录下生成一个该用户名命名的文件夹。到这里我们的新普通用户就算是已经创建成功了。



删除用户

userdel -r+用户名


当我们想要对普通用户进行删除时,首先我们先切换超级用户root,然后我们使用指令 userdel -r+用户名 进行删除普通用户操作。

注意:


不要使用userdel+用户指令进行删除,因为这样只会删除该用户,而不会删除home目录下的该用户的文件夹,相当于存在残留,没有删除干净。


当在进行一次userdel+用户操作时则显示不存在该用户,但是查询该home目录时还存在该文件夹,这时我们在adduser+用户名发现弹出警告说home目录中已经存在该文件夹,


如果不小心userdel +用户名,解决方法是:进行adduser+刚才的用户名,然后userdel -r+用户名 ,这样就能解决了。


Linux权限的概念

Linux下有两种用户:超级用户(root)、普通用户。


超级用户:可以再linux系统下做任何事情,不受限制

普通用户:在linux下做有限的事情。

超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

命令:su [用户名]


功能:切换用户。


例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。


注意:从root切换到普通用户,不需要输入密码。从普通用户切换到root,需要输入密码。


Linux权限管理




当我们是普通用户时,创建的文件拥有者就是我们自己。如果想在普通用户身份下,创建拥有者是root的文件,可以使用sudo,进行提权,不过sudo的使用,需要进行配置,后面再说明。 上方不能进行提权是因为没有进行配置。


文件访问者的分类(人)

  • 文件和文件目录的所有者:u---User(中国平民 法律问题)
  • 文件和文件目录的所有者所在的组的用户:g---Group(不多说)
  • 其它用户:o---Others (外国人)

文件类型和访问权限(事物属性)



文件类型

d:文件夹


-:普通文件


l:软链接(类似Windows的快捷方式)


b:块设备文件(例如硬盘、光驱等)


p:管道文件


c:字符设备文件(例如屏幕等串口设备)


s:套接口文件



window中,如果把一个文件后缀名改了,可能就打不开文件了。但是linux不一样,即使修改了后缀,也能打开它 。




基本权限

i.读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限


ii.写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限


iii.执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限


iv.“—”表示不具有该项权限


如何理解x?



能执行=具有可执行权限+你就是一个可执行文件。


上图中,test.c具有可执行权限,但不是一个可执行文件,所以无法执行。


如果某文件是可执行文件,但它没有可执行权限,同样无法执行。        


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

chmod

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


格式:chmod [参数] 权限 文件名


常用选项:


R -> 递归修改目录文件的权限

说明:只有文件的拥有者和root才可以改变文件的权限

chmod命令权限值的格式


  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限
  • 用户符号:
  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户


上方是用chmod修改权限的例子。 这是第一种方式。


除了上方用o、g、u修改权限,还可以用八进制进行修改,如下:(第二种方式)







如果拥有者没有权限,也无法进行操作。但是root不一样,没有权限,也能照样操作文件。



上图中,我既是拥有者,也是所属组,但是我依然无法进行操作。那是因为对用户身份的识别只进行一次,此时我被识别为拥有者,就只有拥有者的权限,而没有所属组的权限。


chown

功能:修改文件的拥有者


格式:chown [参数] 用户名 文件名




我们想把拥有者修改为xjh,但是无法执行,因为chown的操作者必须是root。或者我们可以进行sudo进行提权,由于上方没有配置,所以无法进行提权。  


chgrp

功能:修改文件或目录的所属组


格式:chgrp [参数] 用户组名 文件名


常用选项:-R 递归修改文件或目录的所属组



chgrp的使用和chown一样。



如果我们想一次性修改拥有者和所属组,只需在中间加上冒号即可。如上图。


umask

功能:


查看或修改文件掩码


新建文件夹默认权限=0666


新建目录默认权限=0777


但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & (~umask)


格式:umask 权限值


说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用 户默认为0002。


 



我们可以查看掩码,或者主动修改掩码



起始权限是0666,对应的权限应该是rw-rw-rw-。可上面的文件却不是 ,这就跟权限掩码有关了。



我们对掩码取反,再与默认权限进行按位与操作。最后结果就是rw-rw-r--了。


目录的权限

只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写 权限.那么,如何创建一个可以多人共享的目录呢?


首先可以确定的是,这个目录肯定不能在家目录里面。只能在根目录,此时只有root才能创建。




因为这是一个要共享的文件,我们还得把other的w权限打开。 这样其他用户就可以在里面创建文件了。



假设text.txt是张三创建的共享文件,李四与他进行共享,因为李四也需要写入,就打开了other的w权限。突然冒出了王五,他却把这个共享文件删了(因为王五也是other,share目录把other的w权限放开了)。那要怎样才能让这个共享文件可读可写,但不能别人删呢?这时就需要用到粘滞位。


粘滞位

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由


  • 超级管理员删除
  • 该目录的所有者删除
  • 该文件的所有者删除

粘滞位是针对目录的,针对other的。粘滞位就是加强版的x。






设置了粘滞位后,王五就不能删除这个目录里的文件了,便实现了共享。


目录
相关文章
|
3天前
|
Shell Linux Perl
Linux|如何允许 awk 使用 Shell 变量
Linux|如何允许 awk 使用 Shell 变量
13 2
|
4天前
|
存储 Linux 程序员
【操作系统原理】—— Linux内存管理
【操作系统原理】—— Linux内存管理
8 0
|
4天前
|
Linux
如何在 Linux 中递归更改文件的权限?
【5月更文挑战第10天】
19 3
|
4天前
|
网络协议 Shell Linux
LabVIEW 在NI Linux实时设备上访问Shell
LabVIEW 在NI Linux实时设备上访问Shell
12 0
|
4天前
|
存储 安全 Linux
【Linux】详解进程通信中信号量的本质&&同步和互斥的概念&&临界资源和临界区的概念
【Linux】详解进程通信中信号量的本质&&同步和互斥的概念&&临界资源和临界区的概念
|
4天前
|
存储 Linux Shell
Linux:进程概念
Linux:进程概念
20 8
|
4天前
|
算法 Linux 数据安全/隐私保护
Linux:权限
Linux:权限
17 0
|
4天前
|
Shell Linux
【Linux】进程实践项目(更新中) — 自主shell编写
前几篇文章,我们学习进程的相关知识:进程概念,进程替换,进程控制。熟悉了进程到底是个什么事情,接下来我们来做一个实践,来运用我们所学的相关知识。这个项目就是手搓一个shell模块,模拟实现Xshell中的命令行输入。
13 1
|
4天前
|
Linux 数据安全/隐私保护 Windows
【Linux】权限 !
关于Linux的权限问题,可以理解为不同级别的工作者,分别拥有不同的能力来管理文件。
21 5