07_linux档案与目录管理【linux私房菜学习笔记】

1.目录与路径

1、cd(Change Directory):切换目录

2、pwd:显示当前目录

  • -P选项:显示出确切的路径,而非使用链接(link)路径。
    • image-20211108154450679

3、mkdir:建立一个新的目录

  • -m选项:配置文件案的权限。可以直接设定。(如果未加-m选项,会使用系统默认属性)

    • image-20211108154718788
    • image-20211108154817326
  • -p选项:帮助你直接将所需要的目录(包括上层目录)递归建立起来

    • image-20211108154732275

4、rmdir:删除一个[空]的目录

  • -p选项:连同上层[空]目录也一起删除掉。

    • image-20211108155214395

    **注:**如果想要将目录下所有的档案都删除,可以使用[rm - r 档案or目录名称]。

5、关于执行文件路径的变量:$PATH

  • 系统会依据PATH的设定去每个PATH定义的目录下搜寻文件名为(ls或者其它名称)的可执行文件,如果在PATH定义的目录中含有多个文件名为ls的可执行文件,则先被搜索到的同名指令会被先执行。

  • 例如:(通过echo 打印出环境变量的值)($表示后面接的是变量)

    • root用户的$PATH:
      • image-20211108155925012
    • 普通用户的$PATH:
      • image-20211108155933399
  • 因为无论是root还是普通用户的$PATH变量的内容都包含了/bin这个目录在环境变量内,所以就能够在任何地方使用ls指令找到/bin/ls执行档

  • 案例:

    • 案例1:
      • image-20211108160741053
    • 案例2:
      • image-20211108160832924image-20211108160846224
  • 总结:

    • 不同用户身份使用者预设的PATH不同,默认能够随意执行的指令也不同(如root和其它普通用户)
    • PATH是可以修改的,一般使用者还是可以通过修改PATH来执行某些位于/sbin或者/usr/sbin下的执行来查询。
    • 使用绝对路径或相对路径直接指定某个指令的文件名来执行,会比搜寻PATH来的正确和快速;
    • 指令应该放置到正确的目录下,执行才比较方便。
    • 当前目录(.)最好不要放在PATH当中

2.档案与目录管理

1、档案与目录的检视:ls

2、复制、删除、移动:cp,rm,mv

  • cp(复制档案或目录)

    • image-20211109175350072
    • 注意点
      • 是否需要完整保留来源档案信息
      • 来源文档是否为连接档
      • 来源档是否为特殊的档案,如FIFO,socket等
      • 来源文件是否是目录
  • rm(移除档案或目录)

    • image-20211109183315437
  • mv(移动档案与目录,或更名)

    • image-20211109184216122

3、取得路径的文件名与目录名称(可以用在shell scripts里面)

  • basename(取得最后的档名)
    • image-20211109184918791
  • dirname(取得其所在目录名称)
    • image-20211109184928278

3.档案内容查阅

1、查阅档案内容的相关指令(一次性显示全部)

  • image-20211109185148569

  • cat(Concatenate (连续)正向显示)

    • 选项
      • image-20211109185220769
  • tac(反向显示,从最后一行开始)

  • nl(添加行号打印)

    • 选项
      • image-20211109185844738
      • image-20211109185852951

2、可翻页检视

  • more(一页页显示)

    • image-20211109191102895
    • 搜寻字符串功能
      • image-20211109191332736
  • less(一页页显示)

    • image-20211109191625163

3、修改档案时间或者建立新档案(touch)

  • 三个主要的变动时间

    • modification time(mtime):当该档案的[内容数据]变更时,就会更新这个时间。(ls默认显示的时间)
    • status time(ctime):该档案的[状态]改变时,就会更新这个时间,如档案权限与属性。
    • access time(atime):当档案的内容被读取取用时,就会更新这个时间。
  • 可选项:

    • image-20211109193907522

4、档案权限设置:umask

  • 用于指定当前用户在建立档案或者目录时候的权限默认值。

    • 建立档案时:(-rw-rw-rw-) - (-----w–w-) ==> -rw-r–r--
    • 建立目录时:(drwxrwxrwx) - (d----w–w-) ==> drwxr-xr-x
  • 实例:

    • image-20211109204916281
  • unmask一般用于专题制作,让不同用户将umask修订为002,使得群组的用户均能够修改访问被建立的文档或者目录。

    • image-20211109205150720
  • 一般来说,基于安全性考虑,root的umask为002,而普通用户的umask为022。

5、档案的隐藏属性

  • chattr(配置文件案隐藏属性)
  • lsattr(显示档案隐藏属性)

