一、权限简介
我们可以通过 ls -l 命令查看文件的类型、文件大小、文件权限详细信息,例如:
$ ls -l
drwxrwx--- root root 4096 2月 25 21:53 soft
-rw-r--r-- root root 6140 11月 12 15:58 file
其中第一个d代表的是文件的类型,rwxrwx--- 代表的是权限信息,第一个 root 代表的是该文件的所属用户,第二个 root 代表的是该文件所属的用户组,4096代表的是该文件的大小
分解一下,如下图所示:
文件类型 文件所属用户权限 文件所属组权限 其它用户权限 文件所属用户 文件所属组 文件大小
d rwx rwx --- root root 4096
其中:
1、文件类型d表示是的目录
Linux文件类型:
-:普通文件
d:目录文件
l:符号链接
c:字符设备文件
b:块设备文件
2、rwx表示的是读(r)、写(w)、执行(x),没有权限(-)
3、用户分三类,分别为:文件所属者(u),文件所属组(g),其它用户(o)
二、普通文件权限
读权限(r):可以查看文件内容,大小,类型信息
写权限(w):可以修改文件内容
执行权限(x):可以执行文件(脚本文件)
三、目录文件权限
读权限(r):可以查看目录中的文件名列表(仅能查看文件名,不能查看内容、大小等信息)
写权限(w):可以对目录及目录下所有文件执行:新建、复制、删除、重命名操作
执行权限(x):可以进入目录
目录常用的权限组合为:读执行(rx)及读写执行(rwx)
注:如果想在目录下进行新建文件、复制文件、删除文件、重命名文件,则必须拥有目录的写权限,因为文件名是存储在目录空间中的,而文件内容才是存储在文件空间中,如果没有目录的写权限,则没有文件名的修改权限,也就无法进行新建、复制、删除、重命名操作
四、文件权限分配
如果想更改文件的权限,可以通过 chmod 指令来进行,查看该指令帮助,可以使用
$ man chmod
或者使用
$ chmod --help
我们先新建一个文件,使用名为 file 的文件
$ touch file
使用 ls -l 查看下新建文件的详细信息
$ ls -l
-rw-r--r-- root root 0 2月 26 21:30 file
可以看到 file 为普通文件,root用户是该文件的所有者,root组是该文件的所属组,其中root用户拥有读写权限,root组用户及其它用户只拥有读权限
我们可以使用chomd为文件进行权限的分配,使用u、g、o、a代表不同的用户类别,其中a代表全部用户;使用 +、-、=来分配权限,其中+表示增加权限,-表示删除权限,=表示设置权限
1、假设我们想为file所属的用户添加执行权限,也就是x权限,那么我们可以使用:
$ ls -l
-rw-r--r-- root root 0 2月 26 21:30 file
$ chmod u+w file
$ ls -l
-rwxr--r-- root root 0 2月 26 21:30 file
可以看到root用户已经拥有了file文件的x(执行)权限
2、假设我们想为file文件,删除其它用户的读权限,那么我们可以使用:
$ ls -l
-rwxr--r-- root root 0 2月 26 21:30 file
$ chmod o-r file
$ ls -l
-rwxr----- root root 0 2月 26 21:30 file
可以看到其它用户的r(读)权限,已经被删除
3、假设我们想为file文件,设置其所属组的权限为写和执行权限,那么我们可以使用
$ ls -l
-rwxr----- root root 0 2月 26 21:30 file
$ chmod g=wx file
$ ls -l
-rwx-wx--- root root 0 2月 26 21:30 file
可以看到所属组用户的r(读)权限已经被删除,权限被设置为了w(写)和x(执行)
五、文件权限的快捷操作
使用u、g、o代表用户类型,+、-、=设置权限,r、w、x代表权限类型,这三种组合来设置权限,比较麻烦,linux有一种更加便捷的方式来设置权限,也就是使用数字
其中r用4表示,w用2表示,x用1表示,至于为何是421,因为1代表是的二进制1,2代表的是二进制11,4代表的是二进制111,该三组数字的组合相当巧妙,三组任意相加都不会产生重复
可以使用 chmod + 数字 + 文件,来便捷设置权限
下面举例子来说明:
1、为file文件所属用户赋于读写执行权限,为file文件所属组用户赋于读执行权限,为其它用户赋于读执行权限,可以使用下列执行便捷设置:
$ chmod 755 file
$ ls -l
-rwxr-xr-x root root 0 2月 26 21:30 file
因为7=4+2+1,所以7代表的是最高权限,也就是读+写+执行
因为5=4+1,所以5代表的是读+执行权限
也就是说 chmod 755 file 指令等同于 chmod u=rwx,g=rx,o=rx file,相比使用字母加符号的方式,数字设置权限显然方便的多
2、假设不同时使用三个数字结合的话,假设只使用一个数字,则该数字代表其它用户的权限,文件所属用户及所属组用户权限将变为0,举个例子:
$ chmod 7 file
$ ls -l
-------rwx root root 0 2月 26 21:30 file
也就是说 chmod 7 file指令等同于 chmod 007 file
同理,假设使用两个数字结合,则第一个数字代表所属组用户权限,第二个数字代表其它用户权限
$ chmod 47 file
$ ls -l
----r--rwx root root 0 2月 26 21:30 file
也就是说 chmod 47 file指令等同于 chmod 047 file