文件系统权限

科技工作者之家 2020-11-17

在电脑科学中,大多数现代文件系统都具有针对不同使用者或使用者组的管理访问权限的方法。这些系统控制着不同使用者对文件系统的可操作权限(包括读取或者改变文件内容)。

传统Unix文件系统权限类Unix系统中的权限管理分为三个不同的类别:文件拥有者、同组用户以及其他用户1。

在类Unix系统中,当一个新文件被创建时,其权限由创建该文件的进程所用的umask决定。

权限就是对文件或目录“加锁”,有不同权限的人才能进去不同的入口。

正常权限权限的查看其中rw-r--r--.就是这个文件的权限了,而后边的root root代表文件的属主和数组。

我们先来看一下权限用什么代表:

r:读权限(read)

w:写权限(write)

x执行(execute)

所属:

u:属主

g:属组

o:其他人

rw-r--r--9个位,分为三段,每段三个位,依次为r,w,x权限,三段分别为属主,属组,其他人三种类别的权限。
属主具有读写权限,属组有读权限,其他人有读权限,如果显示为-,则代表该类人没有此权限。那么root用户对此文件有读和写的权限,但是没有执行权限,什么是执行权限呢,比如说我们的Windows中的exe文件,能双击执行的就为可执行的,那么linux中,x则代表可执行,一般为脚本文件,或者是二进制文件(比如说ls命令)。
root组的用户对这个文件有只读权限,也就是不能更改和执行了,。对于不是root用户,和不属于root组的用户,则也是只有只读权限。

权限设置相关命令权限设置有两种方法:

模式法

对象+-=权限
对象:ugoa——a相当于ugo三种类别的人
权限:rwx

数字法

数字也可以代表权限,r使用4表示,w使用2表示,x使用1表示,1、2、4看着有规律啊,不错,的确rwx使用二进制表示的话,有权限使用1表示,没有使用0。具体只要在相应位上有权限,则二进制为1,则三个位组合起来,再从二进制转化为十进制则数字可计算出来权限。

umaskumask值用来消除创建文件时的相应位上的权限(从二进制方面理解);
新建文件: 666 - umask值就是新建文件的默认权限,因为新建文件默认没有执行权限的(没有1权限,所以只要有奇数权限则代表有执行权限),所以得到的权限必定是偶数,如果umask为奇数,则用666减去将得到奇数权限,如果所得结果某位存在奇数权限,则将其权限+1(因为从二进制方面理解,如果相应位没有权限,则多减了1,故要加上1来弥补这个权限)。

新建目录: 777 - umask值就是新建目录的默认权限;
管理员的umask 是 022;
普通用户的umask是 002。

权限的理解X的作用(x权限特殊形式)

针对目录增加x权限

对文件

无执行的文件,不会增加x权限

任意三种人有执行权限,也会增加x权限

文件与目录的权限与注意对目录的权限意义:

只有读:只能查看目录文件列表,不能访问文件,也不能cd目录(查看,删除)

只有执行:可以cd进去,不能ls,可以访问目录中的文件。执行是基础权限

写权取:配合x权限才生效

特殊权限SUIDSUID权限代表不管是谁执行此程序,将继承此程序所有者的权限。比如修改密码命令passwd,因此每个用户都可以用此命令修改自己的密码,由于其继承的是属主root用户的权限。

SGIDSGID作用于目录或可执行程序,作用于目录代表在此目录创建的文件或目录,默认的属组继承此目录的属组。

Sticky粘贴位权限,只能作用于目录上,只有自己才能删除自己创建的文件.使用t来表示,同样需要执行权限x,否则表现为T。有这样的需求,如果多人合作,希望整个团队的人都能更改这个目录的文件,但是这个目录的文件 不能被其他人删除,比如说系统的/tmp目录,这个目录每个用户都可以在里面创建文件,但是不能删除其他用户创建的文件,除了root。

特殊权限可以使用数字法特殊权限:

SUID:4

SGID:2

Sticky:1

SUID只能作用于二进制可执行程序,不能作用于目录,因为其对应的是程序,程序需要能执行。

删除文件要看其父目录是否有权限,否则尽管对一个文件有读写权限任然不能删除。删除的是目录项中的文件名。

参见访问控制表

chattr

chmod

文件系统

GID

lsattr

POSIX

UID

本词条内容贡献者为:

吴晨涛 - 副研究员 - 上海交通大学

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。