在Linux系统下,一切皆文件,既然是文件,那不同的文件便具有其相对应的权限,否则,任意一个用户都可以对所有文件进行修改,若修改了配置文件,后果不堪设想。
因此,在Linux中,我们根据不同的访问者设置相对应的权限。
在Linux中,我们可以将文件的访问者分为三类,针对这三类访问者我们可以对他们设置不同的权限。
文件访问者的分类:
- 文件和文件目录的所有者:u(User)
- 文件和文件目录的所有者所在的组中的用户:g(Group)
- 其他用户:o(Others)
文件的基本权限:
- 读(r):具有读取文件内容的权限
对目录来说,具有浏览目录信息的权限 - 写(w):具有修改文件的权限
对目录来说,具有删除移动目录内文件的权限 - 执行(x):具有执行文件的权限
前提是文件必须可执行;对目录来说,具有进入目录的权限
上图中,第一个zx为该文件的属主名,第二个zx为文件的所属组名。
最前面的十个字符:
第一个字符:d为文件类型,代表目录
接下来每三个字符为一组,按照读、写、执行的顺序,“-”表示不具备该权限。
2–4个字符:表示文件所有者的权限。该例为可读可写可执行。
5–7个字符:表示文件所属组的权限。该例为可读可执行。
8–10个字符:表示其他人的权限。该例为可读。
修改文件访问权限
命令:chmod [参数] 权限 文件名
参数:R表示递归的修改目录中所有文件的权限
v表示显示整个修改过程
具体chmod修改文件权限的方式分为两种。
1. 针对某一类访问者设定权限
命令格式:chmod 用户表示符 +/-/= 文件权限 文件名
+表示为用户增加文件权限,-表示取消用户的权限,=表示赋予用户这个权限。
用户符号:u表示所有者,g表示所有者所在的组,o表示其他人,a表示所有人。
2.使用三位数的八进制
命令格式: chmod xxx(权限) 文件名
其中从左向右,第一个x表示属主的权限,取值是0~7,0就表示”—”,7表示”rwx”。 第二个x表示属组的权限,第三个x表示其他人的权限。
666表述rw-rw-rw-
普通文件的起始权限为:666
目录文件的起始权限为:777
修改文件所属者
命令:chown [参数] 用户名 文件名
参数:R表示递归的修改目录中所有文件的所有者
v表示显示整个修改过程
将文件夹code的所属者由zx改为root
修改文件所属组
命令:chgrp [参数] 用户名 文件名
参数:R表示递归的修改目录中所有文件的所有者
v表示显示整个修改过程
将文件夹code的所属组由zx改为root
进入一个目录所需权限
当前是在超级用户下,创建目录test,修改目录的权限为000(不可读不可写不可执行),此时超级用户可进入该目录。
修改文件所属者为普通用户zx后,即使权限仍为000,超级用户仍然可以访问目录。
接下来切换为普通用户。
在普通用户下,新建文件test2。
当前用户为普通用户,权限为000时,访问目录提示权限不够。
分别为test2读、写权限时,仍然因权限问题无法访问,当为其加上可执行权限时,访问成功。
虽然访问成功,但是当读取目录内文件时,又一次出现权限不够问题。
接下来,为test2加上读和执行的权限后,可进入目录,且可读取其内容。
因此,超级用户下创建的目录,不管有没有权限,都可进入目录
普通用户下创建的目录,需要对拥有者有可执行权限才能进入目录,若要读取目录中的文件列表,则要对拥有者开放读权限
在目录下创建文件
若要在目录下创建文件,需要哪些权限呢?
在只有读和可执行权限的情况下,在test2内创建文件时显示权限不够。
接下来修改权限为写和可执行。
此时可以创建文件,但在访问文件时,权限不够。
当目录具有可读可写可执行的权限时,可以在文件内写入并访问文件。
因此,在超级用户下,不管目录对拥有者是否开放权限,都可以在目录下创建文件
在普通用户下,要在目录下创建文件,需要目录对拥有者开放写权限和可执行权限,若要读取目录下的文件列表,则要对拥有者开放读权限