6、档案特殊权限

  • SUID的特殊权限(Set UID):

    • SUID权限仅对二进制程序有效,不能用在shell script上
    • 执行者对于该程序需要具有x的可执行权限
    • 本权限仅在执行该程序的过程中有效
    • 执行者将暂时具有该程序拥有者的权限
  • SGID的特殊权限(Set GID)

    • 对于档案来说:
      • SGID对二进制程序有用;
      • 程序执行者对于该程序来说,需要具备x的权限。
      • 执行者在执行过程中将会或者该程序群组的权限支持
    • 对于目录来说:
      • 用户若对于此目录具有r,x的权限时,该用户能够进入此目录
      • 用户在此目录下的有效群组将会变为该目录的群组
      • 用途:若用户在此目录下具有w权限(可以新建档案),则使用者所建立的新的档案,该档案的群组与此目录的群组相同。
  • SBIT的特殊权限(Sticky Bit):仅仅针对目录有效

    • 当用户对于此目录具有w,x权限,即具有写入的权限时。
    • 当用户在该目录下建立档案或者目录时,仅有自己与root才有权力删除该档案。

6、SUID/SGID/SBIT 权限设定

  • 权限代表数字

    • 4为SUID
    • 2为SGID
    • 1为SBIT
  • 案例

    • image-20211109212223764
    • S或者T代表为空SUID/SGID权限,因为原来的用户/群组不具备可执行x权限。
  • 权限代表符号:

    • SUID:u+s
    • SGID:g+s
    • SBIT:o+t
    • image-20211109212617989

7、观察文件类型:file

  • 通过file指令可以了解某个档案的基本数据以及格式,例如是属于ASCII或者是data档案,或者是binary,以及其中有没有使用到动态函式库等等信息。

4、指令与档案搜寻

1、脚本文件名的搜寻

  • which(寻找[执行档])
    • image-20211109213255846

2、档案名的搜寻

  • whereis(寻找特定的档案)

    • 可选项
      • image-20211109213540601
      • 该指令会在数据库档案里面找,所以查找速度较快,而find会在硬盘中找,查找速度会很慢。
  • locate(根据档案的部分名称查找)

    • 可选项:
      • image-20211109213835278
    • 该指令会在已建立的数据库 /var/lib/mlocate/中去查找。根locate指令一样,速度相比于find会很快。但由于一些distribution设定的数据库是每天更新一次,所以有可能查找不到新建立起来的档案。
    • 手动更新数据库:输入updatedb
      • updatedb:根据/etc/updatedb.conf的设定去搜寻系统硬盘内的文件名,并更新/var/lib/mlocate内的数据库档案。
      • locate:依据/var/lib/mlocate内的数据库记载,找出用户输入的关键词文件名。
  • find(可以加入很多选项来查询文件系统,从硬盘中查询,速度较慢)

    • 可选项1:

      • image-20211109214717400
    • 可选项2:

      • image-20211109215156750
    • 可选项3:

      • image-20211109215308073

      • image-20211109215319584

    • 额外可选项:

      • image-20211109215601391

      • 例如:

        • image-20211109215805255

        • image-20211109215825068

5、权限项目实战

1、要求:

  • image-20211109221704679

2、实现步骤:

  • 首先:制作出两个账号的相关数据,以及制作工作群组。且保证两个用户均支持project这个群组。

    • image-20211109221931676
  • 步骤1:建立所需要开发的项目目录

    • image-20211109221957763
  • 步骤2:由于此时alex和arod都不能在目录内建立档案,所以需要进行目录权限与属性的修改。由于其他人均不可以进入此目录,因此该目录的群组为project,权限为770。

    • image-20211109222133750
  • 步骤3:使用两个用户来测试,先用alex建立档案,然后用arod去处理。若只是使用传统的rwx的权限,则对刚刚alex用户建立的abcd这个档案,arod可以删除,但是不可以编辑它。

    • image-20211109222209752
  • 加入SGID权限给项目开发目录。让不同用户在该开发目录下新建目录或者档案时,都是以project群组的身份去创建。

  • [外链图片转存中…(img-wGPGZMmZ-1636598818806)]

  • 步骤3:使用两个用户来测试,先用alex建立档案,然后用arod去处理。若只是使用传统的rwx的权限,则对刚刚alex用户建立的abcd这个档案,arod可以删除,但是不可以编辑它。

    • [外链图片转存中…(img-0eZvP302-1636598818807)]
  • 加入SGID权限给项目开发目录。让不同用户在该开发目录下新建目录或者档案时,都是以project群组的身份去创建。

    • image-20211109222421816
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值