这篇文章会讲述文件权限相关的内容,并告诉你为什么会出现“permission deny”和如何解决这个问题。
文件属性和文件权限
在谈文件权限之前我们先在终端键入ls -l
,看看会发生什么。
$ ls -l
total 40
-rw-r--r-- 1 adambee staff 589 12 9 11:28 asset-manifest.json
-rw-r--r-- 1 adambee staff 3758 12 9 11:28 favicon.ico
-rw-r--r-- 1 adambee staff 538 12 9 11:28 index.html
-rw-r--r-- 1 adambee staff 298 12 9 11:28 manifest.json
-rw-r--r-- 1 adambee staff 3646 12 9 11:28 service-worker.js
drwxr-xr-x 4 adambee staff 136 12 9 11:28 static
在这里,每一行信息都包含了某个文件或目录的基本信息,我们只讨论前十个字符,即-rw-r--r--
,依次给它们标号为1~10。
- 第一个字符
-
或d
,表示了文件类型,-
指文件,d
指目录,后面还会遇到其他的文件类型。 - 剩下九位我们分三组,每组三位
- 第一组
rw-
或rwx
表示文件所有者权限 - 第二组
r--
或r-x
表示用户组权限 - 第三组
r--
或r-x
表示其他人权限
- 第一组
现在知道了分类,我们再来看看权限分别是什么意思。
-
r
表示可读,对文件而言就是可以读取里面的内容,对目录而言就是可以看到当前目录下的文件或目录 -
w
表示可写,对文件而言就是可以对其进行修改,对目录而言就是可以在当前目录下创建新的文件或目录 -
x
表示可执行,对文件而言就是可以将其作为一个程序进行执行,对目录而言就是可以进入其中 -
-
表示没有对应的权限
举例来讲,drwxr-xr-x
表示这是一个目录,对文件拥有者有可读可写可执行的权限,对同组的用户有可读可执行的权限,对其他用户有可读可执行的权限。
改变文件属性和权限
既然权限这么重要,自然学习改变权限也是很有必要了解的。在这里和前文一样,我们只讨论前十个字符的操作。
可以试试这条命令:
$ chmod -x static
$ ls -ld static
drw-r--r-- 4 adambee staff 136 12 9 11:28 static
$ cd static
cd: permission denied: static
这时我们发现没有权限进入static目录了。
再来试试看这个命令:
$ chmod 755 static
$ ls -ld static
drwxr-xr-x 4 adambee staff 136 12 9 11:28 static
$ cd static
神奇的发现又可以进入static目录了。
其实以上就是我们常用来修改权限的两种方式。
符号类型
-
+
给文件或目录添加指定权限 -
-
删除文件或目录指定的权限 -
=
设置指定的权限
$ chmod u=rwx,g=rw,o=r index.html
$ ls -l index.html
-rwxrw-r-- 1 adambee staff 538B 12 9 11:28 index.html
上面这个例子里,我们给index.html文件的所有者rwx的权限,给同组用户rw的权限,给其他用户r的权限。
数字类型
为了方便起见,我们用八进制数字来指定文件的权限,用每种身份的权限的数字和来表示当前权限。
-
r
4 -
w
2 -
x
1
$ chmod 000 index.html
$ ls -l index.html
---------- 1 adambee staff 538 12 9 11:28 index.html
发现我们对index.html文件没有任何操作权限。
$ chmod 755 index.html
$ ls -l index.html
-rwxr-xr-x 1 adambee staff 538B 12 9 11:28 index.html
上面这个例子里,我们给index.html文件的所有者rwx的权限,给同组用户rx的权限,给其他用户rx的权限。
网友评论