鸟叔 Linux 学习记录 - 第五章 Linux的文件权限及目录配置 更新完成

第5章 Linux 的文件权限和目录配置

5.1 用户与用户组

  1. 文件拥有者
  2. 用户组概念
  3. 其他人的概念

1691664812082

Linux 用户身份与用户组记录的文件

默认情况下,所有的系统上的账号和一般身份用户,还有那个root的相关信息,都记录在 /etc/passwd 这个文件内;个人的密码记录在 /etc/shadow 这个文件内;Linux 所有的组名都记录在 /etc/gtoup中

5.2 Linux 文件权限概念

5.2.1 Linux 文件属性

1691665370686

1691665797203

  • 第一栏代表文件的类型与权限
    • 第一个字符代表这个文件是目录、文件或链接文件等:
      • [d]:目录
      • [-]:文件
      • [l]:链接文件
      • [b]:设备文件里面的可供存储的周边设备
      • [c]:设备文件里面的串行端口设备
    • 接下来的字符中,以三个为一组,且均为【rwx】的三个参数的组合
      • [r]:可读
      • [w]:可写
      • [x]:可执行
      • 这三个权限的位置不会改变,如果没有权限,就会出现减号[-]而已
    • 第一组为文件拥有者可具备的权限
    • 第二组为加入此用户组的账号的权限
    • 第三组为非本人且没有加入本用户组账号的权限
  • 第二栏表示有多少文件名链接到此节点
  • 第三栏表示这个文件或目录的拥有者账号
  • 第四栏表示这个文件的所属用户组:在 Linux 系统下,你的账号可以加入一个或多个用户组中
  • 第五栏为这个文件的容量大小,默认单位为 Bytes
  • 第六栏为这个文件的创建日期或是最近修改的日期
  • 第七栏为文件名:如果文件名之前多一个【.】,则代表这个文件为隐藏文件
例题一

假设 test1、test2、test3 均属于 testgroup 这个用户组,如果有下面两个文件,请说明两个文件的拥有者与其相关的权限是什么?

-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

答:

  • 第一个文件,文件拥有者是 root,具有读和写的权限,所属用户组是 root,故上述三个用户对于此文件属于其他人,权限为读
  • 第二个文件,文件拥有者是 test1,所属用户组是 testgroup
    • 因此 test1 用户的权限是读写和执行
    • test2、test3 属于 testgroup 用户组,因此权限是读和执行
    • 其他人的权限是读取
例题二

承接上一题,如果我的目录为下面的样式,请问 testgroup 这个用户组的成员与其他人是否可以进入本目录?

drwxr-xr--   1   test1   testgroup   5238  Jun 19 10:25 groups

答:

这个目录拥有者是 test1,所属用户组是 testgroup,故:

  • 拥有者有读写执行的权限,可以在本目录进行任何操作

  • 这个用户组的权限是读和执行,所属用户组的成员可以进入该目录,但不能对该目录进行写入操作

  • 其他人仅有读取的权限,但没有执行的权限,因此不能进入该目录

Linux 文件权限的重要性
  • 系统保护的功能
  • 团队开发软件或数据共享的功能
  • 未将权限设置妥当的危害:可能造成其他人都可以在你的系统上乱搞,导致系统挂掉等问题

5.2.2 如何修改文件属性与权限

  • 修改所属用户组,chgrp
chgrp [-R] groupname dirname/filename
# -R 进行递归修改,即连同子目录下的所有文件、目录都更新成为这个用户组

eg:
前提:/etc/group 里存在users的用户组,testing 用户组不在其中
chgrp users initial-setup-ks.cfg
chgrp testing initial-setup-ks.cfg

1691675013779

  • 修改文件拥有者,chown
chown [-R] 账号名称 文件/目录 # 仅修改文件拥有者
chown [-R] 账号名称:用户组名称 文件/目录 # 修改用户组和文件拥有者

eg:
chown xuan initial-setup-ks.cfg
chown root:root initial-setup-ks.cfg

1691675448714

什么时候需要修改文件的拥有者?

复制文件给你之外的其他人时

eg:
前提:家目录里有 .bashrc 的文件,将其复制成 .bashrc_test,并给 xuan 用户使用
cp .bashrc .bashrc_test
chown xuan:users .bashrc_test

