文件权限属性的八进制表示法
- 这个其实非常简单,因为文件权限属性也就三种,也就是可读,可写或者可执行。
- 然后对于这三种文件权限属性都是2元式的,要么行,要么不行,因此可以用0和1来表示,0表示没该权限,1反之。
- 然后对于其中的某一种用户文件权限身份,相当于都可以用三个0/1表示,那么整合起来相当于是一个八进制数,就那么简单。
文件权限更改之更改文件权限属性(chmod指令的语法与功能)
- 语法:chmod (u +/- r/w/x) (g +/- r/w/x) (o +/- r/w/x) 文件名
- 功能:更改文件权限属性 (只能由root 或者 文件拥有者完成)
实例演示
- 语法:chmod 三位八进制数(参照文件权限属性的八进制表示法) 文件名
- 功能:更改文件权限属性 (只能由root 或者 文件拥有者完成)
实例演示
文件权限更改之更改文件拥有者(chown指令的语法,功能与选项)
- 语法:chown 新任文件拥有者 文件名
- 功能:更改文件拥有者 (只能由root身份或者sudo指令提权)
- 选项: -R 递归修改目录及其下文件的拥有者
实例演示
补充:chown xxx:xxx 文件名 可以将文件拥有者与所属组一次性全部改掉
文件权限更改之更改文件所属组(chgrp指令的语法与功能)
- 语法:chgrp 新任文件所属组 文件名
- 功能:更改文件所属组 (只能由root身份或者sudo指令提权)
- 选项: -R 递归修改目录及其下文件的所属组
实例演示
(文件权限属性补充1)默认起始权限,实际起始权限,umask权限掩码以及换算关系
- 默认给普通文件的起始权限是666(文件权限属性的八进制表示法这个上面有讲过),默认给目录的起始权限是777。这个被称为文件默认起始权限属性值。
- 为什么我们创建出来一个普通文件或者目录,然后去查看他的文件权限属性,发现是664或775,为什么呢?
- 这里必须得引出一个新概念***:权限掩码umask***,凡是在umask当中出现的权限,不会在实际文件起始权限中出现。所以说就像一个过滤漏斗一样,尽管默认起始权限分别为777和666,但是当经过权限掩码过滤之后,由于权限掩码当中记录了一些权限,因此在umask当中出现的权限最终不会在文件权限当中出现。举个例子:
- 不难发现:他们的关系如下:
- umask 可以查看与修改:
- 可以用umask来限定创建文件时的实际起始权限,比方说我要使得创建出来的目录或者文件都是只是可写的,那么umask应该设为0555
(文件权限属性补充2)文件的删除问题
- 这个文件能不能被删除,注意我这边说的文件既包括目录,也包括普通文件。与他本身的权限属性没有关系,因为文件的权限决定不了他自己能不能被删。一个文件能否被删除并不是由文件本身决定,而是由这个文件所处的目录决定。
- 如果说这个文件所处的目录的w权限是放开的,那么用户可以对这个目录里面的各种文件进行删除,改动,创建等各种操作;如果说这个文件所处的目录的w权限是不放开的,那么这时候用户就干瞪眼没办法。
- 所以说文件能不能被删除,主要是看你这个文件所处的目录“保护不保护得了你”
(文件权限属性补充3)粘滞位与共享目录
- 首先***,不同用户之间是不可能去访问别的用户的家目录的***,因为你相当于是others,别人的家目录肯定是把others的w权限关掉的,基本上很大概率你是连家门口都进不去。
- 但有时候我们多个用户之间想要进行一个数据与文件的共享,因此这个共享文件肯定不能在任何一个人的家目录下面。
- 那么我们因此得在其他地方,比如说在根目录下面创建一个共享目录(共享目录的创建只能由root完成),然后大家都把需要共享的数据与文件放在这个目录下面。
- 由于这个共享目录相当于它的拥有者与所属组是root,说其他用户它的用户文件权限身份都是others,那么这个共享目录对于others的w权限是必须得打开的,因为各种各样的用户都需要传入文件。
- 但是又带来一个问题,当把others的w权限打开之后,那岂不是在这个共享目录下面任何一个用户都可以删其他人的文件了吗?这就容易造成互删的风险,为了确保每个人不能去删别人上传在共享目录下面的文件,那又不能把这个w权限给关掉,是一个新的概念就出现了,叫做粘滞位。
- 它实际上也是一个可执行权限(就是一种特殊的x权限),只不过他比较特殊而已,他是给目录设置的,注意:粘滞位是给目录设置的一种特殊的可执行权限。并且一般就是共享目录。
- 也就是说大家可以在目录中进行各自自己文件的增删查改,但是只允许文件拥有者或者root能够删除自己的文件,其他人一概不允许。
- 但实际上我们并不用去自己创建一个共享文件,在系统的根目录下面就有一个目录t mp,你会发现他就是带粘滞位的,因此不同用户想要去传递信息或通信的时候,可以将文件放在tmp目录下面