Linux 文件权限与目录配置

Monday, September 10, 2018

用户与用户组

  • 任何一个文件都有User,Group,Others 三种身份的个别权限
  • 每个帐号都可以有多个用户组的支持
  • 所有账户信息,都在/etc/passwd 这个文件夹内
  • 个人的密码,在/etc/shadow
  • 组名,在/etc/group

文件属性

  • ls 是显示文件的文件名的相关属性,而参数 ‘-al’ 则表示列出所有的文件详细的权限与属性(第一个字符为’.‘的是隐藏文件)

  • 第一个字符[-]是代表文件
  • [d]是目录
  • [c]是端口
  • [b]可供存储的接口设备
  • [l]连接文件

改变文件属性与权限

  • chgrp:改变文件所属的用户组(要改的组名必须在用户组内存在)
  • chown:改变文件所有者
  • chmod:改变文件的权限
  • chgrp [-R] :进行递归的持续更改,将子文件都更新为该用户组
  • chown 与上述同理
  • 可用数字来确定权限,r:4. w:2, x:1, 比如 owner=rwx=4+2+1=7
  • 更改权限示例: chmod 777 filename
  • 也可用 a,g,0代表,比如 chmod u=rwx,go=rx filename
  • 增加权限 chmod a+w filename
  • 减少权限 chmod a-w filename

目录与文件的权限意义

  • 文件拥有 w 权限,不代表该文件可被删除
  • 目录拥有 r 权限时,该目录的所有文件内容列表可以显示出来
  • 目录的 w 权限,可以新建,删除,文件与目录,转移目录内的文件,目录位置。
  • x 代表用户是否使其成为工作目录用途,登录 Linux 所在的主文件夹就是当下的工作目录

Linux 文件种类与扩展名

  • 普通文件

    • 纯文本文件,可以用作设置的文件基本属于这个类型,可直接用 cat 读出来
    • binary二进制文件,可执行文件就是这类(不包括 script和文字批处理)
    • data数据格式文件,使用 last 命令读出来,用 cat 会乱码
  • 目录

  • 连接文件(类似 windows 的快捷方式)

  • 设备与设备文件,在/dev 中

  • Sockets套接字文件

  • 管道(FIFO, pipe)

  • 文件是否可执行,跟后缀名没任何关系,主要看是否有可执行权限 x

Linux 目录配置

FHS 定义了三层目录

  • / (root, 根目录)与开机系统有关
  • /usr (UNIX software resource)与软件安装/执行有关
  • /var (variable):与系统运作过程有关
  • / 根目录非常重要,不但所有目录都是根目录衍生出来,同时也与开机,还原,系统修复有关系。
  • 因为根目录很重要,所以 FHS 希望根目录不要放在大分区,应用程序安装的软件不要与根目录放在同一个分区。
根目录的子目录
  • /bin 放置的是在单用户维护模式下还能够被操作的命令

  • /boot 放置开机会用到的文件,包括内核以及开机菜单开机配置文件,Linux Kernel 常用的文件名为 vmlinuz

  • /dev 设备与接口设备都是以文件的形式存在这个目录中

  • /etc 系统主要的配置文件都在这个目录,例如人员的帐号密码,服务的起始文件。这个目录的文件一般可以查看,但只有 root 可以修改。FHS 建议不要放置 binary 在这个目录中

    • /etc/init.d/:所有服务的默认启动脚本都放在这里
    • /etc/xinetd.d/: superdaem on 管理的各项服务的配置文件目录
    • /etc/X11/: 与 X Window有关
  • /home 系统默认的用户主文件夹

  • /lib 放置开机时会用到的函数库,以及在/bin 或者/sbin 下面的命令会调用到的函数库

  • /media 放置的是可删除的设备

  • /mnt 暂时挂载某些额外的设备

  • /opt 给第三方软件放置的目录

  • /root 系统管理员的主文件夹

  • /sbin 放置的是开机过程中需要的,包括开机,修复,还原系统所需要的命令

  • /srv 是一些网络服务启动之后,这些服务需要的数据目录

  • imp 让一般用户或者是正在执行的程序暂时放置文件的地方