1691675818883

  • 修改文件权限,chmod

    • 数字类型修改文件权限

      • r:4
      • w:2
      • x:1
      chmod [-R] xyz 文件或目录
      # xyz : 每种身份各自权限相加
      
      eg:
      将 .bashrc 这个文件的权限全部启用
      chmod 777 .bashrc
      变更权限为【-rwxr-xr--】
      chmod 754 .bashrc
      修改回【-rw-r--r--】
      chmod 644 .bashrc
      

      1691676341580

    • 符号类型修改文件权限

      • user:u
      • group:g
      • others:o
      • all:a,即所有身份
      • +:加入权限
      • -:移除权限
      • =:设置权限
      • r、w、x:读写执行的权限
      eg:
      设置一个文件的权限为【-rwxr-xr-x】
      chmod u=rwx,go=rx .bashrc
      # u=rwx,go=rx 连在一起,没有空格;注意需要设置几个权限就写几个,不要写成 go=r-x
      设置一个文件的权限为【-rwxr-xr--】
      chmod u=rwx,g=rx,o=r .bashrc
      如果不知道文件原来的权限,只想增加每个人均可写入的权限
      chmod a+w .bashrc
      如果要将权限去掉而不修改其他已存在的权限
      chmod a-x .bashrc
      

      1691677469939

+与-的状态下,只要是没有指定到的项目,则该权限不会被变动

