一、What.
Linux系统中的文件或目录有几种访问权限?
在Linux系统中,每个文件或目录具有四种访问权限:可读(r)、可写(w)、可执行(x)和无权限(-)。
权限名 | 对于文件的意义 | 对于目录的意义 |
---|---|---|
r | 可以读取该文件内容 | 可以查看该目录下的完整文件信息 |
w | 可以编辑文件内容 | 可以对此目录下的所有的文件及目录进行相关的更改,也就是可以更改这个目录下的结构列表(这个要重视) 具体权利如下: 可以在此目录下创建新的文件或目录; 可以在此目录下删除存在的文件或目录(不论该文件的权限是什么,这点要格外注意!!!!)可以重命名及改变文件或目录的位置。 |
x | 文件就具有了可执行的权限——-注意:这里和window不一样,在win中,文件的可执行权限是通过扩展名表现出来的,如exe、bat等,但是在linux中文件的可执行权限是通过这个x决定的,与文件名没有什么关系。 | 目录没有可执行的权限,因此目录中x的功能就是允许别的用户进入这个目录。 |
Linux系统的权限控制基本原理是什么?
在 Linux 系统中,我们所有的操作实质都是在进行进程访问文件的操作。我们访问文件需要先取得相应的访问权限,而访问权限是通过 Linux 系统中的安全模型获得的。如果你想了解安全模型相关知识,请转至 http://www.infoq.com/cn/articles/basic-principle-of-Linux-privilege-control
二、Why.
什么情况下需要我们设置访问权限?
当在Linux系统中开发或部署管理项目时,需要设置相关的权限来与别人共享文件、来让外界访问查看等,以避免泄露重要信息、被误删或更改重要文件等。
三、How.
如何查看文件或目录的权限?
通过“ls -l”命令即可查看当前目录下的文件或目录的权限,”ls -l fileName “查看名为“fileName”的文件或目录的权限。命令执行结果的第一个字段表示权限,总共10位,例如:
-rwxr-xr-x
- 第1位:表示文件类型,-表示文件,d表示目录
- 2-4位:表示文件所有者的权限,u权限
- 5-7位:表示文件所有者所属组成员的权限,g权限
- 8-10位:表示所有者所属组之外的用户的权限,o权限
- 2-10位:权限总和有时称为a权限
如何修改文件或目录的权限?
1、通过数字表示法修改权限
数字表示法:将x、w、r分别用1、2、4来代表授予权限,没有授予则为0。例如:
原始权限 | 转换为数字 | 数字表示法 | 代表意义 |
---|---|---|---|
rwx–xr-x | (421)(001)(401) | 715 | 7:4+2+1,1:0+0+1,5:4+0+1 |
通过“chmod num fileName”将名为“fileName”的文件或目录的权限修改为“num”数字代表的权限,例如:
chmod 777 test
表示将test文件授予“rwxrwxrwx”权限,即对文件所有者、所有者所属组的成员和组之外的成员,都具有可读、可写和可执行的权限。
chmod 777 /test/*
表示将根目录下的test目录下的所有文件授予“rwxrwxrwx”权限,即对文件所有者、所有者所属组的成员和组之外的成员,都具有可读、可写和可执行的权限。
2、通过文本表示法修改权限
文本表示法:将2-4位(所有者)、5-7位(组成员)、8-10位(其他成员)、2-10位(所有人)四类用户分别用u、g、o、a来代表,权限仍用r、w、x表示,通过=、-、+分别表示对指定用户群重新制定新权限、设置减少权限、设置增加权限。
通过“chmod text fileName”对名为“fileName”的文件或目录的权限执行“text”文本代表的权限操作,例如:
chmod u+x,g-x,o=x test
表示对test文件的所有者加上执行权限,组成员减少执行权限,其他成员设置为执行权限。
chmod u+x,g-x,o=x /test/*
表示对根目录下的test目录下的所有文件的所有者加上执行权限,组成员减少执行权限,其他成员设置为执行权限。
3、设置文件或目录新建时的默认权限
> 通过设置默认权限,避免新建文件或目录时权限过大或过小。
通过设置4个八进制数字的权限掩码来控制默认权限,一般来说,新建文件的默认权限是0666,新建目录的默认值是0777。如果将权限掩码设置为0022,则每个新建文件的默认权限为0666-0022=0644,而目录的默认权限则为755。
通过“umask”查看当前的权限掩码,通过”umask num”将权限掩码改为”num”,例如:
umask 0002
表示将权限掩码设为“0002”,则再新建文件或目录的话,则文件的默认权限变为:0666-0002=0664,则目录的默认权限变为:0777-0002=0775 。