--- layout: post title: Linux 3:文件与目录管理 category: 技术 tags: Linux keywords: description: --- ### 目录的相关操作 ``` . # 代表此层目录 .. # 代表上一层目录 - # 代表前一个工作目录 ~ # 代表『目前使用者身份』所在的家目录 ~account # 代表 account 这个使用者的家目录(account是个帐号名称) ``` - 在所有目录底下都会存在的两个目录,分别是`.`与`..` - 根目录的上一层`(..)`与根目录自己`(.)`是同一个目录 #### 几个常见的处理目录的命令 - cd:变换目录,cd是Change Directory的缩写 - pwd:显示目前的目录,pwd是Print Working Directory的缩写 - mkdir:创建一个新的目录 - rmdir:删除一个空的目录 - mv:移动文件 ``` pwd -P # -P:代表显示正确的完整路径,而不是连接路径 mkdir -m xxx # -m:直接配置文件的权限 mkdir -p test1/test2 # -p:直接将所需要的目录(包含上一级目录)递回创建起来! PATH="$PATH":/root # 将/root路径加入PATH环境变量中 ``` ### 文件与目录管理 - 文件与目录的检视: ls - 复制、删除与移动: cp, rm, mv ``` cp -a # 将文件的所有特性都一起复制过来 cp -p # 连同文件的属性一起复制过去,而非使用默认属性(备份常用) cp -r # 可以复制目录,但是,文件与目录的权限可能会被改变 rm -i # 互动模式,在删除前会询问使用者是否动作 rm -r # 连目录下的东西一起删掉,并且不会询问,慎用 mv -f # force强制移动,如果目标文件已经存在,不会询问而直接覆盖 mv -i # 若目标文件 (destination) 已经存在时,就会询问是否覆盖 ``` ### 文件内容查询 - 直接检视文件内容: cat, tac, nl (常用) - 可翻页检视: more, less (常用) - 数据撷取: head, tail - 非纯文字档: od - 修改文件时间与建置新档: touch ``` cat [-AbEnTv] filename # 由第一行开始显示文件内容。-b列出非空白行行号;-n列出所有行号。 tac # 从最后一行开始显示文件内容,tac就是cat倒着写! nl # 显示文件内容,顺便输出行号 more # 一页一页地显示文件内容 less # 与more类似,但可以往前翻页 head [-n number] # 只看文件头几行,默认是10行,number是自定义行数 tail # 只看文件尾几行,文件很大的时候常用 od # 以二进制方式读取文件内容 ``` ### 文件与目录的默认权限与隐藏权限 - 文件默认权限:umask - 文件隐藏属性: chattr, lsattr - 文件特殊权限:SUID, SGID, SBIT, 权限配置 - 观察文件类型:file ``` umask # 后三位数是被拿走的权限分数,比如0022,u没有被拿走权限,g和o被拿走了w权限 umask -S # 以符号类型来显示权限 umask number # 配置自己需要的权限 ``` 在默认的情况中,root的umask会拿掉比较多的属性,root的umask默认是`022`, 这是基於安全的考量啦~至於一般身份使用者,通常他们的 umask 为`002` ,亦即保留同群组的写入权力。 - 特殊权限`s`和`t` - Set UID,简称SUID,当s标志在文件拥有者的x项目为SUID,对目录无效 - Set GID,简称SGID,当s标志在群组的x项目为SGID,对目录有效 - Sticky Bit, 简称SBIT,目前只针对目录有效,对於文件已经没有效果了 ### 配置SUID,SGID,SBIT权限 在原有的权限数字前面加上需要配置的权限数字。 比如`755`->`4755` ,就意味着`-rwxr-xr-x`变为了`-rwsr-xr-x`。 - 4 为 SUID - 2 为 SGID - 1 为 SBIT ``` chmod 4755 filename chmod u=rwxs,go=x test; ls -l test # 配置权限为-rws--x--x的模样 chmod g+s,o+t test; ls -l test # 配置权限为-rws--s--t,即加入SGID,SBIT权限 ``` ### 命令与文件的搜寻 - 命令档名的搜寻:which - 文件档名的搜寻:whereis, locate, find ### 权限与命令的关系 #### 一、让使用者能进入某目录成为『可工作目录』的基本权限为何: - 可使用的命令:例如 cd 等变换工作目录的命令; - 目录所需权限:使用者对这个目录至少需要具有 x 的权限 - 额外需求:如果使用者想要在这个目录内利用 ls 查阅档名,则使用者对此目录还需要 r 的权限。 #### 二、使用者在某个目录内读取一个文件的基本权限为何? - 可使用的命令:例如本章谈到的 cat, more, less等等 - 目录所需权限:使用者对这个目录至少需要具有 x 权限; - 文件所需权限:使用者对文件至少需要具有 r 的权限才行! #### 三、让使用者可以修改一个文件的基本权限为何? - 可使用的命令:例如 nano 或未来要介绍的 vi 编辑器等; - 目录所需权限:使用者在该文件所在的目录至少要有 x 权限; - 文件所需权限:使用者对该文件至少要有 r, w 权限 #### 四、让一个使用者可以创建一个文件的基本权限为何? - 目录所需权限:使用者在该目录要具有 w,x 的权限,重点在 w 啦! #### 五、让使用者进入某目录并运行该目录下的某个命令之基本权限为何? - 目录所需权限:使用者在该目录至少要有 x 的权限; - 文件所需权限:使用者在该文件至少需要有 x 的权限