Linux权限

大家好呀,这篇博客主要记录Linux权限相关知识,欢迎大家一起交流!

目录

shell命令及其原理

Linux权限的概念

什么是权限?

权限的本质

Linux中的用户

Linux中文件的权限

修改权限的做法

对比权限有无的表现

修改权限的第二套做法

文件类型

如何理解x

 目录权限


 

shell命令及其原理

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?

从技术角度,Shell的最简单定义:介于用户和操作系统之间的命令行解释器,主要包含:

1)将使用者的命令翻译给核心(kernel)处理。

2)同时,将核心的处理结果翻译给使用者。

对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的 操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。

shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运 行出结果,通过shell解析给用户。

可能这样不是很好理解,那么下面讲一个有趣的故事:

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

 那么,为什么会存在外壳程序(shell程序)呢?主要原因有两点:

1.用户不善于和操作系统OS之间交互

2.shell外壳的存在,可以对请求进行合法性检查,变相的保护操作系统OS

 那么,如果用户输入非法命令怎么办?

bash基本都会给我们创建一个子进程,这个子进程帮用户进行命令行解释,及时出错了也不影响操作系统,因为没有影响到bash。

那shell和bash有什么区别?还是以上面的媒婆故事举例,如果shell是媒婆,bash就是王婆,sh就是李婆。

Linux权限的概念

什么是权限?

权限,就是通过一定的条件,拦住一部分人,给另一部分人权利,来访问某种资源。(可以类比为vip或门禁)

权限的本质

权限和有关,也和事物的属性有关。

Linux中的用户

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

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

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

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

那么,如何在超级管理员和普通用户之间互相身份切换?

普通用户变成root:

su:只是切换身份,并不会改变目录。(推荐)

 

su -:切换身份,会改变目录。

root变成普通用户:

su 用户名:从root变成普通用户。

sudo:指令提权,不想变成root,只是想以root的身份执行下一个工作。

Linux中有三种“人”:拥有者、所属组、other。Linux中具有组的概念,主要是在多人协作的时候更好的进行权限管理!

Linux中文件的权限

在新创建的文件中,我们打印出其详细信息,后面的文件信息我们都很容易理解,那么现在我们要了解一下蓝框中的信息代表什么。

第一位:表示文件的类型。-:普通文件   d:目录文件

剩下的一共是9个字符,为什么是9个呢?

文件的属性权限一般有三种:

1.r,读;2.w,写;3.x,可执行权限。

所以上面9个字符分别表示:拥有者有什么权限,所属组有什么权限,other有什么权限。三三为一组,分别对应拥有者,所属组,other。

那么,我们以拥有者权限的前三个字符为例,来详细看一下这三位具体代表什么。

第一个字符:是否具有读权限,如果是,就是r,否则,就是-

第二个字符:是否具有读权限,如果是,就是w,否则,就是-

第三个字符:是否具有可执行权限,如果是,就是x,否则,就是-

那么,我们该怎么理解test.txt这个文件对应的权限呢?

该文件的拥有者具备读、写、不能执行等权限;该文件所属组具备读、写、不能执行等权限;该文件的other具备读、不能写、不能执行等权限。所以以后我们描述文件权限时,要先确认是哪一个人,然后再确定这个人有哪些权限

修改权限的做法

一个文件的权限,谁能修改?

a.文件的拥有者

b.root

修改文件权限的指令:

chmod u+-rwx,g+-rwx,o+-rwx,a+-rwx filename

可以对这些命令进行任意的组合。(u-user,g-group,o-other,a-all)

对比权限有无的表现

虽然文件的拥有者是自己,但自己给自己设置了权限,不能读、写、执行。

给拥有者加上写权限,并且写入内容给文件,可以看到文件大小发生改变,但是仍然不能读文件。

现在给文件加上读权限,就可以打印文件内容了。

因此,对于普通用户,自身要受到对应权限的约束,即便这个文件是自己的!

root不受权限约束!

因此,我们可以通过修改权限,只让自己和所属组有权限读写,other无权限读写,以此来保护文件。

权限存在的意义:保护普通用户的文件的一般的安全性!