usr 目录
  • /usr 里面放置的数据属于可分享与不可变动的(shareable, static),所有 的默认软件都会放在这里
var 目录
  • /var 目录主要针对常态性变动的文件,包括缓存,登录文件,以及某些软件运行所产生的文件,例如程序文件(lock file, run file),或者例如 MySQL 数据库的文件。
目录示意图

绝对路径与相对路径

  • 绝对路径:由根目录开始写起的文件名或者目录,例如/home/dmtsai/.bashrc
  • 相对路径:相对于目前路径的文件名写法,以.或者..开头,.是当前路径,可以用./表示,..是上一层目录,可以用../表示

文件与目录管理

目录的相关操作

  • . 代表此层目录
  • .. 代表上一层目录
  • -代表前一个工作目录
  • ~ 代表『目前用户身份』所在的主文件夹
  • ~account 代表 account 这个用户的主文件夹

几个常用目录命令

  • cd: 切换目录
  • pwd: 显示当前目录
  • mkdir: 新建一个新的目录
  • rmdir: 删除一个空的目录
pwd
  • [-p]显示当前路径,而非使用连接路径
mkdir
  • mkdir [-mp] 目录名称
  • [-m] 配置文件权限 mkdir -m 711 test
  • [-p] 创建多层级目录 mkdir -p test1/test2/test3
rmdir
  • rmdir 删除空的目录
  • [-p]连同上层空的目录也一起删除
rm -r
  • rm -r 连同目录下的所有东西一并删除

文件与目录管理

ls 查看文件与目录
  • -a: 全部的文件,包括隐藏文件
  • -A: 全部的文件,包括隐藏文件,但不包括.与..这两个目录
  • -d: 仅列出目录本身,而不是列出目录内的文件数据
  • -f: 直接列出结果,而不进行排序
  • -l: 列出文件属性和权限
  • 蓝色是目录,白色是文件
cp
  • cp 复制文件或目录
  • -p 连同给你文件的属性一起复制过去
  • -r 递归持续复制,用于目录的复制行为
  • -i 如果目标文件已存在,在覆盖时会先询问操作的进行
  • 如果源文件有两个以上,最后一个目的文件一定要是目录
rm
  • -f 忽略不存在的文件,不出现警告信息
  • -i 删除前会询问
  • -r 递归删除
mv
  • -f 强制
  • -i 询问
  • -u 若目标文件已存在,且 source 比较新,才会更新

文件内容查询

  • cat 由第一行开始显示文件内容
  • nl 显示的时候顺便输出行号
  • more 一页一页的显示内容
  • head 只看头几行

修改文件时间或者创建新文件: touch

  • -a: 仅修改访问时间
  • -c: 仅修改文件的时间

查看文件类型:file

文件名查找

whereis 与 locate 是利用数据库查数据,比 find 速度快

whereis
  • -b 只找二进制格式的文件

    • -m 只找在说明文件 manual 路径下的文件
    • -s 只找 source 源文件
    • -u 查找不在上述三个选项中的其他特殊文件
locate
  • -i 忽略大小写的差异
  • -r 后面可接正则表达式
  • updatedb 可以更新数据库

文件系统的简单操作

磁盘与目录的容量

df,du
  • df: 列出文件系统的整体磁盘使用量

  • du: 评估文件系统的磁盘使用量(常用于评估目录)

    • -a: 列出所有的文件系统
    • -k: 以 kB 显示文件系统
    • -m: 以 MB 显示文件系统
    • -h: 以 GB

磁盘分区,格式化,检验与挂载

等后续有使用了再补充。。。

Linux

Shel 与 Shel script

变动