首页 > 代码库 > 文件和目录权限概述
文件和目录权限概述
在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
通过设定权限可以从以下三种访问方式限制访问权限:只允许用户自己访问;允许一个预先指定的用户组中的用户访问;允许系统中的任何用户访问。同时,用户能够控制一个给定的文件或目录的访问程度。一个文件目录可能有读、写及执行权限。当创建一个文件时,系统会自动地赋予文件所有者读和写的权限,这样可以允许所有者能够显示文件内容和修改文件。文件所有者可以将这些权限改变为任何他想指定的权限。一个文件也许只有读权限,禁止任何修改。文件也可能只有执行权限,允许它像一个程序一样执行。
三种不同的用户类型能够访问一个目录或者文件:所有着、用户组或其他用户。所有者就是创建文件的用户,用户是所有用户所创建的文件的所有者,用户可以允许所在的用户组能访问用户的文件。通常,用户都组合成用户组,例如,某一类或某一项目中的所有用户都能够被系统管理员归为一个用户组,一个用户能够授予所在用户组的其他成员的文件访问权限。最后,用户也将自己的文件向系统内的所有用户开放,在这种情况下,系统内的所有用户都能够访问用户的目录或文件。在这种意义上,系统内的其他所有用户就是other用户类。
每一个用户都有它自身的读、写和执行权限。第一套权限控制访问自己的文件权限,即所有者权限。第二套权限控制用户组访问其中一个用户的文件的权限。第三套权限控制其他所有用户访问一个用户的文件的权限,这三套权限赋予用户不同类型(即所有者、用户组和其他用户)的读、写及执行权限就构成了一个有9种类型的权限组。
当我们在目录中使用 ll 或 ls -l 指令时 第一列会显示出目录下文件的权限
开头权限的格式是这个样子的
-rwxrwxrwx
或者
drwx--x--x
一共有10个字符:第一个 - 表示是一个普通文件, d 表示是一个目录
后面的 2-10的字符中 r 表示(read)可读,w表示(write) 可写,x 表示(executive)可执行
在2-10个字符中
左边三个字符表示所有者权限,中间三个字符表示与所有者同一组用户的权限,右边三个字符表示其它用户的权限。
具体表示如下:
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
下面举例说明:
-rwx------: 文件所有者对文件具有读取、写入和执行的权限。
-rwxr--r--: 文件所有者具有读、写与执行的权限,其他用户则具有读取的权限。
-rw-rw-r-x: 文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。
drwx--x--x: 目录所有者具有读写与进入目录的权限,其他用户只能进入该目录,却无法读取任何数据。
drwx------: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。
每个用户都拥有自己的专属目录,通常集中放置在/home目录下,这些专属目录的默认权限为rwx------:
执行mkdir命令所创建的目录,其默认权限为rwxr-xr-x,用户可以根据需要修改目录的权限。
把 rwx 用二进制来表示,有权限就用 1 表示,没有权限就有 0 表示,如:
rw- = 110, r-- = 100, r-x = 101 依次类推,之后再转化为十进制:
rw- = 110 = 4+2+0 = 6, r-x = 101 = 4+0+1=5, 所以可以直接理解为
r=4,w=2,x=1,用十进制式便是文件权限: rwx = 4+2+1 = 7, r-x = 4+1 = 5
如下:
644 = rw-r--r--
755 = rwxr-xr-x
631 = rw--wx--x
从前往后三组rwx代表的意思:user属主 group属组 other其它
如下:
chmod +x file 默认为添加属主的执行权限
chmod 755 file rwxr-xr-x
chmod g=rwx file chmod g=674 file rw-rwxr-- 属组改为rwx权限
chmod o-r file rw-r----- 减去其它用户的可读权限
我们创建的新文件权限为644 新目录权限为755,这是因为
linux里面,用一种umask的掩码似的东西限定新创建文件的权限,默认umask为0022(普通用户的umask通常为0002)
例子:我们创建一个文件:它的权限就是666-022=644
我们创建一个目录:它的权限就是777-022=755