linux篇权限

Posted 东条希尔薇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux篇权限相关的知识,希望对你有一定的参考价值。

作者介绍:

关于作者:东条希尔薇,一名喜欢编程的在校大学生
主攻方向:c++和linux
码云主页点我
作者CSDN主页地址

“没有规矩,不成方圆”,在现实世界中,同样有各种各样的规矩约束着我们,这种规矩就可以理解成计算机中的权限,正因为有着各种各样的权限,我们的社会才能够正常运转。计算机中也一样,不同的文件或目录都有各种各样的权限。权限决定了某个文件是否能被执行某种操作,其中,这些操作有以下三种:

符号作用
r文件读权限,决定文件是否能被查看
w文件写权限,决定文件内容是否能被修改
x可执行权限,表示文件是否能被运行

今天就为大家详细介绍一下linux系统下的用户权限和文件权限的概念和对应操作

linux用户权限

linux下有两种用户,root用户普通用户

其中root用户可以把它理解为主宰一切的上帝,拥有linux系统的最高权限,几乎可以对所有用户做任何操作

普通用户就可以把它理解为世界上的许多普通人,需要的一些操作都必须要经过许可才能操作,或者直接无法操作

我们默认登录都是普通用户,其中切换成超级用户有以下几种方法

  1. 直接在命令行输入su命令,需要系统设置的root密码才能进入
  2. 输入sudo -s,需要请求进入root权限的用户的密码,但有些用户必须要添加信任才能使用sudo指令,至于怎么添加,我们在后面的章节再做详细介绍
  3. 输入exit或者ctrl+d退出root用户

root拥有最高权限:


同时,su【username】可以在普通用户之间进行切换


但我们可能在有些时候,只有一条或几条指令需要暂时性使用root权限,也就是我们有临时权限提升的需要,这时我们可以在我们的指令前面加上sudo指令,就可以以root权限执行这条指令,但需要用户的密码和用户的root权限信任


我们有用户权限能够实现约束不同的人对相同文件能够进行何许操作,那么,文件之间的权限是如何进行组织的呢?

linux文件权限

linux文件下也有对权限的独特标识,这些特殊的标识组成了文件属性

我们来简单解读一下文件的属性(按ll可查看当前目录下所有文件的属性)

补充:第一位表示文件的类型,例如:d表示目录,-表示普通文件,linux下以这一位标识文件类型,而不是用后缀名标识文件类型

要先搞清楚权限,我们首先要明白某个文件对于用户分有哪些类别:

  1. root,最高权限
  2. user,也就是某个文件的所有者,对应u
  3. group,文件所有组所属组中的所有成员,对应g
  4. other,其它成员,对应o

linux中的文件对于以上几种用户都有一套特定的权限设置。

root,user,other我们利用以前的知识以及常识都容易理解,那么所属组是什么意思呢?

其实,我们以后进公司工作的话,我们都会加入一些项目组。而项目组的其它成员对于你个人来说就是属于other,但同组成员相对于完全陌生的人,理所应当拥有高于普通人的权限,所以为了方便小组之间的沟通合作,linux下对同组用户会专门设置一套权限

例如,有dtxew1和dtxew2两个用户,它们都可以分为dtxew组里
默认建立用户时是一个组就对应一个用户,组名和用户名相同

r,w,x权限的详细介绍(面向文件)

r,为read读权限,对应每组的第一位字符,对应文件说具有读取文件内容的权限


w,为write写权限,对应每组的第二位字符,对应文件说具有修改文件内容和删除文件的权限



x,为可执行权限,对应每组的第三位字符,对应文件说具有运行文件的权限(exe)


在每一组字符中,-表示无此权限,有对应字母表示有此权限

修改文件权限的方法

chmod设置文件的访问权限

使用:chmod【参数】【权限】【用户名】

其中:权限列表:+表示为用户添加此权限,-表示删除权限,=表示赋予权限

参数列表中:o表示other,u表示user,g表示group

使用示例:

chown(修改文件拥有者)

需要root权限

使用示例:chown user file.txt

chgrp(修改文件所属组)

使用与上面类似

另外,以上所有权限如果对目录使用,仅会修改目录本身的权限,如果想修改文件夹下所有文件的权限,可在参数列表中加入-R递归

r,w,x面向目录权限

如果没有r权限,则无法查看文件内内容,但却可以对文件内容进行修改

如果没有w权限,则无法在文件夹内创建和删除文件

如果没有x权限,则无法进入到文件夹中,也无法查看文件的详细信息

重要补充知识

粘滞位

我们上面介绍的目录权限中有个w权限,如果有此权限,就可以删除掉文件夹中的内容


而不管文件夹的所有者是不是你,只要对应用户有文件夹的写权限,就可以任意删除文件夹下的文件


但我却只希望其它用户在这个文件夹上存放它们的数据,(需要w权限),但并不需要其它人删除我们的文件,怎么办?

我们就引入了粘滞位

使用:chmod +t 【文件】

加入了粘滞位后,此目录下的文件只能由以下三种用户删除(只对文件夹生效)

  1. root用户
  2. 目录所有者
  3. 被删除文件的所有者

示例:

权限掩码

我们仔细观察可以发现,在不同系统下,我们的文件默认权限是不一样的,那么,产生这种不同的原因是什么呢?

其实,我们在表示权限的时候,可以不光只使用r,w,x等字符来表示

如果我们把有权限记为1,无权限记为0,那么,我们每组的权限可以用一个三位二进制来表示,而每一个3位二进制我们可以转换成一个8进制数字

所以,我们可以使用3位8进制数字来表示某个文件的所有权限

比如,我们要开通所有权限,那么对应二进制就是111 111 111,换算为8进制就是777
所以,我们可以这样:


在linux系统下,文件夹默认权限是666,文件默认权限是777

而在每个系统有不一样的默认值,还受到掩码的影响

掩码:凡是掩码中位为1的,在结果中都会被置为0

公式:权限=mask(默认权限码) & ~umask(掩码)

设置掩码操作:umask 掩码值

注意:掩码的修改仅在本次运行中生效

以上是关于linux篇权限的主要内容,如果未能解决你的问题,请参考以下文章

Linux Capabilities 入门教程:概念篇

Linux下文件特殊权限

Linux命令篇之chown命令和chgrp命令

Hive命令-权限篇

Linux 文件权限

Linux基础篇二