Linux:文件权限详解及修改方法

文章目录

    • 1、Linux文件权限
      • 1.1、如何查看到文件权限
      • 1.2、ll命令介绍
    • 2、权限分类
      • 2.1、文件权限
      • 2.2、文件夹权限
    • 3、权限修改
      • 3.1、修改文件/文件夹权限
        • 1)chmod指令
        • 2)chmod指令符号
      • 3.2、修改文件/文件夹所属用户
      • 3.3、修改文件/文件夹所属群组
    • 4、参考

1、Linux文件权限

1.1、如何查看到文件权限

使用ls -l或者ll指令可以直接查看到如下的标记,这些标记代表的相关文件或文件夹的权限类型及所属:

image-20240222100605216

其中分四段:

  • 第一段,为文件/文件夹权限,其中首个bit位字符为文件类型,一共有如下的七种:前三种为常见类型
类型说明
-普通文件。
d目录,字母ddirtectory(目录)的缩写。
l符号链接。请注意,一个目录或者说一个文件夹是一个特殊文件,这个特殊文件存放的是其他文件和文件夹的相关信息。
b块设备文件。
c字符设备文件。
p管道文件
s套接口文件

像类型为文件,如下面这种:

image-20240223160559384

之后跟随的会有9个bit位,分别代表不同的权限类型,后续再进一步讨论。

  • 第二段,为文件/子目录的链接数量

像上述的文件结果中,1表示有一个硬链接指向文件python.gram,一般来说文件类型均为1。如果为文件夹类型则表示的是链接的子目录个数。

  • 第三段,为权限所属用户

表示拥有当前文件或目录的用户。

  • 第四段,为权限所属群组

表示所属的群组(group)。群组下的每一个使用者都具有该文件\路径的控制权限,一个用户可以拥有一个以上的组,大部分都只属于1个群组。

1.2、ll命令介绍

在Ubuntu中默认不含ll命令,其实质为ls -l的别名,我们可以通过修改环境变量自行添加:

# 切换管理员模式
su
# 修改系统环境变量
vim ~/.bashrc

添加或将下面这一段去掉注释:

image-20240222095730569

修改完成之后,使环境变量生效:

source ~/.bashrc

image-20240222100228829

**注:**root环境变量和普通用户环境变量不共通,使用ll指令,不同用户下需单独修改。

2、权限分类

2.1、文件权限

在文件类型字节位后,紧接着的3*3个字符分3组,各表示不同角色对此文件的读®、写(w)、执行权限(x)

  • 第一段:3bit,对应**文件所有者(owner)**的权限
- rwx --- ---    对应文件所有者(owner)拥有读写及执行权限,设定值为700,其值等于下面三项值相加
- r-- --- ---    对应文件所有者(owner)拥有读权限,设定值为400
- -w- --- ---    对应文件所有者(owner)拥有写权限,设定值为200
- --x --- ---    对应文件所有者(owner)拥有执行权限,设定值为100
  • 第二段:3bit,对应**文件所属用户群组(group)**的权限
- --- rwx ---    对应文件所属群组(owner)拥有读写及执行权限,设定值为070,其值等于下面三项值相加
- --- r-- ---    对应文件所属群组(owner)拥有读权限,设定值为040
- --- -w- ---    对应文件所属群组(owner)拥有写权限,设定值为020
- --- --x ---    对应文件所属群组(owner)拥有执行权限,设定值为010
  • 第三段:3bit,对应**其他用户(others)**的权限
- --- --- rwx    对应其他用户(others)对文件拥有读写及执行权限,设定值为007,其值等于下面三项值相加
- --- --- r--    对应其他用户(others)对文件拥有读写及执行权限,设定值为004
- --- --- -w-    对应其他用户(others)对文件拥有读写及执行权限,设定值为002
- --- --- --x    对应其他用户(others)对文件拥有读写及执行权限,设定值为001

上述权限对应下来则为八进制码表,二进制码的计算顺序为从右往左:

八进制位权限权限符号二进制位
7读\写\执行rwx111
6读\写rw-110
5读\执行r-x101
4r–100
3写\执行-wx011
2-w-010
1执行–x001
0无权限000

举例:

权限符号为rw-,其二进制位为110,则二进制转为八进制为,计算顺序为从右往左: 2 0 2^0 20+ 2 1 2^1 21+ 2 1 2^1 21=6,即r为2号位值为1,w为1号为值为1,-为0号位值为0。

2.2、文件夹权限

文件夹的权限标识与文件相同,但所具有的含义不一样,对应如下:

  • r:能够浏览目录信息,包括目录名称及所含文件等信息。无权限时无法查看对应内容

image-20240223171228842

  • w:能够删除新增或修改目录中的文件或目录。无权限时限制删除新增等操作

image-20240223171711277

  • x:当具有x权限时,能够进入该目录。无权限时被限制进入

image-20240223171127644

3、权限修改

3.1、修改文件/文件夹权限

1)chmod指令

chmod修改文件权限:

chmod [选项] 权限 文件名/文件夹名

[选项]为可选,支持以下常用参数:

