Linux 3:文件与目录管理

2014-09-19 demon7452 更多博文 » 博客 » GitHub »

Linux

原文链接 https://demon7452.github.io/2014/09/19/Linux3.html
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


目录的相关操作

.         # 代表此层目录
..        # 代表上一层目录
-         # 代表前一个工作目录
~         # 代表『目前使用者身份』所在的家目录
~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 ,亦即保留同群组的写入权力。

  • 特殊权限st
  • 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 的权限