Linux系统是一种典型的多用户系统,因为Linux可以直接用于大型机和服务器。 但这引起了安全方面的担忧,因为一些恶意的用户可能会破坏,更改或删除关键数据。 为了获得有效的安全性,Linux将授权分为两个分类:
- Ownership (拥有)
- Permission (允许)
Linux文件的所有权
Unix / Linux系统上的每个文件和目录都对以下三种所有者分配了不同权限:
用户 – 用户是文件的所有者。 默认情况下,创建文件的人成为其所有者。 因此,用户有时也称为所有者。
用户组 – 一个用户组可以包含多个用户。属于一个组的所有用户将对该文件具有相同的访问权限。假设您有一个项目,其中许多人需要访问文件。您可以将所有用户添加到一个组,然后将组权限分配给文件,而不是手动为每个用户分配权限,这样只有该组成员,没有其他人可以读取或修改文件。
其他 – 有权访问文件的任何其他用户。此人既未创建文件,也未属于可以拥有该文件的用户组。实际上,这意味着其他所有人。因此,当您为其他人设置权限时,也称为为世界设置权限。
现在,出现了一个大问题,Linux如何区分这三种用户类型,以便用户“ A”不能影响包含其他用户“ B”重要信息/数据的文件。就像您不希望您的Linux计算机上的同事查看图像一样。这是设置权限的地方,它们定义用户的行为。
让我们了解Linux上的Permission系统。
权限
Linux系统中的每个文件和目录都具有以下针对上述3个所有者定义的3个不同权限。
- 读(Read): 此权限授予您打开和读取文件的权限,目录的读取权限使您能够列出其内容;
- 写(Write):具有写入权限,可以授予您修改文件内容的权限。目录的写许可权使您可以添加,删除和重命名目录中存储的文件。如果您只有文件的写权限,但对文件存储目录没有写权限,这种情况下,您能够修改文件内容。但是您将无法重命名,移动或从目录中删除文件。
- 执行(Excute):在Windows中,可执行程序通常具有扩展名“ .exe”,并且可以轻松运行。在Unix / Linux中,除非设置了执行权限,否则无法运行程序。如果未设置执行许可,您可能仍然可以查看/修改程序代码(设置了读写权限),但无法运行它。
从左至右用0-9这些数字来表示。
第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中,第1、4、7位表示读权限,如果用”r”字符表示,则有读权限,如果用”-“字符表示,则没有读权限;
第2、5、8位表示写权限,如果用”w”字符表示,则有写权限,如果用”-“字符表示没有写权限;第3、6、9位表示可执行权限,如果用”x”字符表示,则有执行权限,如果用”-“字符表示,则没有执行权限。
管理文件属性的命令
chmod 命令 – 更改文件9个属性
Linux文件属性有两种设置方法,一种是数字,一种是符号。
1.使用数字(也称绝对模式)改变文件权限
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
- r:4
- w:2
- x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是:
- owner = rwx = 4+2+1 = 7
- group = rwx = 4+2+1 = 7
- others= — = 0+0+0 = 0
所以等一下我们设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的。
具体数字和文件属性关系如下面表格:
Number | 文件属性(Permission Type) | 符号(Symbol) |
---|---|---|
0 | 没有权限(No Permission ) | — |
1 | 执行 (Execute) | –x |
2 | 写(Write) | -w- |
3 | 执行(Execute) + 写(Write) | -wx |
4 | 读(Read) | r– |
5 | 读 (Read )+ 执行 (Execute) | r-x |
6 | 读(Read) + 写 (Write) | rw- |
7 | 读(Read) + 写 (Write) + 执行 (Execute) | rwx |
chmod -R xyz file
选项与参数:
- xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
- -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
那如果要将权限变成 -rwxr-xr– 呢?那么权限的分数就成为 [4+2+1][4+2+0][4+0+0]=764
chmod 764 sample
就可以把sample文件的权限变成了“-rwxrw-r– ”
2. 符号类型改变文件权限
还有一个改变权限的方法,就是使用符号改变特定的用户文件权限。
从之前的介绍中我们可以发现,基本上就九个权限分别是:
(1)user
(2)group
(3)others
那么我们就可以使用 u, g, o 来代表三种身份的权限!
此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看:
此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看:
chmod | u g o a |
+(加入) -(除去) =(设定) |
r w x |
文件或目录 |
chown 改变文件所有权
语法:
chown [–R] 属主名 文件名 chown [-R] 属主名:属组名 文件名
chgrp:更改文件属组
语法:
chgrp [-R] 属组名 文件名
参数选项
- -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
注意:
- 文件/ etc / group包含系统内所有的用户组
- 可以使用命令”groups”查找您所属的所有用户组
- 可以使用命令”newgrp”来产生新的用户组,可以作为默认组以外的组的成员。
- 两个组不能拥有相同文件。
- Linux没有嵌套组,一个组不能隶属于另一个组。
摘要:
- 作为多用户系统的Linux平台,可以使用权限和所有权来确保安全性;
- Linux系统上有三种用户类型,即。 用户,组和其他;
- Linux将文件权限划分为r,w和x表示的读,写和执行;
- 可以通过“ chmod”命令更改文件的权限,该命令可以进一步分为“绝对”模式和“符号”模式
- “ chown”命令可以更改文件/目录的所有权。 使用以下命令:chown用户文件或chown user:组文件
- “ chgrp”命令可以更改组所有权chrgrp组文件名
将 ex1.py 设定为只有该文件拥有者可以执行 :
chmod u+x ex1.py
将目前目录下的所有文件与子目录皆设为任何人可读取 :
chmod -R a+r *