Linux权限的讲解

目录

1、用户的分级

2、用户的身份

3、文件的权限属性

3.1 文件类型

4、chmod

4.1 用八进制形式更改权限 

5、chown与chgrp

6、umask 

结语


前言:

        在Linux下虽然一切都是文件,但是由于文件的权限不一样,导致访问或更改文件存在局限性,文件有三种权限:r w x,分别对应‘读’,写‘,’执行‘,他们各自的作用如下:

        1、r-读:对于普通文件来说,r表示可以浏览普通文件的内容,对目录来说,r表示可以浏览该目录下的所有信息。

        2、w-写:对于普通文件来说,w表示可以更改该普通文件的内容,对目录来说,w表示可以添加、删除、移动该目录下的任何文件。

        3、x-执行:对于普通文件来说,x表示可以执行该普通文件(通常只有可执行文件才会有x权限),对目录来说,x表示可以进入该目录,因此若一个目录没有x权限,纵使该目录有rw权限也无济于事,因为没有x权限意味无法cd该目录

1、用户的分级

        在Linux下有两种级别的用户:超级用户(root),普通用户。所有的权限规则仅限于普通用户,超级用户则不被这些权限所束缚,通过指令su [用户],可以切换不同的用户,具体操作如下:

        并且root可以随意切换全部的普通用户且无需密码,而普通用户切换至root需要root的密码。 

2、用户的身份

        上述所说root不受权限的约束,因此本文所有权限操作都是作用在普通用户之间。虽然普通用户都是普通用户,但是他们对于不同的文件拥有不同的身份,就好比a在b的家附近买了一个房子,那么a就是这个房子的主人身份,而b对于该房子是邻居身份。

        一个文件可以对应三种用户身份,分别是:拥有者、所属组、其他者(other),比如用户a创建了一个文件test,那么这个test的拥有者就是a,所属组也是a(表示该文件所在的组是a组),具体如下图:

         就上图而言,因为当前用户是zh,若把当前用户切换至另一个普通用户,则当前用户对于以上的文件来说就是其他者(other)。虽然Linux的文件属性没有other的选项,但是只要一个用户既不是文件的拥有者,又不在该文件的所属组内,则该用户就是该文件的其他者(other)

3、文件的权限属性

         上文提到文件的权限分为:r w x,并且一个文件有三种用户身份,每种身份都有属于该身份的可读、可写、可执行权限,在Linux下他们的表现形式是这样的:


        细节图如下(用test.c的权限属性来举例):

         test.c的权限属性表示该文件的拥有者可以对该文件进行读写操作,该文件所属组的成员也可对该文件进行读写操作,但是其他者只能读该文件的内容却不能写该文件,最后所有人都不可执行test.c文件。

3.1 文件类型

        上述文件的权限属性的左边一列表示该文件的类型,如下:

文件的类型有以下几种:

        1、d表示目录。

        2、-表示普通文件。

        3、b表示块设备文件,比如磁盘。

        4、p表示管道文件。

        5、l表示链接文件,比如快捷键(也有点像指针)。

4、chmod

        chmod是一个可以修改权限属性的指令,值得注意的是只有文件的拥有者才可以使用chmod对文件进行权限的更改(root除外),他的格式是:chmod 选项 期望的权限 对象文件。 使用chmod时,还需要记住一下几个标识符:

        u表示拥有者,g表示所属组,o表示其他者,a表示三者全部。

        +表示权限的添加,-表示权限的去除,=表示只保留该权限,其他的权限全部去除。

        具体示例如下:

         测试a和=:

4.1 用八进制形式更改权限 

        上述更改权限方式采用的是标识符形式,还有另一种更改权限的方式,即八进制形式更改权限,具体如下操作:

         比如我想让hello.c的拥有者和所属组权限是可读不可执行,其他者的权限是仅可读,那么用八进制形式的操作如下:

5、chown与chgrp

         chown可以更改文件的拥有者,chgrp可以更改文件的所属组,值得注意的是,这两个指令都只能在root用户下实现,具体操作如下:

6、umask 

        在Linux下,当我们创建了一个普通文件或者一个目录,他们的起始权限默认为666和777,但是当我们实践过后发现默认的权限不是666和777,具体如下图:

        发现是775和664,原因就是文件的起始权限并不代表文件的最终权限,而我们看到文件的是其最终权限,在这个过程中,文件的起始权限因为受到了umask(权限掩码)的影响,导致权限发生了变化,具体变化为:最终权限=起始权限&(~umask)。而umask的值是0002,第一位数表示该值为八进制,因此后面三位才是有效位。

        umask值在Linux下显示如下:


        所以可以解释为什么创建出来的普通文件和目录的权限是775和664了:

结语

        以上就是关于Linux下权限的讲解, Linux的权限分为可读可写可执行三种,而一个文件有三种对应的身份关系:拥有者、所属组、其他者,每个身份都有三种权限,因此一个文件总共有九个权限,可以在文件的权限属性中观察到。

  • 21
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安权_code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值