文件管理与用户权限控制

1 目录与路径列表

常用目录操作

  • pwd 显示当前目录
  • cd 变更目录
  • mkdir 创建空目录
  • rmdir 删除空目录
    • 删除非空目录用 rm -r dir

常用相对目录

  • ./ 代表当前目录
  • ../代表上一层目录
  • - 代表前一个目录
  • ~ 用户主目录
  • ~xxx 用户 xxx 的主目录

PATH 是一个路径列表,其中每条路径下的指令都能在任意目录直接执行。注意列表元素有顺序! PATH 是用户级的环境变量。

bash: xxxxxx: command not found… 一定是因为 PATH 或当前目录下没有以 xxxxxx 为名的文件。

2 用户权限控制

Permission deny 是最常见的权限错误。

文件属性 UID 和 GID ,从 /etc/passwd/etc/group 中找到对应的名称并显示出来。

2.1 passwd

/etc/passwd 含有七个字段:

  • 用户名称
  • 旧密码保留字段
    • 密码不在 passwd 中,而在 shadow 中。现在该字段是 x 。
  • 用户标识符 UID
    • 0 root 。要想让其它用户也具有 root 权限,只需将 UID 改为 0 即可。用户名称与用户 ID 允许多对一。
    • 1~499 保留用户,通常情况下不可登录。
    • 500~65535 一般用户。
  • 用户组标识符 GID
  • 说明
    • 没用。
  • 用户文件夹
    • 登录后跳转目录。
  • shell
    • 登录后默认 shell 。可登录用户必须指定 shell 。

2.2 shadow

/etc/shadow 含有九个字段:

  • 用户名称
  • 加密后的密码
  • 最近一次修改密码的时间
    • 距离 1970 年 1 月 1 日 的天数。

2.3 group

略。

3 常用文件管理操作

3.1 判断

file 可以用来判断是文件还是目录。文件全路经的推荐翻译 dirname/basename 路径名/文件名

3.2 列举

ls -alF ,常缩写成 ll ,用于查看当前路径下的所有内容,包括隐藏内容(即第一个字符为 . 的文件或文件夹),输出结构如下

  • 类型和权限
    • 类型
      • d 表示文件夹。
      • - 表示文件。
      • l 表示链接(类似 Windows 上的快捷方式)。
      • b 表示区块设备,如硬盘软盘。
      • c 表示字符设备,如键盘鼠标。
      • s 表示套接字,数据接口文件。
      • p 表示管道,用于解决多程序读取同一数据的问题。
    • 所属用户的权限,可读可写可执行。
    • 所属用户组的权限,可读可写可执行。
    • 其他用户的权限,可读可写可执行。
  • 链接数目
    • 文件的链接数目等于链接到自身的快捷方式个数加一。
    • 文件夹的链接数目等于该文件夹内第一级文件与第一级文件夹的个数总和。
  • 所属用户
  • 所属用户组
  • 大小
    • 文件夹大小只是文件夹本身的大小,不统计其内文件总和!固定值 4096 bytes 。
  • 修改日期
    • 不是创建日期!
    • ls -al --full-time 显示完整日期。
  • 名称
    • 文件名最长 255 个字符,全路径加文件名最长 4096 个字符,特殊字符禁用,空格尽量不用。
    • 扩展名是文件名的一部分,与它能否被执行无关。
  1. 进入目录需要该目录的执行权限。
  2. 查看目录的文件列表需要该目录的读权限。
  3. 读取文件需要该文件所在目录的执行权限,以及该文件的读权限。
  4. 修改文件需要该文件所在目录的执行权限,以及该文件的读权限和写权限。
  5. 创建或删除文件需要该文件所在目录的执行权限和写权限,不需要该文件的任何权限

对于复制来的文件或文件夹,往往需要修改属性和权限。 r = 4 w = 2 x = 1 ,分块累加。

  • 修改所属用户组
    • chgrp group file
  • 修改所属用户
    • chown user file
    • 同时修改所属用户和用户组 chown user:group file
    • 递归地修改 chown -R user:group file
  • 修改权限
    • chmod 741 file
    • chmod u=rwx,g=rx,o=r file
    • chmod a+w file
    • chmod +x file
    • chmod -x file

用户临时切换身份

su -vbird
exit

umask 表示当前用户在创建文件或目录时减权限的默认值。

文件默认权限是 666 ,目录默认权限是 777 。

特殊权限

  • SUID 文件具有 SUID 的特殊权限时,使用者在运行它过程中使用者会暂时具有程序拥有者的权限。
  • SGID 目录具有 SGID 的特殊权限时,使用者在该目录下新建文件的用户组与该目录的用户组相同。
  • SBIT 目录具有 SBIT 的特殊权限时,使用者在该目录下新建文件只有自己与 root 能够删除。

3.3 复制、删除、移动、重命名

  • cp 复制
    • cp -a = cp -dpr 备份常用,复制后权限保持一致。
  • rm 删除
    • rm -r 递归删除目录。
  • mv 移动兼重命名
    • rename 批量重命名。

3.4 查找

  • which 在 PATH 中查找指令。
    • which -a 列出所有符合查找条件的指令。
  • whereis 文件的全部名称。从文件数据库查找,快!
  • locate 文件的部分名称。从文件数据库查找,快!
  • find 功能更强大,支持通配符,还能进行额外的操作。全盘扫描,慢!
find / -perm +7000 -exec ls -l {} \;

后面额外的命令不能使用 ll 之类的别名, {} 是 find 找到的内容, \; 表示命令的结束,反斜杠是转义。

运行 updatedb 可以立即更新文件数据库。

3.5 打印

  • cat 由第一行开始打印。
  • tac 从最后一行开始打印,可以看出 tac 是 cat 的倒着写!
  • nl 打印的时候输出行号。
  • more 一页一页地打印。
  • less 与 more 类似,但是比 more 更好的是它可以往前翻页!
  • head 只打印头几行。
  • tail 只打印尾几行。
  • od 打印非文本文件。
  • touch 新建文档兼变更时间。

3.6 隐藏属性

lsattr 显示隐藏属性, chattr 修改隐藏属性。