Linux文件和目录权限解析

在Linux中,使用ls -al命令可以查看当前目录下所有文件的权限内容。

不同文件的权限

第一列的十个字符描述了这个文件的相关权限。

d表示了这个文件为目录,后面三组rwx分别描述了用户、用户组、其他人对该文件的权限。

那么对于文件和目录,其rwx权限分别具有什么含义呢?

文件权限

r权限指可以读这个文件中的具体内容。

w权限指可以修改文件的内容。(但不包括删除文件,删除文件的权限属于目录)

x权限指可以执行这个文件,例如python脚本文件,拥有x权限后,可以通过python xx.py进行执行。

目录权限

r权限指可以读这个目录的结构,也即是该目录下的文件名,可以使用ls命令列举出该目录下的所有文件。

w权限指可以修改目录的内容,包括了:重命名或删除这个目录下已经存在的文件或目录、在这个目录下创建新的文件、移动该目录下的文件。

x权限较为特殊,需要与文件的可执行权限进行区分。目录的可执行权限是指能够进入该目录下,即可以通过cd命令打开该目录。

示例

我们假设在lyg这个用户的主目录下有一个文件test.py,该文件的路径为/home/lyg/test.py

该文件的权限为:

test.py文件的权限

即该文件的所有者为root,所属组为rootlyg这个用户对该文件只有读权限。

所以lyg用户只能读取该文件的内容,而无法修改文件内容也无法执行。

无w权限,所以修改不被允许

如上图,尝试往文件中添加内容失败。

而对于/home/lyg这个目录,lyg的权限为可读可写可执行:

lyg用户具有对lyg目录的rwx权限

所以lyg用户拥有修改这个目录下文件的权限,我们尝试给test.py重命名。

具有目录的w权限,所以可以重命名

进阶

对于如上示例中的test.py文件,lyg用户权限为r--,明显是不具有x权限的。

我们首先查看test.py的内容:

打印hello world!

只输出一行hello world

如果用户lyg去执行这个文件,由于不具有可执行权限,应该是无法打印输出的。

然而在真正执行时,使用python test.py

调用python解释器进行执行

程序却正常输出了。

这是由于python test.py命令调用了解释器去读取test.py这个文件,所以我们只要具有解释器的可执行权限test.py读取权限即可执行了。

如果去掉test.py的读权限,再进行执行:

无读权限时无法执行

可以看到,由于不具有读权限而在执行时报错。

我们重新给lyg用户设置test.py文件的读权限,再使用另外一种方式运行这个文件:

./命令的执行效果

./test.py命令则是直接执行这个文件,由于不具有x权限而未执行成功。

./命令的具体含义可参考这篇博客。

你可能感兴趣的:(Linux文件和目录权限解析)