# Linux文件与目录管理

  • 绝对路径:由/根目录写起;相对路径:不由/写起,而是相对当前目录写起。
  • 绝对路径的正确度要比相对路径好。在写程序(shell)来管理系统时,务必使用绝对路径。
  • 特殊目录有:...-~~account
  • 与目录相关的命令有:cd、mkdir、rmdir、pwd等命令。
  • rmdir仅能删除空目录,要删除非空目录需要使用【rm -r】命令。
  • 用户能使用的命令是依据PATH变量所规定的目录去查找的。
    • 不同身份用户默认的PATH不同,默认能够随意执行的命令也不同(如root与work)。
    • PATH是可以修改的。
    • 使用绝对路径或相对路径直接指定某个命令的文件名来执行,会比查找PATH来的正确。
    • 命令应该要放置到正确的目录下,执行才会方便。
    • 本目录(.)最好不要放在PATH当中。
  • ls可以查看文件的属性,尤其-d、-a、-l等选项特别重要。
    • 默认显示只有:非隐藏文件的文件名、以文件名进行排序及文件名代表的颜色显示。
  • 文件的复制、删除、移动可以分别使用:cp、rm、mv等命令操作。
    • cp除了单纯的复制,还可以建立链接文件(快捷方式),比对两文件新旧更新,复制整个目录等功能。
    • 在默认的条件中,cp的源文件与目标文件的权限是不同的,目标文件的拥有者通常会是命令操作者本身。比如,我的身份是root,那么我执行cp复制后的文件拥有者与用户组也会变成root。因此需要注意权限改变
    • 因为cp有种种的文件属性与权限的特性,复制时需要注意
      • 是否需要完整保留源文件的信息?
      • 源文件是否为符号链接文件(symbolic link file)?
      • 源文件是否为特殊的文件,例如FIFO、socket等?
      • 源文件是否为目录?
    • 使用rm -r之前,一定得注意,因为该目录或文件肯定会被root删除,系统不会有提示语句来询问你是否删除。
    • 文件名最好不使用-开头,因为系统会将-识别为命令参数。可以用以下两种方法执行命令。
      • rm ./-aaa.txt
      • rm -- -aaa.txt
    • mv除了移动文件和目录时,还可以用来测试新旧文件,看看是否需要移动,还可以修改文件名,不过Linux有个rename命令,可以用来更改大量文件的文件名。
  • basename,获取路径的文件名命令;dirname,获取路径的目录名。
    • basename /etc/sysconfig/network network
    • dirname /etc/sysconfig/network /ets/sysconfig
  • 检查文件的内容(读文件)可使用的命令包括:cat、tac、nl、more、less、head、tail、od等。
    • cat由第一行开始显示文件内容。
    • tac由最后一行开始显示文件内容。
    • nl显示内容的同时输出行号。
    • more一页一页地显示文件内容。
    • less与more类似,但是比more更好的是,它可以往前翻页。
    • head只看前面几行。
    • tail只看后面几行。
    • od以二进制的方式读取文件内容。
  • cat -n与nl均可显示行号,但默认的情况下,cat -n空白行有行号,nl空白行没有行号。
  • touch的目的是修改文件的时间参数(mtime与atime),但也可用来建立空文件。
  • 一个文件记录的时间参数有三种,分别是读取时间(access time, atime)、状态时间(status time, ctime)、修改时间(modification time, mtime),ls 默认显示的是mtime。
  • 除了传统的rwx权限之外,在ext2、ext3、ext4、xfs文件系统中,还可以使用chattr与lsattr设置及观察隐藏属性,常见的有只能新增数据的+a与完全不能修改文件的+i属性。
  • 新建文件/目录时,新文件的默认权限使用umask来规范,默认目录的完全权限为drwxrwxrwx,文件则为-rw-rw-rw-。
  • 文件具有SUID的特殊权限时,代表当用户执行此二进制程序时,在执行过程中用户会暂时具有程序拥有者的权限。
    • SUID是Set UID简称。
    • SUID权限仅对二进制程序有效。
    • 执行者对于该程序需要具有x的可执行权限。
    • 执行者在执行的过程中将会获得该程序用户组的支持。
  • 目录具有SGID的特殊权限时,代表用户在这个目录下面新建的文件的用户组都会与该目录的组名相同。
    • 用户若对此目录具有r与x权限时,该用户能够进入此目录。
    • 用户在此目录下的有效用户组(effective group)将会变成该目录的用户组。
    • 用途:若用户在此目录下具有w的权限(可以新建文件),则用户所建立的新文件,该新文件的用户组与此目录的用户组相同。
  • 目录具有SBIT的特殊权限时,代表在该目录下用户建立的文件只有自己与root能够删除。
    • SBIT是Sticky Bit简称。
    • 当用户对于此目录具有w、x权限,即具有写入的权限。
    • 当用户在该目录下建立文件或目录时,仅有自己与root才有权力删除该文件。
  • 添加以上三个权限的方式就是在表示权限的三个数字前再添加一个数字就行。
    • 4为SUID。
    • 2为SGID。
    • 1为SBIT。
  • 观察文件的类型可以使用file命令来观察。
  • 查找命令的完整文件名可用which或type,这两个命令都是通过PATH变量来查找文件名。
  • 查找文件的完整文件名可以使用whereis找特定目录或locate到数据库取查找,而不实际查找文件系统。
  • 利用find可以加入许多选项来直接查询文件系统,以获得自己想要知道的文件。

# 复习,权限与命令间的关系

权限对于用户账号是非常重要的,它可以限制用户读取、建立、删除、修改文件和文件夹的权力。而本章介绍了很多文件权限的意义。因此,我们来结合一下文件的权限和用户的权限。说明一下什么命令在什么样的权限下才可以运行。

  • 让用户能进入某目录成为可工作目录的基本权限是什么?
    • 可使用的命令:例如cd等变换工作目录的命令。
    • 目录所需权限:用户对这个目录至少需要具有x权限
    • 额外需求:如果用户想要在这个目录内利用ls查看文件名,则用户对此目录还需要r的权限。
  • 用户在某个目录内读取一个文件的基本权限是什么?
    • 可使用的命令:例如本章谈到的cat、more、less等。
    • 目录所需权限:用户对这个目录至少需要具有x权限。
    • 文件所需权限:用户对文件至少需要具有r的权限才行
  • 让用户可以修改一个文件的基本权限是什么?
    • 可使用的命令:例如nano或未来要介绍的vi编辑器等。
    • 目录所需权限:用户在该文件所在的目录至少要有x权限。
    • 文件所需权限:用户对该文件至少要有r、w权限
  • 让一个用户可以建立一个文件的基本权限是什么?
    • 目录所需权限:用户在该目录要具有w、x的权限,重点在w
  • 让用户进入某目录并执行该目录下的某个命令之基本权限是什么?
    • 目录所需权限:用户在该目录至少要有x的权限。
    • 文件所需权限:用户在该文件至少需要有x的权限。
最近更新时间: 2020/9/6 11:30:38