现在,我把拥有者的rw权限去掉,但此时ghs还是所属组,为什么不让我读写了呢?因为,在用户身份识别时,只识别一次!(首先和拥有者匹配,匹配成功了,就不和所属组再匹配)

修改权限的第二套做法

把文件给被人是强制的,需要指令提权,推荐直接使用su,把自己变成root。

更改用户角色的指令:

chown name filename

chgrp name filename

chown name1:name2 filename(同时更改拥有者为name1,所属组为name2)

那么,怎么不见修改other的指令呢?因为不需要,拥有者改了,所属组该改了,other自然就改了!

我们以拥有者为例,有这个权限就是1,没这个权限就是0,那么上图file.txt的拥有者权限就是110->6(8进制),对于所属组的权限就是110->6(8进制),对于other的权限就是100->4(8进制),所以,如果要表示这个文件的全部权限,可以直接采用664(8进制)的方案。

那么,可以使用000去掉所有人的所有权限。

使用777加上所有人的所有权限。

使用660批量加上去掉所有人的权限。

因此,使用

chmod 八进制 filename

 可以达到修改权限的目的。

文件类型

windows是如何区分文件类型的?后缀名。然而,Linux不通过后缀区分文件类型!【不是说Linux不用后缀】那通过什么区分呢?通过ls -l第一个属性列

Linux文件类型:

 -:普通文件,文本文件,可执行程序,库等都叫做普通文件

d:目录文件

b:块设备文件

c:字符设备文件--显示器本质就是字符设备

p:管道文件

l:链接文件

Linux系统不以文件后缀作为区分文件的类型,并不代表gcc不需要!!Linux系统!=gcc,Linux不区分文件类型,但是Linux上面的工具可能区分!我们在Linux对于文件后缀的态度:可以使用!

如何理解x

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

 目录权限

如果我们要进入一个目录,需要x权限。

目录的r权限:用户能否查看指定目录内的文件信息

目录的w权限:决定用户是否能在指定目录内新建,修改,删除文件

目录的x权限:决定用户能否进入到目录中

Linux创建文件的时候,为什么好像有默认权限?为什么是我们看到的样子?

创建的普通文件,起始权限是:0666,去掉x的

创建的目录文件,起始权限是:0777,包含x的

在Linux中,会存在权限掩码umask

最终权限 = 起始权限&(~mask)

比如,666->110 110 110 ,

002->000 000 010,~umask->111 111 101,

那么,还有一个问题,

删除一个文件和该用户有没有该文件所在目录的w权限有关!

如果我们想在Linux下,由多个用户建立一个共享文件,来被大家共同访问,怎么办?

首先这个文件,不能在各自的家目录下创建,为什么?

因为,自己的家目录只对所有者有权限!!!我们只能在系统的非用户目录下创建!

那么,问题来了,当我们在系统的非用户目录下创建文件后,只要用户具有目录的写权限,那么他就可以随意删除别人的文件,不论这个文件是谁创建的!这好像很不科学啊,因此,为了解决这个不科学的问题,Linux中引入了粘滞位的概念。

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

一、超级管理员删除

二、该目录的所有者删除

三、该文件的所有者删除

相关推荐

  1. linux权限

    2024-01-19 17:06:02       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-19 17:06:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-19 17:06:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-19 17:06:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-19 17:06:02       18 阅读

热门阅读

  1. 前端开发 4: jQuery

    2024-01-19 17:06:02       31 阅读
  2. react之unpkg.com前端资源加载慢、加载不出

    2024-01-19 17:06:02       31 阅读
  3. 【温故而知新】HTML5新标签canvas、MathML

    2024-01-19 17:06:02       33 阅读
  4. Mybatis源码总结

    2024-01-19 17:06:02       32 阅读
  5. Linux常见指令

    2024-01-19 17:06:02       28 阅读
  6. python 二次封装Modbus库实现设备间Modbus通信

    2024-01-19 17:06:02       34 阅读
  7. 业务题06

    2024-01-19 17:06:02       34 阅读
  8. C++中实现多线程和分布式

    2024-01-19 17:06:02       33 阅读
  9. 部署智能合约到 polygon 上(Web3项目三实战之三)

    2024-01-19 17:06:02       38 阅读
  10. 初始Spring(适合新手)

    2024-01-19 17:06:02       25 阅读