Linux 文件权限

2023-10-27

Linux下一切皆文件,Linux中所有内容都是以文件的形式保存和管理的,因此了解文件系统是学习Linux十分重要的一步。而Linux是一个多用户操作系统,多用户操作系统就会涉及到每个用户所拥有的权限,这里我们简单的介绍了Linux的文件权限。

1. 查看文件权限

ls指令是Linux最常用的指令之一,相信接触过Linux的用户都或多或少使用过这个指令。ls是“list”的意思,其作用是列出当前目录下的文件,利用ls -l可以查看文件的详细信息,如:

[root@Ju /]# ls -l
total 64
lrwxrwxrwx.  1 root  root      7 May 21  2021 bin -> usr/bin
dr-xr-xr-x.  5 root  root   4096 Nov 22  2021 boot
drwxr-xr-x   3 mysql mysql  4096 Nov  8  2021 data
drwxr-xr-x  19 root  root   2960 May 19 14:01 dev
drwxr-xr-x. 85 root  root   4096 May 19 14:00 etc
drwxr-xr-x.  3 root  root   4096 Apr 16 13:50 home
lrwxrwxrwx.  1 root  root      7 May 21  2021 lib -> usr/lib
lrwxrwxrwx.  1 root  root      9 May 21  2021 lib64 -> usr/lib64
drwx------.  2 root  root  16384 May 21  2021 lost+found
drwxr-xr-x.  2 root  root   4096 Apr 11  2018 media
drwxr-xr-x.  2 root  root   4096 Apr 11  2018 mnt
drwxr-xr-x.  6 root  root   4096 Apr 14 18:55 opt
dr-xr-xr-x  89 root  root      0 May 19 14:01 proc
dr-xr-x---.  9 root  root   4096 May 19 14:01 root
drwxr-xr-x  24 root  root    740 May 19 14:01 run
lrwxrwxrwx.  1 root  root      8 May 21  2021 sbin -> usr/sbin
drwxr-xr-x.  2 root  root   4096 Apr 11  2018 srv
dr-xr-xr-x  13 root  root      0 May 19 22:01 sys
drwxrwxrwt. 21 root  root   4096 May 25 03:44 tmp
drwxr-xr-x. 19 root  root   4096 Mar 28 16:49 usr
drwxr-xr-x. 19 root  root   4096 May 21  2021 var

上述例子利用ls指令查看了根目录下的文件信息,其每一列的含义大致如下:

举例

这里我们主要关注第一列,即文件类型与权限:

  • 第一个字母代表文件的类型:

    • d代表目录

    • -代表文件

    • l代表连接档(link file)

    • b代表可供储存的接口设备

    • c代表串行端口设备:如键盘、鼠标

  • 后面的九个字母代表了文件的权限:

    • 以三个相连的字母为一组

    • 第一组(前三个字母)代表了文件所有者的权限

    • 第二组代表了文件所属群组的权限

    • 第三组代表了其他用户的权限

    • r代表读权限,w代表写权限,x代表执行权限

drwxr-xr-x.  3 root  root   4096 Apr 16 13:50 home
# d: 代表home是一个目录
# rwxr-xr-x:
#     文件所有者: 拥有读、写、执行的权限
#     文件所属组群的用户: 拥有读、执行的权限
#     其他用户: 拥有读、执行的权限
# 第一个root代表文件的所有者是root
# 第二个root代表文件所属组群是root

注意:root用户是Linux系统中的超级管理员,拥有对文件和目录的全部权限(即使文件权限为000,即----------)。

2. rwx 的意义

对于文件来说:

  • r:表示可读取此文件的实际内容,如读取文本文件的文字内容等

  • w:表示可以修改此文件的内容(但不含删除该文件)

  • x:表示此文件具有可以被系统执行的权限(Windows中文件是否可执行

  • 由扩展名决定,而Linux中则是由x权限决定的)

