linux file permission
文章目录
1. Linux文件管理
Linux中的所有数据都被保存在文件中,所有的文件被分配到不同的目录。目录是一种类似于树的结构,称为文件系统。
1.1. 文件类型
1、普通文件
普通文件是以字节为单位的数据流,包括文本文件、源码文件、可执行文件等。文本和二进制对Linux来说并无区别,对普通文件的解释由处理该文件的应用程序进行。
2、目录
目录可以包含普通文件和特殊文件,目录相当于Windows和Mac OS中的文件夹。
3、设备文件
Linux 与外部设备(例如光驱,打印机,终端,modern等)是通过一种被称为设备文件的文件来进行通信。Linux 输入输出到外部设备的方式和输入输出到一个文件的方式是相同的。Linux 和一个外部设备通讯之前,这个设备必须首先要有一个设备文件存在。
设备文件和普通文件不一样,设备文件中并不包含任何数据。
设备文件有两种类型:字符设备文件和块设备文件。
- 字符设备文件以字母"c"开头。字符设备文件向设备传送数据时,一次传送一个字符。典型的通过字符传送数据的设备有终端、打印机、绘图仪、modern等。字符设备文件有时也被称为"raw"设备文件。
- 块设备文件以字母"b"开头。块设备文件向设备传送数据时,先从内存中的buffer中读或写数据,而不是直接传送数据到物理磁盘。磁盘和CD-ROMS既可以使用字符设备文件也可以使用块设备文件。
1.2. 文件属性
可以使用ls -al
来查看当前目录下的所有文件列表。
|
|
每列含义说明:
- 第一列:文件类型。
- 第二列:表示文件个数。如果是文件,那么就是1;如果是目录,那么就是该目录中文件的数目。
- 第三列:文件的所有者,即文件的创建者。
- 第四列:文件所有者所在的用户组。在Linux中,每个用户都隶属于一个用户组。
- 第五列:文件大小(以字节计)。
- 第六列:文件被创建或上次被修改的时间。
- 第七列:文件名或目录名。
2. 文件权限和访问模式
2.1. 查看文件权限
Linux每个文件都有三类权限:
所有者权限(user)
:文件所有者能够进行的操作组权限(group)
:文件所属用户组能够进行的操作外部权限(other)
:其他用户可以进行的操作。
通过ls -l
的命令可以查看文件权限信息。
|
|
第一列-rwxr-xr--
包含了文件或目录的权限。
除了第一个字符-
或d
分别用来表示文件
或目录
外,其他的九个字符可以分为三组,分别对应所有者权限
,用户组权限
,其他用户权限
,即-|user|group|other
。
每组的权限又可分为三类:
-
读取(r)
,对应权限数字4
-
写入(w)
,对应权限数字2
-
执行(x)
,对应权限数字1
使用数字表示权限:
2.3. 权限的操作
2.3.1. chmod
chmod (change mode) 命令来改变文件或目录的访问权限,权限可以使用符号或数字来表示。
1、通过符号方式
可以使用符号来改变文件或目录的权限,你可以增加(+)和删除(-)权限,也可以指定特定权限(=)。
指定权限范围
- u (user):所有者权限
- g(group):所属用户组权限
- o(other):其他用户权限
符号 | 说明 |
---|---|
+ | 为文件或目录增加权限 |
- | 删除文件或目录的权限 |
= | 设置指定的权限 |
2.3.2. chown
chown 命令是"change owner"的缩写,用来改变文件的所有者
。
|
|
超级用户 root 可以不受限制的更改文件的所有者和用户组,但是普通用户只能更改所有者是自己的文件或目录。
2.3.3. chgrp
chgrp 命令是"change group"的缩写,用来改变文件所在的群组
。
|
|
2.4. SUID和SGID位
在Linux中,一些程序需要特殊权限才能完成用户指定的操作。例如密码文件/etc/shadow
。
Linux 通过给程序设置SUID(Set User ID)和SGID(Set Group ID)位来赋予普通用户特殊权限。当我们运行一个带有SUID位的程序时,就会继承该程序所有者的权限;如果程序不带SUID位,则会根据程序使用者的权限来运行。
例如:
|
|
上面第一列第四个字符不是’x’或’-’,而是’s’,说明 /usr/bin/passwd 文件设置了SUID位,这时普通用户会以root用户的权限来执行passwd程序。
小写字母’s’说明文件所有者有执行权限(x),大写字母’S’说明程序所有者没有执行权限(x)。
为一个目录设置SUID和SGID位可以使用下面的命令:
|
|
其他笔记
[[post/14.新语言学习记录/linux/linux基础原理杂记/linux_inode原理 | inode原理,软硬链接]] [[post/14.新语言学习记录/linux/linux基础原理杂记/Linux文件系统原理/linux_file_storage_inode|inode存储结构等]]
文章作者 LYR
上次更新 2021-08-17