Linux学习笔记 - Linux的文件目录与属性

2023-10-27

Linux的文件目录与属性
  1. 使用者与群组
    1. 这里面涉及三个概念,分别为user,group,other。
      1. 先讲group,即组的概念,可以理解为一个项目的开发,一个组里面有若干个组员,每个组员负责一个模块的功能开发,大家都能够访问公共部分的代码,但是没有权限访问别的同事负责的模块的代码。
      2. user,即使用者,可以理解为项目经理,他有权限即访问每个人的接口 ,公共部分代码,也可以访问每个人的私人代码,为最高级别的权限了
      3. other,即其他人,就像是其他项目组的,他在未参与此项目的开发时,没有权限访问公共代码,更无权限访问私人代码。假如由于项目进度加急,需要他协作,那么则可开放访问公共部分或者更高级别的权限
    2. 只有理解了这三个概念,才能更好的理解Linux的文件管理系统。由于Windows淡化了权限的概念,基本每个人都是管理员账户,所以很少会涉及到权限问题,所以刚开始引入权限概念时,可能会不适用。
    3. 使用权限可以很好的保护我们的隐私,给予不同的文件、路径以不同的权限,本身也是一件有趣的事情
  2. Linux的文件属性
    1. 档案的属性
      1. 输入ls -l
      2. 上图为当前目录下所有文件的属性,先看第一栏,也称作档案的属性
        1. 如框框,d为目录,相应的-为文件
        2. 接着后面数一下有九个符号,可以分为三个一组,分别对应user,group,other的权限,w为write,r为read,e为execute
        3. 接着看红色框框,第一组,rwx则为user可读可写可执行权限,类似于项目经理对这个文件(目录)可读可写可执行,r-x为可读不可写,可执行,即为同一个组下的成员的权限,r-x为其他人的权限,也可以可读、不可写、可执行
        4. 这部分建议多看几组数据,理解一下
      3. 第二栏表示连接占用的节点,若是目录,则表示该目录下还有几层目录。此部分在link档案时做详细介绍
      4. 第三栏为此档案(此文件)的拥有者,就像是作为开发人员,我负责的模块一样,我是模块的拥有者。对应第一栏的user的权限
      5. 第四栏则是拥有者所在的组名,即group名称,对应第一栏的group权限
      6. 第五栏为档案(文件)的大小,4096byte,4K的数据
      7. 第六栏好理解,为文件最后一次修改的日期(当没有被修改时,则是第一次创建的时间)
      8. 第七栏则是档案(文件)名称,假如是.开头,则是隐藏文件
    1. 内容扩充与注意项
      1. x表示可执行权限,假如没有它,则表示无法执行。与文件后缀是无关的,举个例子,Windows中可执行文件都是.exe .bat等结尾,而Linux中即使为这些后缀,但无可执行的权限,也是不能被执行
      2. 看一个例子,drwxr--r--    2 dandelion     dandelion         4096 Feb 10 00:44 .ssh。问题为other有木有读取此路径的权限
        1. 答案是没有,原因是,当档案为路径时,要操作此路径,则要使用ls,cd等指令,但是我们没有可执行的权限,所以即使给了read的权限,但是还差可执行权限,也就是说,两者缺一不可。
        2. 只有路径才这样,要是为- rwxr--r--    2 dandelion     dandelion         4096 Feb 10 00:44 .ssh,则可以读取档案(文件)
      3. 在看两个例子,案例来自于《鸟哥私房菜》
        1. 例题一:如果有下面的两个档案: 
        2. -rw-r--r--   1 root     root          238 Jun 18 17:22 test.txt -rwxr-xr--   1 test1    testgroup    5238 Jun 19 10:25 ping_tsai 请说明两个档案的拥有者与其相关的权限为何? 答:
          • 档案『 test.txt 』的拥有人为 root ,群组为 root 。至于权限方面则只有 root 这个账号可以存取此档案,其他人则仅能读此档案;
          • 另一个档案『 ping_tsai 』的拥有人为 test1 ,而群组为 testgroup。其中, test1 可以针对此档案具有可读可写可执行的权力,而同群组的 test2, test3 两个人与 test1 同样是 testgroup 的群组账号,则仅可读可执行但不能写 (亦即不能修改),至于非 testgoup 这一个群组的人则仅可以读,不能写也不能执行!
        3. 例题二:如果我的目录为底下的样式:
        4. drwxr-xr--   1 test1    testgroup    5238 Jun 19 10:25 groups/ 请问 testgroup 这个群组的成员与其他人( others )是否可以进入本目录? 答:
          • 档案拥有者 test1 可以在本目录中进行任何工作;
          • 而 testgroup 这个群组的账号,例如 test2, test3 亦可以进入本目录进行工作,但是不能在本目录下进行写入的动作;
          • 至于 other 的权限中虽然有 r ,但是由于没有 x 的权限,因此 others 的使用者,并不能进入此目录!
    2. Linux文件属性的重要性
      1. 此时你可以回过头看看使用者与群组的2、3项,相信你有更深层次的理解
  3. 如何更改档案权限,从大到小有三个可以改的地方
    1. 改变档案所属群组,可以理解为把A项目改为B项目组,那前者中的成员都会到后者里面去。
      1. 使用的指令是chgrp,charge group。值得注意的是,后者群组一定是存在的,否则会报错
    2. 改变档案拥有者,可以理解为换了项目经理。
      1. 使用的指令是chown,charge own。同理,后者拥有者必须是系统中存在的,否则会报错
    3. 改变档案自身的权限(九个权限),可以理解为档案自身的权限增加了或者减少了。
      1. 数字更改方式
        1. rwx分别对应,8421的后三位,即r为4、w为2、x为1,三者都有时,对应的数字为7。
        2. 例如 -rw-r--r--   1 root     root          238 Jun 18 17:22 test.txt  -rwxr-xr--   1 test1    testgroup    5238 Jun 19 10:25 ping_tsai, 对应的数字为644.
        3. 假如 -rwxrwxrwx, 为则为777
        4. 更改文件的代码为 chmod 权限数值 文件名,中间用空格隔开
          1. 如ping_tsai文件,想要给所有的权限,则可以用 chmod 777 ping_tsai
          2. 设置好只用用 ls -l ping_tsai查看文件的属性
        5. 建议自己创建一个文件,多多操作几遍权限的更改
    1. 符号更改方式
      1. 九种方式分别对应user,group,other三个小组,分别取首字母表示组,然后直接操作组,直接赋值权限
        1. chmod u=rwx,g=rw,o=r file.c,这样就给file.c文件赋予了-rwxrw-r--的属性,这种方式相对于数字更改方式更直接
      2. 更进一步处理,假如想批量操作呢,毕竟一个一个操作太繁琐,那么引入all的概念,也用首字母a,再引入加与减
        1. chmod a+w file.c,即file.c文件在原有的基础上都添加了写的功能,假如之前是-rwxrw-r--,那么则变成-rwxrw-rw-
          1. 同理chmod a-r file.c,是在原有的基础上减去读的功能
    2. 对于文件权限这块,从理论上理解好了往往不够,还需要实际多操作,能事半功倍。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux学习笔记 - Linux的文件目录与属性 的相关文章

  • 如何使用 sed 仅删除双空行?

    我找到了这个问题和答案 https stackoverflow com questions 4651591 howto use sed to remove only triple empty lines关于如何删除三重空行 但是 我只需要对
  • 在主目录中安装库

    在 Linux Ubuntu 中 我尝试运行一个工具 但它显示错误 库丢失 我无权在系统中安装任何内容 或者根本无法从我的用户帐户执行 sudo 是否可以在我的主目录 没有 sudo 中安装缺少的库 在我的例子中为 libstdc so 6
  • arm-linux-gnueabi 编译器选项

    我在用 ARM Linux gnueabi gcc在 Linux 中为 ARM 处理器编译 C 程序 但是 我不确定它编译的默认 ARM 模式是什么 例如 对于 C 代码 test c unsigned int main return 0x
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • diff 文件仅比较每行的前 n 个字符

    我有2个文件 我们将它们称为 md5s1 txt 和 md5s2 txt 两者都包含a的输出 find type f print0 xargs 0 md5sum sort gt md5s txt 不同目录下的命令 许多文件被重命名 但内容保
  • 在 Linux 上的 Python 中使用受密码保护的 Excel 工作表

    问题很简单 我每周都会收到一堆受密码保护的 Excel 文件 我必须解析它们并使用 Python 将某些部分写入新文件 我得到了文件的密码 当在 Windows 上完成此操作时 处理起来很简单 我只需导入 win32com 并使用 clie
  • 如何更改 Ubuntu 14.04 上的 php-cli 版本?

    我是 Linux 新手 在篡改时破坏了一些 php 设置 如果我执行一个包含以下内容的 php 脚本 phpinfo 它显示 php 版本为 5 6 但通过命令行 如果我运行php v它返回 7 0 版本 我想让两个版本匹配 我怎样才能修复
  • 如何模拟ARM处理器运行环境并加载Linux内核模块?

    我尝试加载我的vmlinux into gdb并使用 ARM 内核模拟器 但我不明白为什么我会得到Undefined target command sim 这是外壳输出 arm eabi gdb vmlinux GNU gdb GDB 7
  • 在 Linux 中禁用历史记录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 要在 Linux 环境中禁用历史记录 我执行了以下命令 export HISTFILESIZE 0 export HISTSIZE 0 u
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte
  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • 在 Mac OS X 上构建 Linux 内核

    我正在做一个修改Linux内核的项目 我有一台桌面 Linux 机器 在上面构建内核没有问题 不过 我要去旅行 我想在途中工作 我只有一台 MacBook 当我尝试构建 Linux 内核时 它抱怨说elf h was not found 我
  • 如何修复“iptables:没有该名称的链/目标/匹配”?

    我在我的 Linux 嵌入式系统上构建并安装了 iptables 如果我列出所有规则 则一切正常 iptables list Chain INPUT policy ACCEPT target prot opt source destinat
  • Elasticsearch 无法写入日志文件

    我想激活 elasticsearch 的日志 当我运行 elasticsearch 二进制文件时 我意识到我在日志记录方面遇到问题 无法加载配置 这是输出 sudo usr share elasticsearch bin elasticse
  • GLIBCXX_3.4.26 未找到在 BeagleBone 上运行交叉编译的程序

    我有以下程序 include
  • Linux中的CONFIG_OF是什么?

    我看到它在很多地方被广泛使用 但不明白在什么场景下我需要使用它 What is 配置 OF OF 的全名是什么 打开固件 这是很久以前发明的 当时苹果公司正在生产基于 PowerPC CPU 的笔记本电脑 而 Sun Microsystem
  • 使用 sed 更新 xml 属性(Windows + cygwin 和 Linux)?

    我需要使用 sed 命令对 xml 文件进行更新 但我在这方面遇到了麻烦 它需要在 Windows 使用 cygwin 和 Linux 上运行 XML 具有以下元素
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at