对于目录来说:

  • r:表示具有读取此目录结构列表的权限,即可以查询该目录下的文件名数据(利用ls指令可以将该目录的内容列表显示出来)

  • w:表示具有修改此目录结构列表的权限,包括:

    • 建立新的文件与目录

    • 删除已经存在的文件与目录(不论该文件的权限为何)

    • 将已存在的文件或目录进行更名

    • 搬移该目录内的文件、目录位置

  • x:代表用户能否进入该目录并让其成为工作目录:

注意:工作目录对于指令的执行是非常重要的,如果你在某目录下不具有x权限, 那么你就无法切换到该目录下,也就无法执行该目录下的任何指令,即使你具有该目录的rw权限。

3. 改变文件属性与权限

3.1 rwx 与 421

在介绍如何改变文件的权限之前,我们需要先了解下文件权限另一种表示方式:

  • r:4

  • w:2

  • x:1

我们都知道,文件的权限是三个一组的,现在遵循上面的对应原则,就可以用数字表示文件的权限。

drwxr-xr-x.  3 root  root   4096 Apr 16 13:50 home
# owner = rwx = 4+2+1 = 7
# group = r-x = 4+1 = 5
# owner = r-x = 4+1 = 5
# 上述文件的权限就可以用755进行表示啦!

3.2 改变文件权限:chmod

# 可以通过chmod指令修改文件权限
# 基本格式: chmod [-R] 权限 文件或目录
#	-R: 进行递归的持续变更,即连同次目录下的所有文件都会变更
[root@Ju test]# ls -l
total 4
drwxr-xr-x 2 root root 4096 May 25 12:20 t1
[root@Ju test]# chmod 000 ./t1
[root@Ju test]# ls -l
total 4
d--------- 2 root root 4096 May 25 12:20 t1
[root@Ju test]# chmod -R 755 ./t1
[root@Ju test]# ls -l
total 4
drwxr-xr-x 2 root root 4096 May 25 12:20 t1

3.3 改变文件所属组群:chgrp

# 基本格式: chgrp [-R] 组群 dirname/filename ...
#	-R: 进行递归的持续变更,即连同次目录下的所有文件都会变更
[root@JuJunjian test]# ls -l
total 8
drwxr-xr-x 2 root root 4096 May 25 12:20 t1
drwxr-xr-x 2 root root 4096 May 25 12:25 t2
[root@JuJunjian test]# chgrp hadoop t1 t2
[root@JuJunjian test]# ls -l
total 8
drwxr-xr-x 2 root hadoop 4096 May 25 12:20 t1
drwxr-xr-x 2 root hadoop 4096 May 25 12:25 t2

3.4 改变文件所有者:chown

# 基本格式: chown [-R] 用户 dirname/filename ...
#	-R: 进行递归的持续变更,即连同次目录下的所有文件都会变更
[root@JuJunjian test]# ls -l
total 8
drwxr-xr-x 2 root hadoop 4096 May 25 12:20 t1
drwxr-xr-x 2 root hadoop 4096 May 25 12:25 t2
[root@JuJunjian test]# chown hadoop t1 t2
[root@JuJunjian test]# ls -l
total 8
drwxr-xr-x 2 hadoop hadoop 4096 May 25 12:20 t1
drwxr-xr-x 2 hadoop hadoop 4096 May 25 12:25 t2

# 同时改变所有者和组群: chown [-R] 用户:组群 dirname/filename ...
#	-R: 进行递归的持续变更,即连同次目录下的所有文件都会变更
[root@JuJunjian test]# chown root:root t1 t2
[root@JuJunjian test]# ls -l
total 8
drwxr-xr-x 2 root root 4096 May 25 12:20 t1
drwxr-xr-x 2 root root 4096 May 25 12:25 t2