5.2.3 目录与文件的权限意义

  • 权限对文件的重要性
    • r:可读取此文件的实际内容
    • w:可以新增、编辑或修改该文件的内容(但不包含删除该文件)
    • x:该文件具有可以被系统执行的权限(在windows下,可以借由扩展名来判断文件是否可以被执行,但在Linux系统里,则是借由是否具有【x】来判断
  • 权限对目录的重要性
    • r:具有读取目录结构列表的权限
    • w:具有改动该目录结构列表的权限
      • 建立新的目录与文件
      • 删除已经存在的目录与文件(不论该文件的权限是什么)
      • 将已经存在的目录或文件进行更名
      • 移动该目录内的文件、目录位置
    • x:用户能否进入该目录成为工作目录的用途,所谓的工作目录就是你目前所在的目录
组件内容替代对象rwx
文件详细数据文件夹读到文件内容修改文件内容执行文件内容
目录文件名可分类抽屉读到文件名修改文件名进入该目录的权限

总结:对一般文件来说,rwx 主要是针对文件内容来设计权限的,对目录来说,rwx 则是针对目录内的文件名列表来设计权限

例题

有个目录权限如下所示:

drwxr--r--   3  root  root   4096   Jun 25 08:35 .ssh

系统有个账号名为 vbird,这个账号并不支持 root 用户组,请问 vbird 对这个目录有何权限?是否可以切换到此目录中?

答:vbird 对这个目录属于其他人,仅有 r 的权限,可以查询此目录下的文件名列表,因为 vbird 不具备 x 的权限,因此无法进入到此目录中

此外,工作目录对于命令的执行是非常重要的,如果在某一目录下不具备 x 的权限,那么就无法切换到该目录下,也就无法执行该目录下的任何命令,即使你具有该目录的 r 或 w 权限。

需要注意:要开放命令给任何人浏览,应该至少给予 r 及 x 的权限,但 w 的权限不可随便给

例题

假设有个账号名称为 dmtsai,它的家目录 /home/dmtsai,dmtsai 对此目录具有 【rwx】的权限,若此目录下有个名为 the_root.data 的文件,文件权限如下:

-rwx------   1   root   root    4365   Sep 19 23:20  the_root.data

请问 dmtsai 对此文件的权限是什么?是否可以删除此文件?

答:dmtsai 对于此文件属于其他人,没有任何权限;但此文件在 /home/dmtsai 该目录下,dmtsai 对此目录具有全部权限,因此可删除该文件

5.2.4 Linux 文件种类与扩展名

  • 文件种类

    • 常规文件 【-】
      • 纯文本文件:人类可以直接读到的数据,例如数字、字母等,几乎只要可以用来做为设置的文件都属于这一种文件类型
      • 二进制文件:可执行文件(scripts,脚本文件不算)就是这种格式
      • 数据文件:有些程序在运行的过程当中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件
    • 目录 【d】
    • 链接文件 【l】
    • 设备与设备文件
      • 区块设备文件 【b】:一些存储数据,以提供系统随机存取的接口设备,例如硬盘、软盘等
      • 字符设备文件 【c】:一些串行端口的接口设备,例如键盘、鼠标等
    • 数据接口文件 【s】:通常被用在网络上的数据交换
    • 数据传输文件 FIFO, pipe【p】
  • Linux 文件扩展名

    具有可执行的权限以及具有可执行的程序代码是两回事,例如之前写的 text.txt 具有可执行的权限,但这个文件无法被执行,因为它的内容不具备可执行的程序代码。所以说,这个x代表这个文件具有可执行的能力,但能不能执行成功,当然就得要看该文件的内容

    • *.sh:脚本或批处理文件
    • *Z *.tar *.tar.tz *.zip *.tgz:经过打包的压缩文件
    • *.html *.php:网页相关文件
  • Linux 文件名长度限制

    • 单一文件或目录的最大容许文件名为 255 字节
  • Linux 文件名的限制

    • 避免使用一些特殊字符:* ? < > ; & ! [ ] | \ ’ ’ " " ` { }
    • 文件名的开头为小数点【.】,代表隐藏文件,需要避免
    • 避免以 - 或 + 来命名

5.3 Linux 目录配置

5.3.1 Linux 目录配置的依据——FHS

FHS的目的:让用户可以了解到已安装软件通常放置于哪个目录下

目录的四种类型:

  • 可分享:可以分享给其它系统挂载使用的目录
  • 不可分享:自己机器上面运行的设备文件或是与程序有关的 socket 文件等,不可分享给其它主机
  • 不变:有些数据是不会经常变动的,跟随着发行版而不变动
  • 可变动:经常修改的数据

FHS针对目录架构仅定义出三层目录下面应该放置什么数据而已

  • 根目录(/)的意义与内容

    根目录是整个系统最重要的一个目录,因为所有的目录都是根据根目录衍生出来的,同时根目录也与启动、还原、系统修复等操作有关

    注:以账号的角度来看,root 指系统管理员的身份;以目录的角度来看,root 指根目录,即 /

    FHS标准建议:根目录所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好。如此不但性能较佳,根目录所在的文件系统也较不容易发生问题

    常用的目录:

    • /etc/opt:放置第三方辅助软件 /opt 的相关配置
    • /opt:第三方辅助软件放置的目录
  • /usr 的意义与内容

    UNIX操作系统软件资源所放置的目录

    FHS建议所有软件开发者,应该将他们的数据合理地分别放置在这个目录下的子目录,而不要自行建立该软件自己独立的目录

  • /var 的意义与内容

    系统运行后才会渐渐占用硬盘容量的目录

    /var/log:重要,日志文件放置的目录,比较重要的文件有/var/log/messages、/var/log/wtmp(记录登录信息)等

5.3.2 目录树(directory tree)

主要的特性有:

  • 目录树的起始点为根目录(/,root)
  • 每一个目录不止能使用本地分区的文件系统,也可以使用网络上的文件系统,举例来说,可以利用 NFS 服务器挂载某些特定的目录
  • 每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的

5.3.3 绝对路径与相对路径

根据文件名写法的不同,也可将路径定义为绝对路径和相对路径:

  • 绝对路径:由根目录开始写起的文件名或目录名,如:/home/xuan/.bashrc
  • 相对路径:相对于目前路径的文件名写法,如:./home/xuan

注意两个特殊的目录:

  • .:代表当前的目录,也可使用 ./
  • …:代表上一层目录,也可以 …/来表示
  • 27
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
鸟叔的《Linux私房菜:基础篇》是一本关于Linux操作系统的经典教材。这本书主要介绍了Linux的基础知识和技巧,包括Shell编程、并发编程、机器学习等方面的内容。这本书在Linux爱好者和系统管理员中非常受欢迎,因为它以简洁明了的方式介绍了Linux的各种功能和用法。在阅读这本书之后,读者可以从零开始学习和掌握Linux操作系统,并且能够进行一些简单的Shell编程和系统管理任务。鸟叔的《Linux私房菜:基础篇》是学习Linux的很好的参考书籍,对于想要深入了解Linux的人来说是必读的一本书。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [2021-09-13 《鸟叔Linux私房菜》阅读纪录 第一章-Linux是什么&&如何学习-Linux 是什么&&Torvalds的Linux ...](https://blog.csdn.net/qq_40855242/article/details/121912323)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [CS_learning_record:CS相关知识](https://download.csdn.net/download/weixin_42128988/15911394)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值