文件权限是处理基于Linux系统的关键部分,也是需要把握的重要方面之一。
由于Linux是一个支持多用户的操作系统,所以必须依靠权限系统来提供一定的安全和隐私。
如果Linux不包含权限系统,那么任何用户都可以访问任何其他用户的文件,这包括根系统文件。
通过权限,Linux可以控制谁可以与某个文件进行交互。
对于每一个文件,Linux都会维护一个记录,记录着哪个用户和组拥有它。除此之外,它还保存着权限位。
这些权限位告诉系统,用户、组或其他(Everyone else)可以对文件做什么,是写入文件、读取文件内容,还是执行文件。
权限是我们一些Raspberry Pi项目所依赖的东西,所以了解它们的工作方式是非常有帮助。
权限组
在深入研究权限之前,先来解释一下Linux中存在的不同权限组。
在Linux中,有三个不同的权限组,即用户、组和其他。
用户权限组
该组拥有当前被标记为文件或目录所有者的用户的权限。
通常情况下,这是创建文件的用户,但在Linux中可以通过使用chown命令改变所有权。
组别权限组
这个权限组用于定义适用于当前拥有文件或目录的组的所有成员的权限。
例如,如果拥有文件或目录的组称为 “pimylifeup”,那么属于该组的所有用户都会被分配这些权限。
和用户权限组一样,默认为创建文件/目录的用户的同一个组。
你可以利用chown或chgrp命令来改变文件或目录的组。
其他许可组
这个权限组是给不是文件或目录的所有者或组成员的用户的。
通常情况下,你会严格限制这个组使用的权限,因为任何用户都会被分配这些权限。
例如,你很可能不允许这个组中的任何人写入或执行一个文件。
Linux中的权限
在Linux中,有三种不同的权限,你可以为三个权限组分别指定。这三个权限分别是读、写和执行。
阅读权限
当对一个文件进行设置时,读取权限允许权限组打开并查看其内容。
当对一个目录进行设置时,它允许组列出该目录的内容。
写入权限
当对一个文件设置了写权限后,意味着该权限组将可以修改该文件。
当给目录分配了写权限后,权限组就可以对该目录中存储的文件进行添加、删除和重命名。
在处理写权限的时候,你还要考虑一些事情。
如果你允许一个组对一个文件进行写入,但不允许对一个目录进行写入,那么用户将只能修改该文件的内容。
如果没有该目录的写权限,权限组将无法添加、删除或重命名其中的任何文件。
执行权限
在文件上设置了执行权限后,该权限组就可以执行该文件。
如果该文件不是可执行程序,那么最好不要对该文件设置任何执行权限。
当对一个目录设置了执行权限时,就意味着一个权限组将可以改变进入该目录并访问它的任何文件。
查看Linux上的权限
在Linux中,你可以通过使用ls -l命令来查看文件的所有者和为其设置的权限。
例如,如果你使用这个命令来获取一个文件的详细信息,比如我们的例子文件叫samplefile,你会看到类似下面的详细信息。
你会看到ls -l命令会返回几列不同的信息。
在本指南中,我将只关注第一、第三和第四列,因为这些都与权限直接相关。
第1栏
第一列包含文件类型以及权限位。
列中的第一个字符是对文件类型的说明。如果这只是一个普通的文件,如我们的例子,那么这将是-,如果这是一个目录,那么显示的字符将是d。
还有一些其他的角色,这也是可以的,但我们会把它留到另一个指南。
接下来的9个字符是权限位。你可以把这9个字符分成3个字符集。
首个权限设置
第一组是用户所有者的权限。从我们的例子来看,这意味着所有者有以下三个权限位:rw-。
第二套权限
第二组是组主的权限。从这个例子中可以看出,该组的权限设置如下:r–。
第三套权限
最后也是第三组包含了其他人的权限。同样,从我们的例子中,你可以看到其他人组的权限与组主相同:r–。
许可字符
每一组都包含了三种可能设置的权限。
一个启用了所有权限的组看起来像rwx,其中r代表读,w代表写,x代表执行。
如果一个特定的权限被禁用,那么它的位置将被一个连字符(-)代替。
例如,如果该组没有写的权限,那么它的权限位将是r-x。而写一栏则用连字符代替。
Symbol | Usage | Description |
---|---|---|
r | 读权限 | 允许该权限组读取文件或目录的内容。 |
w | 写权限 | 允许该权限组向文件或目录写入内容。 |
x | 执行权限 | 允许权限组 “运行 “一个文件。 |
– | 禁用权限 | 阻止一个权限组运行被替换的权限。 |
第3栏
此列指定拥有文件或目录的用户的用户名。
为 “所有者 “权限组设置权限时,影响的就是这个用户。
例如,如果文件的所有者是一个叫pi的用户,他们设置了rw-的权限,那么这个用户就只能对该文件或目录进行读写。
第4栏
第四列指定拥有文件或目录的组的名称。
当你为 “组 “权限组设置权限时,只要不是文件/目录的所有者,就会影响该组的所有成员用户。
例如,假设我们有一个名为raspberry的组,其中有三个用户,分别是 “my”、”life “和 “up”。为这个组定义的权限将在与文件或目录交互时影响这三个用户。
更改Linux中的权限
在Linux中,你可以通过使用chmod命令来修改分配给文件或目录的权限。
要修改权限,你需要一个拥有超级用户权限的用户。
下面是一个在Linux上使用该命令的例子。
chmod u+w samplefile
通过这个命令,用符号符号来给名为samplefile的文件的所有者权限组写权限。
我将在的chmod命令基础指南中进一步探讨如何使用这个命令。
希望到这里,你已经对Linux中的权限工作有一个基本的了解。
如果在了解权限方面需要任何帮助,或者有任何反馈,那么请在下面留言。
欢迎转载,请留下出处链接:Labno3 » Linux为什么安全和强大,文件权限基础知识