持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情
Hi~,我是一碗周,如果写的文章有幸可以得到你的青睐,万分有幸~
🍈 写在前面
先来介绍一下新开的这个专栏:《前端&运维那点事儿》将会从前端的角度,依次学习Linux→Nginx→Docker→持续集成→k8s,从而打造一个属于站在前端角度的运维专栏。
在上一篇文章中,介绍了用户和用户组的相关内容,这篇文章介绍一下与用户息息相关的文件权限管理;
这篇文章中的主要内容如下:
-
ls -l回显详解; -
文件权限
-
文件夹权限
-
修改权限相关的命令
🍓 先说概念
在开始之前我们先来解释一下ls -l回显内容的展示,Linux的文件权限具体是什么意思。
🍒 ls -l回显
这里我们先来解释一下ls -l的回显内容:
[zhou@ywanzhou ~]$ ls -l
total 8
drwxrwxr-x 2 zhou zhou 4096 Oct 14 13:49 demo
lrwxrwxrwx 1 zhou zhou 8 Oct 14 13:50 test-link.txt -> test.txt
-rw-rw-r-- 1 zhou zhou 7 Oct 14 13:54 test.txt
上面中的每一行记录都可以拆分为7个字段,每个字段的意思如下:
🍑 文件权限详解
文件或者文件夹的权限由最前面的10个字符,该字符的含义如下:
常见的文件类型主要类型有:
-
-:表示普通文件类型; -
d: 表示目录; -
c: 表示字符设备文件; -
b: 块设备文件,简单的说就是硬盘; -
s: 套接字文件; -
p: 管道文件; -
l: 链接文件;
接下来了解一下具体的权限分别表示什么,如下图:
Linux中的权限还能用8进制展示,8进制转换为2进制表示为xxx,即最大为111,最小为000,这里的3位正好对应rwx三个字符;如果用8进制表示,最大权限表示7即rwx,rwx分别对应的数字如下:
-
1:可执行
-
2:可写
-
4:可读
如果某文件的权限为771,则对应的字符为-rwxrwx--x。
更多对应关系如下图:
其实只需要记住1、2、4然后进行加减操作即可。
🍎 文件和目录权限的操作
在前面介绍了文件和文件目录权限的具体含义以及表示方法,现在介绍一下Linux中对于权限操作的命令。
🍌 chmod命令
chmod命令用于修改文件和目录的权限,该命令有两种设置方式,如下所示:
chmod [who] [+ | - | =] [permission] 文件或者目录
##################################################
# who 表示为谁设置权限,可选值如下:
# * u 所有者
# * g 所有组
# * o 其他用户
# * a 所有(all)
# + - = 表示加上 减去 赋值指定权限
# 权限的值分别为 r w x -
##################################################
或者下面这种
chmod 代表权限的三个八进制数字 文件或者目录
# 例如:
chmod 777 test.txt
现在我们先创建两个用户:
-
yiwan
-
zhou
现在我们使用yiwan这个用户创建文件和目录,并使用zhou这个用户进行操作。
第一步,我们使用yiwan这个用户创建yDir目录
[yiwan@ywanzhou tmp]$ cd /tmp/ # 在tmp中操作
[yiwan@ywanzhou tmp]$ mkdir yDir # 创建目录
[yiwan@ywanzhou tmp]$ ls -l | grep 'yDir' # 查看创建结果 grep 用作筛选
drwxrwxr-x 2 yiwan yiwan 4096 Oct 14 16:45 yDir
# 根据权限得出,其他用户无法在该目录中创建文件
第二步,使用zhou这个用户切换到 yDir 这个目录,并创建文件
[zhou@ywanzhou yDir]$ cd /tmp/yDir/
[zhou@ywanzhou yDir]$ mkdir text.txt
mkdir: cannot create directory ‘text.txt’: Permission denied
# 创建文件抛出异常
第三步,使用yiwan这个用修改yDir这个目录其他用户也具有写权限
[yiwan@ywanzhou tmp]$ chmod o+w yDir/
[yiwan@ywanzhou tmp]$ ll | grep 'yDir'
drwxrwxrwx 2 yiwan yiwan 4096 Oct 14 16:45 yDir
第四步,现在我们就可以通过zhou用户去创建文件了
[zhou@ywanzhou yDir]$ touch text.txt
[zhou@ywanzhou yDir]$ ll | grep 'text.txt'
-rw-rw-r-- 1 zhou zhou 0 Oct 14 17:13 text.txt
这里我是对目录进行的操作,对文件操作亦是如此。
🍋 chown命令
该命令可以修改文件或者文件夹的所有者和所属组,该命令只能root用户执行,语法如下:
chown [-cfhvR] user[:group] file...
########################
# -c : 显示更改的部分的信息
# -f : 忽略错误信息
# -h :修复符号链接
# -v : 显示详细的处理信息
# -R : 递归处理文件及文件夹
#######################
示例代码如下:
chown -vR zhou:zhou yDir/ # 递归修改yDir目录的所有者和所属组为zhou
ownership of ‘yDir/text.txt’ retained as zhou:zhou
changed ownership of ‘yDir/’ from yiwan:yiwan to zhou:zhou
🍊 chgrp命令
该命令可以文件或者文件夹所属组,该命令不需要root用户,只要该用户是这个组里面的一员就可以进行修改,示例代码如下:
chgrp -v yiwan text.txt # 将 text.txt 的所属组修改为 yiwan 并展示详细信息
🍍 umask命令
该命令可以设置创建文件时预设的权限掩码。
[权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
直接键入umask命令可以查看当前的默认权限掩码,修改权限掩码只需要在其后面输入对应的数值即可,示例代码如下:
[yiwan@ywanzhou tmp]$ umask
0002
[yiwan@ywanzhou tmp]$ umask 007
[yiwan@ywanzhou tmp]$ umask
0007
常见的umask值与新建文件和目录的权限对应关系如下:
| umask值 | 新建目录的权限 | 新建文件的权限 |
|---|---|---|
| 022 | 777-022=755 | 666-022=644 |
| 027 | 777-027=750 | 666-027=640 |
| 002 | 777-002=775 | 666-002=664 |
| 006 | 777-022=771 | 666-006=660 |
| 007 | 777-007=770 | 666-007=660 |
新建文件从666开始是因为新建的文件默认不能具备执行权限,需要手动设置。
🍉 写在最后
这篇文章中介绍了文件以及目录的权限,加上前面的三篇文章对于前端来说Linux的基本操作就已经够了,后续计划介绍Shell编程、软件安装以及Linux的网络。
如果对本篇文章对你有所帮助,可以点赞收藏评论支持一下我;如果有所疑问,欢迎私信~