Menu Close

Linux 文件属性管理

Linux系统是一种典型的多用户系统,因为Linux可以直接用于大型机和服务器。 但这引起了安全方面的担忧,因为一些恶意的用户可能会破坏,更改或删除关键数据。 为了获得有效的安全性,Linux将授权分为两个分类:

  1. Ownership (拥有)
  2. Permission (允许)

Linux文件的所有权

Unix / Linux系统上的每个文件和目录都对以下三种所有者分配了不同权限:

用户 –  用户是文件的所有者。 默认情况下,创建文件的人成为其所有者。 因此,用户有时也称为所有者。

用户组 – 一个用户组可以包含多个用户。属于一个组的所有用户将对该文件具有相同的访问权限。假设您有一个项目,其中许多人需要访问文件。您可以将所有用户添加到一个组,然后将组权限分配给文件,而不是手动为每个用户分配权限,这样只有该组成员,没有其他人可以读取或修改文件。

其他 –  有权访问文件的任何其他用户。此人既未创建文件,也未属于可以拥有该文件的用户组。实际上,这意味着其他所有人。因此,当您为其他人设置权限时,也称为为世界设置权限。

现在,出现了一个大问题,Linux如何区分这三种用户类型,以便用户“ A”不能影响包含其他用户“ B”重要信息/数据的文件。就像您不希望您的Linux计算机上的同事查看图像一样。这是设置权限的地方,它们定义用户的行为。

让我们了解Linux上的Permission系统。

权限

Linux系统中的每个文件和目录都具有以下针对上述3个所有者定义的3个不同权限。

  1. 读(Read): 此权限授予您打开和读取文件的权限,目录的读取权限使您能够列出其内容;
  2. 写(Write):具有写入权限,可以授予您修改文件内容的权限。目录的写许可权使您可以添加,删除和重命名目录中存储的文件。如果您只有文件的写权限,但对文件存储目录没有写权限,这种情况下,您能够修改文件内容。但是您将无法重命名,移动或从目录中删除文件。
  3. 执行(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的参数,那么该目录下的所有文件的属组都会更改。

注意:

  1. 文件/ etc / group包含系统内所有的用户组
  2. 可以使用命令”groups”查找您所属的所有用户组
  3. 可以使用命令”newgrp”来产生新的用户组,可以作为默认组以外的组的成员。
  4. 两个组不能拥有相同文件。
  5. Linux没有嵌套组,一个组不能隶属于另一个组。

摘要:

  1.  作为多用户系统的Linux平台,可以使用权限和所有权来确保安全性;
  2. Linux系统上有三种用户类型,即。 用户,组和其他;
  3. Linux将文件权限划分为r,w和x表示的读,写和执行;
  4. 可以通过“ chmod”命令更改文件的权限,该命令可以进一步分为“绝对”模式和“符号”模式
  5. “ chown”命令可以更改文件/目录的所有权。 使用以下命令:chown用户文件或chown user:组文件
  6. “ chgrp”命令可以更改组所有权chrgrp组文件名

 

1 Comment

  1. ZhiHui Xinpian

    将 ex1.py 设定为只有该文件拥有者可以执行 :

    chmod u+x ex1.py
    将目前目录下的所有文件与子目录皆设为任何人可读取 :

    chmod -R a+r *

Comments are closed.