参考书籍:鸟哥的Linux私房菜 基础学习篇 第四版

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 文件权限 的相关文章

  • 无法在 64 位 Linux 上从汇编 (yasm) 代码调用 C 标准库函数

    我有一个函数foo以汇编语言编写 并在 Linux Ubuntu 64 位上使用 yasm 和 GCC 编译 它只是使用以下命令将消息打印到标准输出puts 如下所示 bits 64 extern puts global foo secti
  • linux下写入后崩溃

    如果我使用 write 将一些数据写入磁盘上的文件会发生什么 但我的应用程序在刷新之前崩溃了 如果没有系统故障 是否可以保证我的数据最终会刷新到磁盘 如果您正在使用write 并不是fwrite or std ostream write 那
  • 码头无故停止

    我需要经验丰富的码头用户的建议 我在负载均衡器 亚马逊云 后面维护着 2 台 Linux 机器 使用 Jetty 9 0 3 有时我的 Jetty 容器会被 Thread 2 无故关闭 同时地 显示以下日志并且容器无故停止 没有错误 没有例
  • 找出 Linux 上的默认语言

    有没有办法从C语言中找出Linux系统的默认语言 有 POSIX API 可以实现这个功能吗 例如 我想要一个人类可读格式的字符串 即德语系统上的 German 或 Deutsch 法语系统上的 French 或 Francais 等 有类
  • 从 Python 访问 802.11 无线管理帧

    我想从 Linux 上的 Python 嗅探 802 11 管理 探测请求 帧 这可以从 Scapy 中实现 如下所示 coding utf 8 from scapy all import def proc p if p haslayer
  • 如何确定代码是否在信号处理程序上下文中运行?

    我刚刚发现有人正在从信号处理程序调用我编写的绝对不是异步信号安全的函数 所以 现在我很好奇 如何避免这种情况再次发生 我希望能够轻松确定我的代码是否在信号处理程序上下文中运行 语言是 C 但该解决方案不适用于任何语言吗 int myfunc
  • 错误:命令“c++”失败,退出状态为 1

    所以我尝试按照以下说明安装 Pyv8https andrewwilkinson wordpress com 2012 01 23 integrating python and javascript with pyv8 https andre
  • 如何重命名 .tar.gz 文件而不提取内容并在 UBUNTU 中创建新的 .tar.gz 文件?

    我有一个命令将创建一个新的 tar gz现有文件中的文件 sudo tar zcvf Existing tar gz New tar gz 该命令将创建一个新的New tar gz从现有的文件Existing tar gz file 谁能告
  • 在 debian wheezy amd64 上安装 ia32-libs

    我正在使用 Debian 7 喘息 amd64 uname a Linux tzwm debian 3 2 0 4 amd64 1 SMP Debian 3 2 51 1 x86 64 GNU Linux 我想安装ia32 libs在我的
  • 如何在 Linux/OS X 上温和地终止 Firefox 进程

    我正在使用 Firefox 进行一些自动化操作 尽管我可以从 shell 打开 Firefox 窗口 但我无法正确终止它 如果我kill火狐进程与kill 3 or kill 2当我下次打开新的 Firefox 窗口时 命令会询问我是否要在
  • 如何列出 nginx 中的所有虚拟主机

    有没有一个命令可以列出 CentOS 上 nginx 下运行的所有虚拟主机或服务器 我想将结果通过管道传输到文本文件以用于报告目的 我正在寻找与我用于 Apache 的命令类似的命令 apachectl S 2 gt 1 grep 端口 8
  • 完整的 C++ i18n gettext()“hello world”示例

    我正在寻找完整的 i18ngettext 你好世界的例子 我已经开始了一个基于的脚本使用 GNU gettext 的本机语言支持教程 https web archive org web 20130330233819 http oriya s
  • Bash - 比较 2 个文件列表及其 md5 校验和

    我有 2 个列表 其中包含带有 md5sum 检查的文件 即使文件相同 列表也具有不同的路径 我想检查每个文件的 md5 和 我们正在讨论数千个文件 这就是为什么我需要脚本来仅显示差异 第一个列表是普通列表 第二个列表是文件的当前状态 我想
  • 运行 shell 命令并将输出发送到文件?

    我需要能够通过 php 脚本修改我的 openvpn 身份验证文件 我已将我的 http 用户设置为免通 sudoer 因为这台机器仅在我的家庭网络中可用 我目前有以下命令 echo shell exec sudo echo usernam
  • 了解 Linux oom-killer 日志

    我的应用程序被 oom killer 杀死了 它是在实时 USB 上运行的 Ubuntu 11 10 无需交换 PC 具有 1 Gig 的 RAM 唯一运行的应用程序 除了所有内置的 Ubuntu 东西 是我的程序 flasherav 请注
  • 如何在linux中使用iptables将http和https流量转发到透明代理[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这个问题似乎不是关于主要由程序员使用的特定编程问题 软件算法或软件工具 help on topic 如果您认为该问题与主题相关另一个 St
  • php_network_getaddresses: getaddrinfo 失败: 名称或服务未知 (0) 连接失败..!

    我正在使用 php 邮件程序功能 但出现以下错误 如何修复它 2016 01 22 06 15 48 SMTP 错误 无法连接到服务器 php network getaddresses getaddrinfo失败 名称或服务未知 0 连接失
  • 如何从程序内部获取指向程序的特定可执行文件部分的指针? (也许是诽谤)

    我在 Linux 环境中 需要编写一个程序来检索放置在其可执行文件的某个部分中的一些数据 那么 如何从程序内部获取指向程序某个部分 通过其名称 的指针呢 我知道可以使用elf getdata 将节的索引作为参数传递给 get 和Elf Da
  • 如何指定配置脚本的包含目录

    我的工作场所有一个 Linux 系统 其中包含相当旧的软件包 并且没有 root 访问权限 我正在从源代码编译我需要的包 prefix somewhere in homedir 我的问题是我只是不知道如何说服配置在特定目录中查找头文件 源码
  • Unix 中的访问时间是多少

    我想知道访问时间是多少 我在网上搜索但得到了相同的定义 读 被改变 我知道与touch我们可以改变它 谁能用一个例子来解释一下它是如何改变的 有没有办法在unix中获取创建日期 时间 stat结构 The stat 2 结构跟踪所有文件日期

随机推荐

  • Kafka原理

    生产者原理解析 生产者工作流程图 一个生产者客户端由两个线程协调运行 这两个线程分别为主线程和 Sender 线程 在主线程中由kafkaProducer创建消息 然后通过可能的拦截器 序列化器和分区器的作用之后缓存到消息累加器 Recor
  • JAVA 项目---学生成绩管理系统(附标准源码)使用文件存储

    项目要求 GUI界面 实现以下功能 能够录入学生的信息及成绩 具体为姓名 学号 应用数学 大学英语 java编程 计算机应用 还能够根据输入学生姓名返回学生的信息 使用mysql数据库存储 参考这一篇博文 https blog csdn n
  • 【Git系列】Git到远程仓库

    Git到远程仓库 1 github账号注册 2 初始化本地仓库 3 创建GitHub远程仓库 4 给本地仓库起别名 4 1 查看远程库的连接地址 4 2 起别名 5 git推送操作 6 git克隆操作 7 邀请加入团队 push 7 1 未
  • Hough变换原理

    Hough变换原理 NEU icerain 2007 6 25 一 简单介绍 Hough变换是图像处理中从图像中识别几何形状的基本方法之一 Hough变换的基本原理在于利用点与线的对偶性 将原始图像空间的给定的曲线通过曲线表达形式变为参数空
  • ffmpeg 剪辑 剪切 一段 视频 windows中

    从视频的14分钟44秒处 剪10秒钟视频 存为 output mp4 文件 ffmpeg ss 00 14 44 t 00 00 11 i H BaiduNetdiskDownload xialuotefannao mp4 vcodec c
  • 分布式最小生成树算法

    分布式最小生成树算法 作为分布式算法中的经典算法之一 GHS分布式最小生成树算法的相关资料却并不多见 相关的原理介绍只是范范而谈 代码实现也比较少见 本文将汇总目前网络上可查阅的相关参考资料并结合自己的理解 旨在深入理解GHS的算法核心与实
  • 【起航】目标检测的里程碑R-CNN通俗详解

    前面我们学习了目标检测中常用的评价指标以及传统的目标检测思路 如下 目标检测中常用的评价指标传统目标检测思路 为了系统的学习 以及形成一个完整的知识体系 所以接下来我们逐步深入学习常见的目标检测模型 后面常见模型的学习顺序大致为R CNN
  • 解决dnd-kit点击事件和拖拽事件的冲突

    dnd kit https github com clauderic dnd kit 在使用dnd kit作为拖拽库时 可能会遇到拖拽的组件中包含可交互的组件 例如一个input或者button 当绑定上事件之后 例如click 这时浏览器
  • docker学习:网络连通

    这里主要就是使用docker connect命令来做网络连通 在这里插入图片描述 docker network命令也看一下吧 docker run d P name tomcat net 01 net mynet tomcat 测试两个不同
  • Vue-动画效果

    vue动画效果 vue中动画效果是很简单的一个东西 vue帮助我们做了一些动画封装 同时也支持自定义动画 过度 第三方库 这些方式都可以实现 我们一一举例说明 注意 下面的相关截图 由于不是gif动图 所以展示的并不全面 1 编写案例 首先
  • ROS的安装教程(noetic版本)

    笔者当时学习ROS时在安装ROS的时候花了一些功夫 现在回过头希望能对初入ROS的大家一些帮助 先为大家附上ubuntu20 04的清华下载源 下载后缀 iso的 点击跳转 1 配置ubuntu的软件和更新 首先打开 软件和更新 对话框 打
  • 广州数控车床M代码指令讲解

    辅助功能 M 功能 代码及其含义如果在地址M后面指令了2位数值 那就把对应的信号送给机床 用来控制机床的ON OFF M代码在一个程序段中只允许一个有效 M代码信号为电平输出 保持信号 M代码说明M03主轴正转M04主轴反转M05主轴停止M
  • angularjs使用文档

    ng directives ng app 指令 定义一个 AngularJS 应用程序 ng app myModule ng model 指令 把元素值 比如输入域的值 绑定到应用程序 双向绑定
  • 此url不支持http方法get_http协议(三)几种数据传输方式

    参考 老张http协议 三 几种数据传输方式 http协议的一些特点 1 无状态 http协议是一种自身不对请求和响应之间的通信状态进行保存的协议 即无状态协议 这种设置的好处是 更快的处理更多的请求事务 确保协议的可伸缩性 不过随着web
  • [机缘参悟-75]:谈谈“玻璃心”与“钝感力”

    目录 何谓 玻璃心 呢 钝感力 1 不要做毫无根据的猜想 2 学会从多个角度看问题 3 常常剖析自己的内心 4 感谢周遭的嫉妒和嘲讽 5 提高适应环境的能力 6 树立强势文化思维 7 修炼自己的自我觉知的层次 何谓 玻璃心 呢 从字面意思上
  • 冒泡排序 Bubble Sort

    冒泡排序 Bubble Sort 基本概念 冒泡排序的实现 时间复杂度 和 空间复杂度 稳定性 冒泡排序优化 基本概念 不断比较相邻的两个数 如果大于右边的数就交换 swap 直到末尾 这样最后一个元素就是最大的数 重复n次 排序完成 Ex
  • Learning to Navigate for Fine-grained Classification 论文学习

    Learning to Navigate for Fine grained Classification 论文地址 参考博客 介绍 问题描述 细粒度分类任务是用来区分上一级公共类的子类 例如野生鸟类 汽车型号 这些子类通常是由各个领域专家根
  • Qt——打开QT项目时只有.pro文件,头文件、源文件都不见了(涉及高低版本Qt的Kits工具,Could not find qmake spec ‘default‘.Error while par

    注意 若转载 请贴上链接 https blog csdn net qq 41042595 article details 126244047 如若发现抄袭或未标明来源现象 都可举报反馈 文章目录 前提 问题的由来 问题分析 回想 解决方案
  • C# JSON解析

    根据节点一层一层寻找 如果节点包含数组 则用JArray来访问 根据节点寻找 public string GetJsonResult string JSON string Result new string 2 JObject MyJObj
  • Linux 文件权限

    目录 1 查看文件权限 2 rwx 的意义 3 改变文件属性与权限 3 1 rwx 与 421 3 2 改变文件权限 chmod 3 3 改变文件所属组群 chgrp 3 4 改变文件所有者 chown Linux下一切皆文件 Linux中