Linux权限

一、权限的基本知识

1、权限的本质

权限是通过一定的条件,拦住一部分人,给另一部分人权利访问某种资源。

权限与角色,事物的属性有关。

权限 = 角色 + 事物属性

2、Linux用户分类

root:超级管理员,不受权限约束(提示符#)

普通用户:受到权限约束(提示符$)

3、普通用户和root之间的身份切换

(1)普通用户到root

su         su指令能把身份从普通用户转成root

su -       不仅身份转换到root,还会进入root的家目录/root(退出ctrl + d)

普通用户到root,要输入root密码

(2)root到普通用户

su 用户名

4、指令提权

有一些指令只能有root来做,当我们是普通用户时无法使用,这时候我们就需要短暂的指令提权,让我们以root身份去执行某些指令。(但此时我们依然是普通用户)

指令前面加sudo即可。

问题

为什么指令提权是输入普通用户密码?

因为要匹配白名单,即root让某些用户用sudo才能用,其他用户不能用。(这涉及到配置文件的修改)

5、Linux中的三种角色

(1)拥有者:顾名思义就是文件或目录的拥有人。

(2)所属组:文件或目录的所有者所在的组的用户,方便多人操作文件,更细致的权限管理。

(3)其他人:我们称other,不是拥有者,所属组的用户全是other

上图中红色框里面的两个用户分别是test.txt文件的拥有者和所属组。那为什么不显示other呢,因为除了拥有者和所属组,其他用户都是other

6、补充知识

上面我们提到普通用户和root,又提到拥有者,所属组,other,他们之间有什么关系呢?

普通用户和root都是具体的人,但是拥有者,所属组,other,是三种不同的身份,有些普通用户可能在一个文件里是拥有者,在另一个文件里是other

所以两组概念是相互补充的。

二、文件权限

1、文件的三种权限

上图红框标出的就是文件目录的权限,共有十个字符。

第一个字符代表文件类型,- 代表普通文件,d代表目录。

后面九个字符三个为一组,分别代表拥有者,所属组,other的三种权限

r:读文件权限

w:写文件权限

x:执行文件权限

2、修改文件权限

chmod [角色(拥有者u,所属组g,other o,所有人a)]+/-[文件权限rwx][文件名]

当然root作为超级管理员,不受文件权限约束。

值得一提的是Linux对用户身份的识别只进行一次,当你既是拥有者又是所属组,你的身份是拥有者。

就像这里,我们既是拥有者也是所属组,而所属组有读权限,但是cat指令不被允许就是因为识别一次身份我们是拥有者。

3、修改身份

root修改拥有者:chown 用户名 文件名

root修改所属组:chgrp 用户名 文件名

普通用户修改拥有者:sudo chown 用户名 文件名

普通用户修改所属组:sudo chgrp 用户名 文件名

同时要改多个人的身份用户名之间用 : 隔开

4、修改文件权限的另一种方式

以-rw-rw-r--为例,我们知道拥有者权限是rw-,所属组权限是rw-,other权限是r--,若以二进制的眼光来看的话分别是110 110 100,转换成十进制(八进制也是一样)就是6 6 4,所以我们可以chmod 777 filename 来表示filename这文件的权限是-rwxrwxrwx

5、文件类型

在上文中提到 - 代表普通文件,d代表目录,下面还会介绍一些文件类型。

b:块设备文件,例如磁盘

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

p:管道文件,用于进程间通信

l:链接文件,类似windows中的快捷方式

6、补充知识

(1)Linux中的文件后缀

我们知道在windows中文件后缀代表文件类型,一旦修改很有可能文件就打不开了。

但是在Linux中不以文件后缀来区分文件类型,只由文件属性第一个字符决定,但是Linux不区分后缀不代表Linux里面的工具不区分后缀,例如gcc,若编译的文件后缀不是.c就无法执行指令。

(2)可执行

上面提到文件属性x表示可执行属性,但是文件是否可执行并不取决于文件是否有可执行属性,若文件本身无法执行就算带了x依然不会执行。

所以可执行 = 可执行属性 + 可执行文件

(3)权限掩码(umask)

我们默认创建的目录和普通文件权限分别是775(rwxrwxr-x)和664(rw-rw-r--),这是为什么呢?

普通文件起始权限是666(rw-rw-rw-)目录起始权限是777(rwxrwxrwx)

我们发现在创建时other都会少去w写的权限,这符合常理,毕竟谁也不想外人去随意修改自己的文件。那其实在文件创建的过程中会有一个权限掩码来修改文件起始权限,让我们文件创建出来与起始权限不一样。

上图中的权限掩码就是0002,后三位对应修改文件的起始权限。

具体修改规则:最终权限 = 起始权限 & (~umask)

要修改umask就用指令umask xxxx即可,查看umask就用指令umask

三、目录权限

1、想要进入一个目录,需要的权限是什么?

r:用户能查看目录中文件信息

w:用户能对目录文件进行修改,删除,新建

x:可执行权限

其实需要的权限是x

2、在目录中删除文件

在目录中删除文件与文件本身没有关系,和所在目录的w权限有关系。

3、共享文件

在实际开发中我们有需求要多人合作,但是之前的操作都是在个人的家目录中进行,而家目录与其他普通目录最大的不同就是家目录的权限是drwx------,也就是说只有拥有者才能操作家目录,这明显不符合多人开发的需求。

所以我们可以在系统的非家目录中创建共享文件,先是由root创建一个共享目录,在共享目录中任何人都可以创建共享文件。而此时的共享目录需要对other放开权限。

那不免就会产生一个问题:如果是传统的other权限rwx那么在共享目录中任何人都可以删除任何文件,不管文件是不是自己的,这显然也是不对的。

解决的办法就是引入粘滞位,把目录权限设成drwxr-xrwt,other的权限从x变成t,就说明我们设立了粘滞位,作用就是在里面的共享文件只有root,目录的所有者(基本上都是root,毕竟共享目录就是root创建的),文件的所有者才能删除文件,其他人都不行。

  • 38
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值