Linux | Linux权限详解

目录

前言

一、访问角色的分类

1、用户的切换

2、root用户的理解

3、用户切换的理解

二、权限的理解

三、权限管理

1、文件的访问者

2、文件类型与访问权限

(1)文件类型 

(2)访问权限

3、文件权限的修改

(1)角色的修改

(2)角色权限的修改

4、权限掩码相关


前言

        关于文件权限是我们学习Linux的基础知识;本章节就带着大家一起深入了解我们的Linux权限相关问题;

一、访问角色的分类

        在Linux中,我们可以将所有用户大体分为两类,一类是我们的超级管理员用户,另一类是我们的普通用户;超级管理员用户只能有一个,就是我们的root用户,而普通用户我们可以 adduser 来创建,且创建数量不限;

1、用户的切换

        我们可以通过 su 用户名 的方式进行用户切换,且root用户切换成任何用户都无需密码,而普通用户进行切换时,我们必须直到指定用户的密码才可以进行切换;

2、root用户的理解

        root用户就是类似上帝,我们规则的制定者,因此root用户不受权限的约数,关于Linux权限的理解,我们暂时可以理解成是否可以做某件事;因此我们root用户在切换到任何一个用户时,都无需密码,可以进行直接切换;

3、用户切换的理解

        实际上,用户切换的本质是权限的切换,我们切换到了另一个用户,我们对文件的访问权限也随之发生改变;

二、权限的理解

        在理解这个问题前,我们首先要了解Linux的涉及理念,在Linux中,一切皆文件,我们的键盘有对应的键盘文件,显示器也有对应的显示器文件;文件就具备对应的访问权限;就好像我们的视频软件,有的视频我们无法观看,因为我们不是VIP用户,我们没有观看权限,Linux中的文件也是如此,每个文件也有对应的权限,让某些人拥有对该文件的某些权限;所谓权限就是一种限制,限制某个用户是否能做出响应的动作;

三、权限管理

1、文件的访问者

        在Linux中,我们可以将访问文件的角色分为三种,分别为拥有者(文件的拥有者)、所属组(除拥有者的一种特殊身份)、Other(除了上述两种身份的用户);我们可以分别给这三种角色设置其对该文件的访问权限;

2、文件类型与访问权限

        我们可以通过ls -l查看文件的详细信息;包括其类型、访问权限、连接数(暂不考虑)、拥有者、所属组、文件大小、文件最新修改时间以及文件名;

(1)文件类型 

关于文件类型,主要有以下几种;

d:目录文件(上图就是)

-:普通文件

p:管道文件

b:块设备文件(磁盘文件)
c:字符文件

l:链接文件

补充:

        Linux下并不以文件后缀名来区分文件类型,是以 ls -l 中第一个字符来查看文件类型,但是我们还是可以看到Linux好多文件都有后缀,这是为什么呢?

        实际上,不用后缀区分文件是Linux操作系统层面的认识,而我们用gcc编译一个以txt为后缀的文件依然会报错;

(2)访问权限

        关于文件权限,我们可以看到一共有9个字符,平均分为3组,每一组分别代表拥有者权限、所属组权限、Other权限;每组权限都用三个字符表示,其位置固定,第一个位置是读权限,若有则用 r 表示,若不存在用 - 表示;同样,第二个位置是写权限,第三个位置是可执行权限;

        举个栗子,下述截图中,拥有者具有读、写、可执行权限;所属组具有读、写、可执行权限;Other具有读、可执行权限;

r权限:对于文件来说,r权限就是是否可读,对于文件夹来说,r权限是是否可以查看文件夹里的信息;

w权限:对于文件来说,w权限就是修改文件内容,对于文件夹来说,w权限就是是否可以在文件夹里创建、删除文件等;

x权限:对于文件来说,x权限就是是否可以执行(可执行文件),对于文件夹来说,x权限就是是否可以进入该文件夹;

3、文件权限的修改

        文件权限的修改大体分为两种,一种是角色的修改,就是文件的拥有者,所属组的修改;一种是每种角色对应的权限的修改;

(1)角色的修改

文件拥有者的修改指令:

chown 修改后的用户名 修改的文件名

注意:我们要将文件的拥有者修改成别人是否需要对方同意?或者说,你把一样东西给别人是否需要别人同意呢的?答案毋庸置疑,是肯定的,我们直接做实验,如下图;

        我们使用sudo指令将我们的权限提升成root用户的权限,然后将文件强行塞给别人;root是超级管理员,因此可以无视权限规则;

我们还可以修改所属组,所属组的修改指令与拥有者的修改类似,具体用法如下;、

chgrp 修改后的用户名 修改的文件名、

同样,我们将别的用户添加到所属组我们也需要进行提权操作才可以进行;如下所示;

(2)角色权限的修改

        关于每个角色权限的修改我们有两种方案,一种是通过 u/g/o +/- a/r/w/x 来实现,另一种是通过八进制数来修改下面分别展开介绍;

方法一: u/g/o +/- a/r/w/x

        其中u代表拥有者,g代表所属组,o代表Other,+/-代表我们给用户加上或减去某个权限,a代表所有权限,r代表读权限,w代表写权限,x代表可执行权限;现在我们给 tmp.txt 修改权限,其初始权限如下图所示;

        我们尝试去掉拥有者的写权限,所属组的读权限,并给Other加上可执行权限;

        是不是非常简单,只需要像做加减法一样就可以修改文件的权限了;

方法二:八进制法

        这样,我们就可以通过3个八进制数很轻易的就控制文件的权限了;现在,我们想把权限分别修改为 rwx -wx --x ,不难计算出,对应的三个八进制数分别为 731,现在我们动手实操,看结果是否如我们所料; 

4、权限掩码相关

        要了解关于权限掩码的知识,我们首先得知道,在Linux中,当我们创建一个新文件/目录时,有对应的默认初始权限,对于新文件来说,默认的初始权限是0666(八进制),对于新目录来说,默认的初始权限是0777(八进制);根据这个,我们创建一个新文件和新目录观察一下是否如我们所料;

        我们去尝试,发现完全不对呀,这是因为有我们的权限掩码,权限掩码也是三个八进制数,前置0,同样代表这三个数是八进制,后面,三个八进制数代表三个角色的权限,与上面的相同;我们看到的权限是通过权限掩码就的一系列操作后得到的;具体如下公式;

新文件/目录权限 =  默认初始权限 &(~权限掩码)

umask指令    // 查看当前权限掩码

        我们也可以做个测试,我们将权限掩码改成 0000,这样我们新创建出来的文件默认权限就是0666,目录默认权限就是0777,我们测试一下,看是否如我们所料;

猜你喜欢

转载自blog.csdn.net/Nice_W/article/details/133845814