上一章学习了Linux用户与组的概念,以及创建用户和组,修改信息等,这次需要将用户应用在实际中,Linux系统中一切皆文件,文件也是基于用户进行权限管理的,因此需要了解文件与目录的权限管理基础。
一、文件与目录权限基础
1.1、文件的权限
在实际中我们通过ls命令,ls是list的意思,添加选项参数查询文件与目录的详细信息。
[root@localhost ~]# ls -la
总用量 3622728
dr-xr-x---. 13 root root 4096 12月 18 14:26 .
dr-xr-xr-x. 19 root root 268 12月 18 13:21 ..
drwxr-xr-x 6 root root 269 10月 24 16:59 alexanderzobnin-zabbix-app
-rw-------. 1 root root 1811 8月 27 2022 anaconda-ks.cfg
-rw-r--r--. 1 root root 176 5月 11 2019 .bashrc
drwx------ 3 root root 17 12月 29 2022 .cache
-rw-r--r--. 1 root root 100 5月 11 2019 .cshrc
-rw-r--r-- 1 root root 42910 10月 24 14:11 defaults.ini
drwx------ 3 root root 20 12月 21 2022 .docker
-rw------- 1 root root 28 12月 18 14:26 .lesshst
-rw-r--r-- 1 root root 1127290 9月 5 09:25 ModSecurity-3-master.zip
-rw-r--r-- 1 root root 34895 5月 21 2022 modsecurity-nginx-v1.0.3.tar.gz
drwxrwxr-x 12 keli keli 4096 9月 5 14:01 modsecurity-v3.0.10
lrwxrwxrwx 1 root root 3 9月 22 2021 vimdiff -> vim
每一列的意思分别如下:
[文件类型与权限][链接][拥有者][用户组][文件大小][修改日期][文件名称]
1、[文件类型与权限],每个文件第一列由十个字符构成,第一列显示文件、目录、链接文件类型,-为文件,d为目录,l为链接文件,类似windows的快捷方式。
文件权限格式为[rwx][rwx][rwx],9个字符分为3段,每段分为r读取,w编辑,x执行,第一段为文件拥有者权限,第二段为用户组成员权限,第三段为其他人的权限,如果没有权限使用-代表。
示例分析:
# rwx字符位置是固定的,没有对应的权限使用-字符表示
-rw-r--r--. 1 root root 176 5月 11 2019 .bashrc
- :表示这是一个文件
rw- :表示root用户有读取和编辑的权限,没有执行的权限,其实root有权对所有文件进行设置权限
r--:表示root用户组的其他人只有查看的权限
r--:除了root和root组的成员,其他人也能查看
2、[链接]表示下级链接的文件,如果是目录代表目录里面的文件和子目录
3、[拥有者]表示该文件的所有者
4、[用户组]表示该文件或目录所属的用户组
5、[文件大小]表示文件或者目录的大小,可以通过ls选项显示不同单位查看,K,M,G等
6、[修改日期]表示或者目录的最后修改日期
7、[文件名称]文件或目录的名称
文件的权限为:
-
r:可以通过ls查看到该文件 -
w:可以写入,编辑文件 -
x:可以执行该文件,涉及到文件类型后面讲解,如果是文本类型文件不需要x权限
1.2、目录的权限
目录的权限与文件基本一致,但是目录的x权限表示能否通过cd进入该目录。 示例:
# 切换chuck用户,查看/root,默认是---,表示其他用户无法进入该目录
[chuck@localhost /]$ ls -la
总用量 28
dr-xr-x---. 13 root root 4096 12月 21 11:19 root[chuck@localhost /]$ cd /root
bash: cd: /root: 权限不够
1.3、修改编辑权限
默认root用户可以修改所有文件权限,普通用户对自己所有者的文件有权限修改。
常用的修改命令: chown:修改文件的拥有者,默认用户创建的文件以自身为用户和用户组
[root@localhost opt]# touch test.txt
[root@localhost opt]# ls -la
-rw-r--r-- 1 root root 0 12月 21 11:56 test.txt# 使用chown修改所有者
[root@localhost opt]# chown chuck test.txt
[root@localhost opt]# ls -la
-rw-r--r-- 1 chuck root 0 12月 21 11:56 test.txt
chgrp:修改文件或目录的所属组
# 使用chgrp修改用户组,使用-R选项将目录和下级文件和目录都修改
[root@localhost opt]# chgrp it-group test.txt
[root@localhost opt]# ls -la test.txt
-rw-r--r-- 1 chuck it-group 0 12月 21 11:56 test.txt
上面是修改用户和组的命令,但是没有对具体的rwx进行修改。
使用chmod修改文件和目录的权限。格式为chmod [权限] 文件或目录
权限有两种表示方式:
-
数字格式 -
字符格式
数字格式:上次讲过文件的权限分为[用户][用户组][其他人],每个集合有[rwx]三个权限。数字表示将rwx字符对应为一个数字,分别将三个集合的数字进行相加就是文件的权限了。 对应关系:
权限 | 值 | 作用 |
---|---|---|
r | 4 | 读取 |
w | 2 | 编辑写入 |
x | 1 | 执行 |
示例:
-rw-r--r-- 1 chuck it-group 0 12月 21 11:56 test.txt
第一个字符表示为文件
[用户]权限为rw-,代入数字为4+2+0=6
[用户组]权限为r--,代入数字为4+0+0=4
[其他人]权限为r--,代入数字为4+0+0=4
所以test.txt的权限为644。# 修改权限的基础是用户和组已经配置正确了
# 手动修改权限,chmod [-R] 权限 文件或目录
[root@localhost opt]# chmod 777 test.txt
[root@localhost opt]# ls -la
-rwxrwxrwx 1 chuck it-group 0 12月 21 11:56 test.txt
字符格式:基于现有权限进行修改。
使用u(用户),g(组),o(其他人),a(全部)表示不同集合
使用+(加入权限),-(移除权限),=(设置权限)
使用r(读取),w(写入),x(执行)表示文件权限
格式为:chmod [ugoa] [+-=] rwx 文件或目录
,示例:
[root@localhost opt]# ls -la
-rwxrwxrwx 1 chuck it-group 0 12月 21 11:56 test.txt
# 移除用户组的x权限
[root@localhost opt]# chmod g-x test.txt
[root@localhost opt]# ls -la
-rwxrw-rwx 1 chuck it-group 0 12月 21 11:56 test.txt# 添加用户组的x权限
[root@localhost opt]# chmod g+x test.txt# 移除所有的x权限
[root@localhost opt]# chmod a-x test.txt # 手动设置权限
[root@localhost opt]# chmod u=rwx,g=rw,o=r test.txt
oot@localhost opt]# ls -la test.txt
-rwxrw-r-- 1 chuck it-group 0 12月 21 11:56 test.txt
上面两种格式都可以使用看个人习惯,命令后面可以添加不同的选项和参数实现不同功能,自行实验探索。
常用命令:
-
chown 修改用户所有者 -
chgrp 修改用户组 -
chmod 修改文件或目录权限
1.4、文件和目录的权限意义
在Linux中,文件和目录的权限具有重要意义。
对于文件,权限决定了哪些用户可以读取、写入或执行该文件。对于目录,权限同样重要,因为它决定了哪些用户可以查看、添加或删除目录中的文件。具体来说:
文件权限:
-
r(read):表示用户可以读取文件的内容。 -
w(write):表示用户可以编辑、新增或修改文件的内容。 -
x(execute):表示文件具有可执行权限,用户可以执行该文件。
目录权限:
-
r(read contents in directory):表示用户可以读取目录结构清单,即查看目录下的文件名数据。 -
w(modify contents of directory):表示用户可以新建新的文件和目录、删除已经存在的文件和目录、重命名已存在的文件或目录、转移该目录内的文件、目录位置等。 -
x(access directory):表示用户可以进入该目录,但目录本身不能被执行。
x(execute,执行权限)对于文件而言,表示具有执行文件的权限。这意味着如果一个文件具有x权限,那么用户可以执行该文件。然而,文件的x权限与文件的内容或属性没有直接关系。它仅仅表示用户是否具有执行该文件的权限。
二、文件类型
在上面的文件类型第一个字段显示了文件或目,现在学习下都有哪些文件类型。文件是存储实际数据的载体,目录是将一类文件进行存放的集合,目录本身不能执行。
文件类型:
-
常规文件
-
纯文本文件(ASCII),比如文本文件、配置文件等,可以通过cat查看 -
二进制文件(binary),可执行文件,如ls、cd、pwd等都是二进制文件,通过cat查看显示乱码,是经过编码的文件,可用于执行任务 -
数据文件(data),例如.sql,/var/log/wtmp等
-
-
目录,文件的分类存储
-
链接文件,类似于Windows的快捷方式,指向实际文件
-
设备,如硬盘、鼠标、U盘等,一般在/dev下面
Linux文件扩展名与Windows不同,它并没有特定的文件扩展名标识,而是通过文件内容和属性来决定其用途。就是就算赋予了文件x权限,如果是纯文本文件也没有意义,需要是例如脚本、可执行程序等才生效。
常见文件后缀:
-
.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:可变数据的目录,包含日志文件、缓存数据等。
总结:这次学习了Linux中的文件和目录,权限的查询与设置,权限的修改和变更。了解了不同的文件类型和常见的目录功能。
本文由 mdnice 多平台发布