Linux 基础:文件与目录权限
Linux系统中一切皆文件,文件也是基于用户进行权限管理的,因此需要先了解文件与目录的权限管理基础
文件权限
在实际中我们通过以下命令和添加选项参数来查询文件与目录的详细信息
ls -la # 查看当前所有目录及权限(包括隐藏文件夹)
每一列的意思分别如下:
[文件类型与权限] [链接] [拥有者] [用户组] [文件大小] [修改日期] [文件名称]
看不懂?举个例子:
文件类型与权限 | 链接 | 拥有者 | 用户组 | 文件大小 | 修改日期 | 文件名称 |
---|---|---|---|---|---|---|
drwxr-xr-x | 2 | root | root | 4096 | Jan 19 21:36 | home |
1.1 文件类型与权限
每个文件第一列由十个字符构成,第一列显示文件、目录、链接文件类型,-为文件,d为目录,l为链接文件,类似Windows的快捷方式。
1.2 文件权限
r(read):表示用户可以读取文件的内容。
w(write):表示用户可以编辑、新增或修改文件的内容。
x(execute):表示文件具有可执行权限,用户可以执行该文件。
1.3 文件夹权限
r(read contents in directory):表示用户可以读取文件夹结构清单,即查看文件夹下的文件名数据。
w(modify contents of directory):表示用户可以新建新的文件和文件夹、删除已经存在的文件和文件夹、重命名已存在的文件或文件夹、转移该文件夹内的文件、位置等。
x(access directory):表示用户可以进入该文件夹,但本身不能被执行。
x(execute,执行权限)对于文件夹而言,表示具有执行文件的权限。这意味着如果一个文件具有x权限,那么用户可以执行该文件。然而,文件夹的x权限与文件的内容或属性没有直接关系。它仅仅表示用户是否具有执行该文件的权限。
1.4 权限格式
文件权限格式为[rwx][rwx][rwx]
9个字符分为3段,每段分为r读取,w编辑,x执行
第一段为文件拥有者权限,第二段为用户组成员权限,第三段为其他人的权限,如果没有权限使用-代表
rwx字符位置是固定的,没有对应的权限使用-字符表示
当权限拥有者为root时,权限对其限制形同虚设
以上面的例子,也就是说:
home (d[rwx][r-x][r-x])是一个文件夹(d)
拥有者(root)拥有所有权限(rwx)
用户组(root)拥有读取、执行权限,没有编辑权限(r-x)
其他用户和组拥有读取、执行权限,没有编辑权限(r-x)
1.5 链接
表示下级链接的文件数,如果是目录代表目录里面的文件和子目录
上图所示,home文件夹下有两个项
1.6 拥有者、用户组、文件大小、日期、名称
即表示该文件的所有者、所在组、文件大小(K)、日期、名称
如上述例子
文件大小表示文件或者目录的大小,可以通过ls选项显示不同单位查看,K,M,G等
修改日期表示或者目录的最后修改日期
目录权限
目录的权限与文件基本一致,但是目录的x权限表示能否通过cd进入该目录
root 用户无视
修改编辑权限
3.1 修改用户权限
默认root用户可以修改所有文件权限,普通用户对自己所有者的文件有权限修改。
常用的修改命令:
chown # 修改文件的拥有者 默认用户创建的文件以自身为用户和用户组
如图示: 文件 coke.txt 成功由root所属改为coke用户所属
3.2 修改组权限
常用的修改命令:
chgrp # 修改用户组所属,若使用-R参数则将目录和下级文件和目录都修改
如图示: 文件夹 cokeserver 成功由root组所属改为coke组所属
3.3 修改文件/文件夹权限
上面是修改用户和组的命令,但是没有对具体的rwx进行修改。
使用该命令来修改文件和目录的权限:
chmod # 修改文件/文件夹权限 配合-R参数
3.3.1 字符格式表示权限
字符格式有点头大,听我慢慢讲来
该命令的参数如下:
符号表示 | 用户 | 组 | 其他人 | 全部 |
---|---|---|---|---|
u | g | o | a | |
加权 | 减权 | 设权 | ||
+ | - | = | ||
读取 | 写入 | 执行 | ||
r | w | x |
格式为:
chmod [ugoa] [+-=] rwx 文件或目录
示例:
此时的文件为 rwxrwxrwx 权限
现在,移除所属用户组的x权限
添加所属用户组的x权限
移除所有的x权限
没看懂?没关系,还有下一个方法 ↓
3.3.2 数字格式表示权限
权限除字符表示外还有另一种更快捷的表示方式(推荐):
数字格式
数字表示将每个rwx组对应为一个数字,分别将三种权限的数字进行相加和组合即为该文件的权限
对应关系:
权限 | 值 | 作用 |
---|---|---|
r | 4 | 读取 |
w | 2 | 写入/编辑 |
x | 1 | 执行 |
- | 0 | 无权限 |
示例如下:可见 cokeserver 文件夹由原来的
755 ([4+2+1][4+1][4+1] | [rwx][r-x][r-x])权限
改为
600 ([4+2+0][0+0+0][0+0+0] | [rw-][---][---])权限
是不是很简单?
文件类型
4.1 常规文件
如下:
纯文本文件(ASCII),比如文本文件、配置文件等,可以通过cat查看
二进制文件(binary),可执行文件,如ls、cd、pwd等都是二进制文件,通过cat查看显示乱码,是经过编码的文件,可用于执行任务
数据文件(data),例如.sql,/var/log/wtmp等
目录,文件的分类存储
链接文件,类似于Windows的快捷方式,指向实际文件
设备,如硬盘、鼠标、U盘等,一般在/dev下面
Linux文件扩展名与Windows不同,它并没有特定的文件扩展名标识,而是通过文件内容和属性来决定其用途
就是就算赋予了文件x权限,如果是纯文本文件也没有意义,需要是例如脚本、可执行程序等才生效
4.2 常见文件后缀
如下:
.tar:经过打包的压缩文件,可以用tar命令解压。
.tar.gz、.tgz:经过打包的压缩文件,可以用tar命令解压。
.zip:经过打包的压缩文件,可以用unzip命令解压。
.bz2:bzip2程序压缩的文件。
.xz:程序压缩文件。
.sh:脚本或批处理文件(scripts),因为批处理文件是使用shell写成的,所以扩展名就编城 *.sh。
.pl:perl语言文件,通过perl语言开发的程序。
.py:python语言文件,通过python语言开发的程序。
.html、.htm、.php、.jsp、.do:网页相关文件,分别代表html和php语法的网页文件。
.conf:系统服务的配置文件。
.rpm:rpm安装包文件。
常见目录
如下是根目录文件或文件夹的表示内容:
/bin:二进制可执行文件的目录,包含Linux系统中所有重要的命令和工具
/boot:存放系统核心文件以及启动时必须读取的文件,包括Linux内核的二进制映像
/dev:设备文件目录,包含与硬件设备和外部设备的连接点,例如硬盘、USB设备、串口等
/etc:系统配置文件目录,包含各种系统和应用程序的配置文件
/home:用户主目录的基础目录,每个用户都有一个对应的子目录
/lib:库文件的目录,包含共享库和内核模块
/lib64:存放64位架构的库文件的目录
/media:可移动媒体设备(如光盘、USB设备等)挂载点的目录
/mnt:临时挂载点的目录,用于临时挂载其他文件系统或网络共享
/proc:虚拟文件系统,包含当前运行进程和内核信息的文件
/run:在系统启动期间存放临时运行时数据的目录
/srv:服务相关数据的目录,用于存放特定服务所需的数据
/tmp:临时文件目录,用于存放临时文件和临时数据
/var:可变数据的目录,包含日志文件、缓存数据等