第6章:文件权限

一、文件权限概述

Linux为了保证系统中每个文件的安全,引入了文件权限机制。针对于系统中的每一个文件Linux都可以提供精确的权限控制。它可以做到不同的用户同一个文件具有不同的操作权利。而通常这个权利包括以下3个:

  • 读的权利(Read,简称r)

  • 写的权利(Write,简称w)

  • 执行的权利(eXecute,简称x)

具体的权限值:rwx(读、写、执行)。这个我们已经知道了。但是上面还提到了"不同的用户 对同一个文件可以有不同的权限"中"不同的用户"指的是哪些用户呢?所以这个文件的用户也是包括3类用户:

  • 文件拥有者(User,简称U):该文件的创建人

  • 同组用户(Group,简称G):和创建人在同一组的用户

  • 其他组用户(Other,简称O):和创建人不在同一组的用户

这就是非常著名的UGO模型。也就是说一个文件的权限包括三组:

  • 第一组U:我们可以给文件的创建者设置rwx权限。

  • 第二组G:我们可以给文件创建者的同组人员设置rwx权限。

  • 第三组O:我们可以给和文件创建者不在同一组的人员设置rwx权限。


linux操作系统当中,可执行文件的扩展名一般叫做:xxx.sh

windows操作系统当中,可执行文件的扩展名一般叫做:xxx.exe


二、查看文件权限

采用"ls -l"命令可以查看文件的具体权限,如下:

权限信息在哪里呢?看下图:

每一个文件或目录采用ls -l查看之后,第一个字段描述了文件类型+文件的权限。第一个字段共10个字符:

  • 第1个字符:代表文件的类型,- 代表文件,d代表目录

    • 其实Linux中文件的类型有7种:

        • 代表普通文件
      • d 代表目录

      • l 代表链接(软链接:快捷方式)

      • b 块设备(硬盘,软盘等存储设备)

      • c 字符设备(通常以字节流的方式访问)

      • p 管道文件(主要用于进程间通讯)

      • s 套接字文件(主要用于网络通讯)

  • 第2,3,4个字符:代表文件创建者对该文件的权限。

  • 第5,6,7个字符:代表与文件创建者在同一组的用户对该文件的权限。

  • 第8,9,10 个字符:代表其他组人员对该文件的权限。

关于文件权限的9个字符中包含四种字符,分别是:r、w、x、-,他们代表什么含义:

  • r:读权限

  • w:写权限

  • x:执行权限

  • -:无权限

三、基于UGO设置文件权限

修改权限的命令是chmod,如果采用UGO方式修改权限的话,大致语法是这样的:

给同组人员添加写权限

复制代码
chmod g+w Hello.java

给同组人员和其他人员添加写权限

复制代码
chmod g+w, o+w Hello.java

删除同组人员和其他人员写的权限

复制代码
chmod g-w, o-w Hello.java

四、基于421设置文件权限

421采用数字来表示不同的权限。

  • 4代表读

  • 2代表写

  • 1代表执行

例如:如果让一个用户读、写、执行权限都有的话,就是4 + 2 + 1 = 7,那么7这个数字就代表rwx的权限都具备。如果是5就表示4+1的组合,表示有r和x的权限。如果是6就表示4+2的组合,表示有r和w的权限。如果是0就表示无任何权限。 通过421这几个数字的不同组合来表示不同的权限,那么它有多少种不同的组合呢:

  • 0:无权限

  • 1:x

  • 4:r

  • 5:r + x

  • 6:r + w

  • 7:r + w + x

也就是说一共6个数字:0 1 4 5 6 7 那么采用421方式设置权限应该怎么做呢,比如:如何给文件拥有者设置权限,如何给同组人员设置权限,如何给其他组人员设置权限?语法是这样的:

复制代码
chmod 三个数字 文件名

五、chown修改文件拥有者

在 Linux 中,可以使用 `chown` 命令来修改指定文件或目录的拥有者和所属组。`chown` 命令的基本语法如下:

复制代码
chown [选项]... [所有者][:[所属组]] 文件...

其中,所有者所属组 可以是用户名或用户 ID、组名或组 ID,如果省略 :所属组,则默认为修改文件的所有者。

下面是一些常用选项:

  • -R:递归修改,包括子目录和文件。

例如,将 /home/user/file.txt 文件的所有者修改为 root 用户,可以使用如下命令:

复制代码
sudo chown root /home/user/file.txt

/home/user/dir/ 目录及其子目录和文件的所有者都修改为 userA 用户,所属组修改为 groupA 组,可以使用如下命令:

复制代码
sudo chown -R userA:groupA /home/user/dir/

注意,在使用 chown 命令时,需要有足够的权限才能修改文件或目录的拥有者和所属组。一般需要使用 sudo 命令或使用具有相应权限的用户来执行。

相关推荐
sduwcgg16 分钟前
IQ-Learn 在 RTX 3090 服务器上的环境配置与踩坑记录
运维·服务器
呱呱巨基43 分钟前
Linux 基础IO
linux·c++·笔记·学习
QFIUNE1 小时前
CD-HIT 详解:序列去冗余、安装使用与聚类结果解析
linux·服务器·机器学习·数据挖掘·conda·聚类
vortex51 小时前
XFCE 桌面环境组件详解:从面板到剪贴板管理
linux·xfce·桌面环境
marsh02061 小时前
43 openclaw熔断与降级:保障系统在异常情况下的可用性
java·运维·网络·ai·编程·技术
摇滚侠1 小时前
Docker 如何查询挂载的目录
运维·docker·容器
勇闯逆流河2 小时前
【Linux】linux进程控制(进程池的详解与实现)
linux·运维·服务器
zhangfeng11333 小时前
部署到服务器上 宝塔系统 使用宝塔在线编辑器 FTP 批量上传 Git 部署 打包上传 codebudyy 编程程序开发
服务器·git·编辑器
WJ.Polar3 小时前
Scapy基本应用
linux·运维·网络·python
lljss20203 小时前
1. NameServer 域名服务器---NS
linux·服务器·前端