参数作用
-c改变权限成功后再输出成功信息
-R递归处理所有子文件
-f改变权限失败后不显示错误信息
-v显示执行过程详细信息

示例:

# 设置文件夹权限为770:文件所有者和用户群组有读\写\执行权限,其他用户无权限
chmod 770 testDir
# 设置文件权限为707:文件所有者和其他用户有读\写\执行权限,用户群组无权限
chmod 707 testfile

image-20240223170729874

**注:只有文件所有者(owner)或管理员(root)**才允许修改文件权限。

2)chmod指令符号

在chmod指令中,可以使用用户表示符和权限控制符号来简化指令,更为的清晰,其对应的不同符号如下:

  • 用户表示符
用户表示符说明
u所有者
g拥有者同组用户
o其它用户
a所有用户
  • 权限操作符
权限操作符含义
+表示添加权限
-表示移除权限
=表示设置权限为特定的值
  • 权限符号
符号含义
r读取权限
w写入权限
x执行权限

组合使用举例:

# 给文件file.txt的所有者(u)增加读取(+r)权限
chmod u+r file.txt
# 从文件file.txt的拥有者同组用户(g)中移除写入(-w)权限
chmod g-w file.txt
# 给目录directory的其他用户(o)增加执行(+x)权限
chmod o+x directory
# 给文件file.txt的所有用户(a)设置读取和写入权限
chmod a=rw file.txt

3.2、修改文件/文件夹所属用户

chown修改文件/文件夹所属的用户:

chown [选项] 新所属用户名 文件名/文件夹名

chown常用的[选项]参数:

常用参数描述
-R, --recursive递归地更改指定目录及其子目录中所有文件和目录的所有者。
--reference=RFILE把指定文件的拥有者和用户组应用到其他文件, RFILE为参考文件。
--from=CURRENT_OWNER[:CURRENT_GROUP]仅在文件的当前所有者或用户组匹配指定的值时才更改文件的所有者和/或用户组。
--preserve-root不允许在 “/” 上递归操作
-v, --verbose显示详细的操作信息。

示例:

# 将file.txt文件所属用户修改为用户miniboy
chown miniboy file.txt

image-20240302175436935

**注:**所修改的新用户,为存在的用户,否则会执行失败,提示无效用户。

--from=CURRENT_OWNER[:CURRENT_GROUP]参数使用举例:当匹配到对应的所有者/用户组时才进行修改

# 当file.txt的当前所有者是olduser,用户组是oldgroup时,才将其所有者更改为newuser,用户组更改为newgroup
chown --from=olduser:oldgroup newuser:newgroup file.txt

3.3、修改文件/文件夹所属群组

chgrp更改文件或文件夹所属用户组(group):

chgrp [选项] 用户组名 文件名/文件夹名

在[选项]参数方面与chown类似,常用参数如下:

参数描述
-R, --recursive递归地更改指定目录及其子目录中所有文件和目录的所属用户组。
--reference=RFILE把指定文件的用户组应用到其他文件。
--preserve-root不要跨越文件系统的边界,这对于递归操作非常重要。
-v, --verbose显示详细的操作信息。
--dereference在符号链接指向文件本身时,处理符号链接指向的文件而不是符号链接文件本身。

使用示例:

# 将file.txt文件的所属群组修改为newgroup
chgrp newgroup file.txt

chgrp部分修改也能够通过chown来实现,如修改拥有者和所属组:

chown :root file30.txt (修改所属组为root)
chown root:root file30.txt (修改拥有者和所属组为root)

**注:**只有超级用户(root)或者文件的当前所有者才能使用chgrp命令。

4、参考

https://blog.csdn.net/m0_56311933/article/details/123006978

https://www.cnblogs.com/kongzhongqijing/p/3488884.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/727813.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI产品摄影丨香水

AI电商产品拍摄丨(可指定产品) 均为概念图 可换产品 可指定产品,可换logo 工具:StartAI 搭配“手机摄影”风格使用效果更佳哦 咒语:anha perfume in bottle on stone surface, in the style of everyday american…

和为K的子数组

题目: 使用前缀和的方法可以解决这个问题,因为我们需要找到和为k的连续子数组的个数。通过计算前缀和,我们可以将问题转化为求解两个前缀和之差等于k的情况。 假设数组的前缀和数组为prefixSum,其中prefixSum[i]表示从数组起始位…

分段线性化问题探析