随机推荐

  • 一文搞定Postman(菜鸟必看)

    什么是Postman Postman是一个可扩展的 API 测试工具 可以快速集成到 CI CD 管道中 它于 2012 年作为 Abhinav Asthana 的一个副项目启动 旨在简化测试和开发中的 API 工作流程 API 代表应用程
  • java高并发多线程架构_java架构师指南 高并发和多线程的区别

    高并发和多线程 总是被一起提起 给人感觉两者好像相等 那它们之间究竟有什么区别呢 1 多线程 多线程是java的特性 也是java架构师必须掌握的一项技术 因为现在cpu都是多核多线程的 可以同时执行多个任务 为了提高JVM的执行效率 Ja
  • 搭建Obsidian+picGo+Lsky Pro图床

    搭建Obsidian picGo Lsky Pro图床 0 前言 去年心血来潮买了个小主机 搭建了家庭服务器 安装了PVE系统 散热拉胯 性能不足目前只创建了个黑群晖系统 搭建一个图床 方便日常笔记工作 1 软件 1 1 Obsidian
  • 浅谈App的性能优化

    浅谈App的性能优化 2018 01 02 说到 Android 系统手机 大部分人的印象是用了一段时间就变得有点卡顿 有些程序在运行期间莫名其妙的出现崩溃 打开系统文件夹一看 发现多了很多文件 然后用手机管家 APP 不断地进行清理优化
  • Git第十讲 Git如何正确使用log快速查找内容/提交

    在Git中 你可以使用不同的命令来快速查找指定内容或指定提交 下面我将介绍两种常用的方法 快速查找指定内容 要快速查找包含特定内容的文件或代码行 可以使用 git grep 命令 它类似于常见的 grep 命令 但是专门用于搜索Git仓库中
  • 以太坊交易确认数如何获取

    以太坊和比特币一样 都有一个最长链的概念 因此也有一个交易确认数的概念 当一个以太坊交易所在区块被新加入区块链时 该交易的确认数为1 之后每增加一个区块 该交易的确认数加1 显然 一个以太坊交易的确认数越多 就意味着该交易在区块链中埋的越深
  • html css js实现抽奖,原生(纯)js+html+css实现移动端抽奖转盘系统

    这是我前个月使用纯javascript html写出的一个抽奖转盘系统 按理来说 我应该在当时做完这个小系统 就应该立即写bike总结才对 但是本人之前没有在网上写博客的习惯 平时总结更加习惯写在纸上 但是现在发现卸载网上可能更好 博客中有
  • 【第26篇】Swin Transformer

    文章目录 摘要 1 简介 2 相关工作 3 方法 3 1 整体架构 3 2 基于移动窗口的自注意力 3 3 架构变体 4 实验 4 1 ImageNet 1K 上的图像分类 4 2 COCO 上的物体检测 4 3 ADE20K 上的语义分割
  • 2. ZK客户端与服务端建立连接的过程(基于NIO)

    ZK客户端与服务端建立连接的过程 引例 1 启动SendThread 2 状态初始化 3 开始连接 4 处理服务端连接响应 5 流程图 在上一篇 客户端启动源码分析 文章中讲到了客户端会使用两个线程 SendThread和EventThre
  • C#知识系列:nameof 运算符

    插眼 总结 获取变量名 避免因为变量名而声明字符串 参考 官方文档 https docs microsoft com zh cn dotnet csharp language reference operators nameof 其他参考
  • Qt 信号与槽 传输自定义结构体跨线程访问程序异常退出问题

    Qt 信号与槽 传输自定义结构体跨线程访问程序异常退出问题 在使用自定义结构体的时候发现在同一个线程里面的信号发送和槽函数访问使用是正常的 当跨线程信号与槽连接访问自定义结构体时发生访问异常程序异常退出 通过尝试找到问题 解决办法如下 自定
  • 基于STM32f103c8t6的测温枪设计过程

    体温枪设计 设计流程 一 开发板和模块的介绍 1 STM32F103C8T6开发板 2 MLX90614测温模块 3 TM1650红外数码管 二 硬件连接 1 STM32F103C8T6引脚图 2 MLX90614测温模块连接原理图 3 T
  • 实训报告:C&C++ 结构实训 - 深入学习与实践

    实训报告 C C 结构实训 深入学习与实践 引言 C和C 是广泛应用于软件开发领域的编程语言 它们为开发人员提供了强大的工具和灵活性 本篇文章将围绕 C C 结构实训展开 深入学习并实践其中的关键概念与技术 一 简介 C C 结构实训是一项
  • Spark内存管理

    概述 spark从1 6 0开始内存管理发生了变化 原来的内存管理由StaticMemoryManager实现 现在被称为Legacy 在1 5 x和1 6 0中运行相同代码的行为是不同的 为了兼容Legacy 可以通过spark memo
  • python综合案例

    综合案例 1 需求分析 2048游戏是一款数字益智游戏 如图所示 具体游戏规则如下 玩家每次可以选择上下左右其中一个方向移动 每移动一次 所有数字方块都会往移动的方向靠拢 相同数字方块在靠拢时会相加 每次移动完成后 系统会在空白的方块中随机
  • QSS的使用

    QSS官方文档 https doc qt io qt 5 stylesheet reference html 图标制作例子 normal hover press disable 图标制作 按钮设计指南 按钮多态的几种方法 一 程序应用qss
  • 微信小游戏入门案例——拼图游戏

    微信小游戏入门案例 拼图游戏 涉及内容 canvas组件 小程序界面绘图API 目录结构 pages game game js pages game game js 方块的初始位置 var num 00 01 02 10 11 12 20
  • Python 元组tuple详解(超详细)

    文章目录 Python内置函数 方法详解 元组tuple 1 创建元组 1 1 使用 创建元组 1 2 使用 tuple 函数 创建元组 1 3 元组 单个元素 1 4 元组 VS 列表 2 访问元组 2 1 下标索引访问 2 2 切片访问
  • qt 修改设计师界面ui不生效

    情况描述 我是之前用的vs编译器 编译的文件在代码界面 不喜欢这种方式 想要生成的文件都在一个界面 然后我又换回了MinGW编译器 然后在设计师界面修改了ui 重新编译一直不生效 网上常用两种方法 1 在设置中取消shadow 就会重新编译
  • Linux学习笔记 - Linux的文件目录与属性

    Linux的文件目录与属性 使用者与群组 这里面涉及三个概念 分别为user group other 先讲group 即组的概念 可以理解为一个项目的开发 一个组里面有若干个组员 每个组员负责一个模块的功能开发 大家都能够访问公共部分的代码