第7章 Linux文件与目录管理

1、特殊的目录

  • .:该层目录
  • ..:上层目录
  • -:前一个工作目录
  • ~:当前用户所在的主文件夹
  • ~user:user用户的主文件夹
这些特殊的目录都可以用cd命令切换。

2、常见的命令:

  • cd:change directory缩写,切换目录;
  • pwd:print working directory, 显示当前目录;
  • mkdir:新建一个目录
  • rmdir:删除空目录
  • rm:删除目录/文件
  • cp:copy,复制的文件所有者会变成执行这个命令的用户,所以有时要限制权限复制,用参数-a或-p,具体看man
  • mv:移动文件或目录,在移动时,可以更改文件名。命令形式为"mv 源文件名 新文件名"
3、执行文件路径的变量$PATH

Linux中,环境变量为$PATH,可以用echo输出查看。如果在环境变量中有两个ls指令,执行ls时,先查询到的同名命令被执行。如果要将某一路径加入到环境变量中,就执行PATH="$PATH":路径名

4、查看文件内容命令

  • cat:由第一行开始显示文件内容
  • tac:由最后一行开始显示
  • nl:显示文件,并输出行号
  • more:一页一页地显示
  • less:一页一页显示,但可以往前翻页
  • head:只看头几行
  • tail:只看结尾几行
  • od:以二进制方式读取文件
  • touch:创建文件,或更改文件时间

文件的时间参数主要有下面三个:

  • 更改时间(mtime):当文件数据被更改时的时间;
  • 状态时间(ctime):当该文件权限被更改时的时间;
  • 读取时间(atime):该文件最后一次被读取的时间。
ls用参数--time=mtime|ctime|atime三个参数可以查询这三个时间。默认的是mtime。

5、文件的默认权限

创建文件时,它有一个默认权限,用命令umask可以查看:

umask
0002
umask -S
u=rwx, g=rwx, o=rx

用参数-S可以显示具体的符号权限。上面的数字权限有四位,第一位为特殊权限(SUID、SGID、SBIT),后三位是默认权限减去需要的权限。如,其他人,7 - 2 = 5,即权限为rx

如果要更改默认权限,用umask 0abc命令即可(abc为权限差值)。

注意,文件与目录的默认权限是不同的:

  • 文件默认权限只有r、w两项,故其默认权限为666
  • 目录默认权限为777
6、文件的隐藏属性

chattr和lsattr可以设置和显示文件的隐藏属性,

chattr命令格式为:

chattr [+-=] [ASacdistu]

  • +:增加某一参数;
  • -:减少某一参数;
  • =:将属性改为后面的参数
  • A:访问时间atime不被修改
  • S:数据同步写入磁盘(一般情况下是异步的)
  • a:设置文件只能增加数据,而不能修改数据,只有root才能设置
  • c:将文件压缩,在读取时自动解压缩
  • d:设置文件不被dump备份
  • i:只有root才能设置,使文件不能被删除、改名、设置连接写入或添加数据
  • s:删除文件时,完全从硬盘空间中删除
  • u:与s相反,如果文件被删除,数据还存在磁盘中,可以找回
既然有隐藏属性,所以在遇到文件权限问题时,还需要考试隐藏属性。

7、文件特殊权限SUID、SGID、SBIT

(1)SUID,权限值为4

我们来看下,/uer/bin/passwd的权限:

-rwsr-xr-x 1 root root

在文件所有者的x权限位置上,出现了s(还可能是t),s的权限被称为SUID(Set UID)权限:

  • SUID权限仅对二进制程序有效
  • 执行者对于该程序需要有x的权限
  • s权限仅在执行该程序时有效
  • 执行者将具有该程序所有者的权限
LinuxK ,所以账号秘密码都在/etc/shadow文件中,这个文件的权限为

-rw-r--r-- 1 root root

由此可知,只有root才能修改。但passwd命令可以让普通用户更改自己的密码。passwd命令可以更改自己的密码,那就是要更改/etc/shadow文件,这有冲突吗?没有,因为passwd程序的所有者权限有s,而其它用户有执行权限,故其他用户在执行passwd时就具有了所有者的权限,当然就可以更改密码了。

(2)SGID,权限值为2

当s权限出现在用户组的x权限上时,称为SGID(Set GID),功能为:

  • SGID仅对二进制程序(或)目录有效
  • 程序执行者需要有x权限
  • 执行者在执行时将会获得该程序用户组的权限
  • 用在目录上时,若用户对于 该目录有rx权限,则进入该目录下,会变成该目录的用户组权限。
(3)SBIT,权限值为1

Stick Bit(SBIT),该权限只对目录有效:

  • 当用户对此目录有wx权限时才有用
  • 当用户在该目录下创建文件或目录时,仅有自己和root才有权限删除该文件
同样可以用chmod来设置权限,如chmod 6777,就加入了SUID和SGID权限。

8、查看文件类型

用file命令可以查看文件类型

9、查找命令路径与文件路径

(1)用which命令来查找命令的路径

(2)查找文件:可以用whereis、locate、find命令

在Linux中,会将系统内的所有文件都记录在一个数据库文件(/var/lib/mlocate/)中,用whereis或locate查找时,都会以此数据库文件的内容为准;而用find命令是直接在磁盘上查找该文件,故此命令会更比较慢。记录文件的数据库文件默认每天执行一次,那么,用whereis或locate查找时,就有可能会出现查到已经删除的文件或找不到刚刚创建的文件的情况。当然,我们可以手动更新数据库,用updatedb命令,它会读取/etc/updatedb.conf文件,然后进行更新。

  • whereis:从环境变量中查找
  • locate:从数据库中查找
  • find:从硬盘上查找

阅读更多
个人分类: 《Linux私房菜》
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