目录 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 4 matlab测试结果说明 5 分段线性化应用 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 clc;clear all; gn10;tn1; x_pfsdpvar(1, t…

vue3基础教程(3)——引入ui框架iview(viewui)

博主个人微信小程序已经上线:【中二少年工具箱】。欢迎搜索试用 正文开始 专栏简介1. 下载iview2.更新资源3.引入插件4.运行项目 专栏简介 本系列文章由浅入深,从基础知识到实战开发,非常适合入门同学。 零基础读者也能成功由本系列文章入门…

底层day2作业

思维导图 作业: 1.使用ADC采样光敏电阻数值,如何根据这个数值调节LED灯亮度 连接硬件:将光敏电阻与单片机的ADC引脚连接,将LED灯与单片机的PWM引脚连接。初始化:在程序中初始化ADC和PWM模块,并设置相应的…

大数据分析技术工程师CCRC-BDATE

大数据分析技术工程师介绍 大数据始于科技之美,归于创造价值。大数据时代,“谁用好数据,谁就能把握先机、赢得主动”。当下数据驱动的电信、社交媒体、生物医疗、电子政务商务等行业都在产生着海量的数据,随着大规模数据关联、交叉…

@ResponseStatus

目录 概述: 用途: 参数: 注意事项: 自定义异常类: 底层原理: 概述: 在 Spring MVC 中,我们有很多方法来设置 HTTP 响应的状态码其中最直接的方法:使用 ResponseSt…

K8S之实现业务的蓝绿部署

如何实现蓝绿部署 什么是蓝绿部署?蓝绿部署的优势和缺点优点缺点 通过k8s实现线上业务的蓝绿部署 什么是蓝绿部署? 部署两套系统:一套是正在提供服务系统,标记为 “绿色” ;另一套是准备发布的系统,标记为…

删除指定的数

删除指定的数 题目描述:解法思路:解法代码:运行结果: 题目描述: 先输入10个整数存放在数组中,再输入⼀个整数n,删除数组中所有等于n的数字,数组中剩余的数组保证数组的最前面&#…

SpringBoot项目如何添加全局接口上下文

1. 定义Spring Boot应用的路由 首先,确保您的Spring Boot应用有一个统一的路由前缀。例如,可以在application.properties或application.yml配置文件中使用server.servlet.context-path属性来定义所有请求的基础路径。 # application.properties server…

vue基础教程(4)——深入理解vue项目各目录

博主个人微信小程序已经上线:【中二少年工具箱】。欢迎搜索试用 正文开始 专栏简介1. 总览2. node_modules3.public4.src5.assets6.components7.router8.stores9.views10.App.vue11.main.js12.index.html 专栏简介 本系列文章由浅入深,从基础知识到实战…

docker部署若依项目

目录 目录 一、搭建局域 二、redis安装 1.创建目录 2. redis.conf修改 三、MySQL安装 1. 安装 2. 设置远程连接 3. 创建数据库 四、若依后端项目搭建 1. 切换到家目录 2. 上传jar包 3. 上传Dockerfile文件 4. 构建镜像 5. 运行容器 6. 查看运行情况 7. 测试(自己…

AD20软件使用指南:拼板操作与Gerber文件生成详解

文章目录 一、前言二、拼板1.创建新的PCB,用于放置拼板文件2.放置拼板阵列3.设置阵列信息4.V割拼板,放置工艺边和定位孔和光点5.完成拼板 三、生成Gerber文件1.输出Gerber文件2.选择单位和格式3.选择输出的图层4.生成Gerber文件5.生成钻孔文件 四、上传嘉…

腾讯云学生服务器多少钱?怎么申请?

2024年腾讯云学生服务器优惠活动「云校园」,学生服务器优惠价格:轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年,轻量应用服务器4核8G配置191.1元3个月、352.8元6个月、646.8元一年,CVM云服务器2核4G配置842.4元一年&…

微信小程序(五十一)页面背景(全屏)

注释很详细,直接上代码 上一篇 新增内容: 1.页面背景的基本写法 2.去除默认上标题实习全屏背景 3. 背景适配细节 源码: index.wxss page{/* 背景链接 */background-image: url(https://pic3.zhimg.com/v2-a76bafdecdacebcc89b5d4f351a53e6a_…

python 截取字符串string.split

目录 作用语法只要第一个值获得第3个值遍历 作用 根据某个符号对数据进行截取 从而获得自己想要的内容 语法 使用’string.split’ 方法 对字符串’123/abc/BPYC’ 以 ‘/’ 进行截取 string "123/abc/BPYC" substring string.split("/") print(subs…

C++:拷贝构造函数

1.概念 在现实生活中,可能存在一个与你一样的自己,我们称之为双胞胎。那在创建对象的时候,可否创建一个与已存在对象一模一样的新对象呢?答案是可以的,这就要通过拷贝构造函数来实现了。 拷贝构造函数:只有…

微服务基础

目录 一、单体架构 二、分布式架构 三、微服务 四、微服务结构 五、SpringCloud 六、服务拆分 七、远程调用 一、单体架构 单体架构就是将业务的所有功能都集中在一个项目中进行开发,并打成一个包进行部署。 他的优点很明显,就是架构简单&#xff…

C++的类和对象(四):拷贝构造函数

目录 拷贝构造函数 特性 自定义类型的传值传参和传引用传参对比 赋值运算符重载 拷贝构造函数 基本概念:只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在创建一个已存在对象一模一样的新对象时…

数据结构:AVL树

目录 1、AVL树的概念 2、二叉搜索树的功能与实现 1、AVL树节点定义 2、AVL树的插入 3、AVL树的旋转操作 1、左旋 2、右旋 3、左右旋 4、右左旋 3、AVL树完整代码实现 1、AVL树的概念 在前面的文章中,我们学过了二叉搜索树,二叉搜索树虽可以缩短查…