Linux系统下文件权限以及chmod使用

Linux系统下文件权限

引言

我们都知道Linux相对来说是比较安全的系统,而且Linux系统对权限和密码管理也是比较严格的,对于不同的用户同一个文件可能会有不同的使用权限。而用户权限最高的就是老大root。有些文件在不同系统或者用户目录拷贝过程中可能会改变其原有的权限,导致文件无法访问或执行。这个时候就需要chmod来解决权限问题。

文件权限

Linux系统中,每个文件由特定的用户和组拥有,并为三种不同的类别的用户分配权限访问权限:
. 文件所有者
. 群组成员
. 其他人(其他所有人)
而每个用户又分了3种文件权限,分别是读权限、写权限、执行权限。

1.读权限
表示文件是可读的。可以用文本编辑器打开,或者cat其内容。
如果是文件夹可以ls其中目录内容。
2.写权限
表示可修改该文件。
如果是文件夹可以更改目录内容。用户可以做新建、删除、移动、重命名等操作。
3.执行权限
表示该文件是可执行的。

我们以下图为例:
Linux系统下文件权限以及chmod使用
第一个字符显示文件类型:
常规文件:(-)
目录:(D)
符号链接或其他文件:(L)
接着其他9个字符表示文件权限,3个字符一组。第一组所拥有者权限,第二组是组权限,第三组是其他*限。
Linux系统下文件权限以及chmod使用
我们可以看到权限是3个组权限共同决定的,上图表示的权限是777,
其中一个组的7=4(读)+2(写)+1(执行)。如果是0表示无权限。
eg:744,表示该文件所有者有读、写、执行权限,文件组有读权限,其他人有读权限。
. 属主:rwx =4+2+1=7
. 群组成员:r-- =4+0+0=4
. 其他人:r-- = 4+0+0=4

一般执行权限是使用3位数即可,当然也可是4位数。比如:0744,其中第一位数0表示 nochanges
0744等同于744,执行加权限命令:
chmod 744 filename
如果要对一个目录下所有文件进行加权限操作的话,我们可以使用递归。
chmod -R 744 dir
需要注意的一点是只有root用户或者文件所有者或者sudo权限的用户才能更改文件权限。
chmod 777 权限需要慎用,因为这样导致任何人都可以修改你的文件,这样是不太安全的。