前言
如上图所示,在使用 Linux 命令的时候经常见到红框框出来的内容,但是大都不太了解。
今天遇到一个关于文件权限问题,这里整理一下关于此类的相关内容。
1、三种权限
在 Linux 命令中,chmod 用于修改文件或者目录的权限。对于文件或者目录的普通权限,共有 3 种,分别为:
- r:表示可读取此文件中的实际内容,例如,可以对文件执行 cat、more、less、head、tail 等文件查看命令
- w:表示可以编辑、新增或者修改文件中的内容,例如,可以对文件执行 vim、echo 等修改文件数据的命令。
- x:表示该文件具有被系统执行的权限,比如常用脚本文件 start.sh,想要运行就需要有执行权限。
此外,还有 3 种特殊权限,分别为:
- suid:Set User ID;
- sgid:Set Group ID;
- sticky:粘滞位。
这里只介绍三种普通权限,特殊权限不做介绍(用的比较少)。
2、drwxrwxr-x 的含义
这里就以第一个图来作为示例讲述一下各个字符的含义:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kDdtZ9O7-1616220687043)(\linux文件操作\开篇引题.png)]
ls -l 是用来查看文件及目录相关信息,看一下列出来信息都表示什么:
- "total 12":表示所列出内容的磁盘占用空间总和值,单位为 KB
- "drwxrwxr-x":表示文件或目录的类型及权限
- "4":表示文件或目录的链接个数
- "ubuntu":表示文件或目录的所有者
- "ubuntu":表示文件或目录的所在群组;
- "4096":表示文件或目录本身的大小
- "Mar 9 19:39":表示文件或目录的最后更新时间;
- "myblog":目录或文件(该名称是目录,一般文件有后缀)
进入主题,来看一下"drwxrwxr-x"表示的意义:
- 第一个字符"d":表示文件或目录的类型,其类型包括:
- p,表示命名管道文件;
- d,表示目录文件;
- l,表示符号连接文件;
- -,表示普通文件;
- s,表示 Socket 文件;
- c,表示字符设备文件;
- b,表示块设备文件。
- 第 2-4 个字符"rwx":表示文件或目录的所有者权限;
- 第 5-7 个字符"rwx":表示文件或目录的所有者同组用户权限;
- 第 8-10 个字符"r-x":表示文件或目录的其他用户权限。
第一个字符中,d(目录)和-(普通文件)用的比较多。
这里说一下文件的颜色,通过图片可以看到有一个蓝色的文件名特别突出:
- 蓝色:目录
- 绿色:可执行文件
- 红色:压缩文件
- 浅蓝色:链接文件
- 白色:普通文件
- 黄色:设备文件
3、文件权限常用命令
下面介绍一下三种常用命令。
(1)chmod 777 /home/myblog
操作文件权限的常用命令为 chmod,chmod 一般用 3 个数字来表达对 用户(文件或目录的所有者),用户组(同组用户),其他用户 的权限:
- 读取–用数字 4 表示;
- 写入–用数字 2 表示;
- 执行–用数字 1 表示;
数字 0 不具有任何权限,按照规则,如你想设置/home/ubuntu/myblog 目录的权限为:
- 对用户可读可写:4(读取)+ 2(写入)= 6 ;
- 对用户组可读可执行:4(读取)+ 1(执行)= 5 ;
- 对其他用户仅可读:4(读取);
这样就可以用命令:
chmod 654 /home/ubuntu/myblog
常用的操作命令"chmod 777 /home/ubuntu/myblog",表示所有用户都是可读可写可执行,即
- 4(读取)+2(写入)+1(执行)=7
(2)chmod -R 777 /home/myblog
加了一个 R 表示递归,表示不仅是 myblog,包括其内部的文件都要递归赋予 777 权限。
(3)chmod ugo +r myblog.txt
这个就比较复杂了,先说一下 ugo 代表的含义:
- u:当前用户
- g:表示群组
- o:表示其他用户
- a:表示所有用户(相当于 ugo 了)
在说一下+r,这其实是两个字符,一个+,一个 r,先说+表示增加,同类型还有:
- +:增加权限
- -:减少权限
- =:唯一设定权限(除了设定的权限其他都舍去)
而 r 就是读取的含义,上面也介绍了,除了 r,还有 w 和 x。
理解了上面的意思,那么“chmod ugo +r myblog.txt ”就好解释了:表示为所有用户赋予 myblog.txt 读取权限。
其他类似命令还有:
# 为当前用户增加读取权限
chmod u +r myblog.txt
# 为群组用户消除写入权限
chmod g -w myblog.txt