读书笔记: 鸟哥基础篇第四版(第五章 文件权限和目录配置)

目录

  • Chap5 Linux 的文件权限与目录配置
    • 5.1 使用者 和 群组
    • 5.2 文件权限的概念
      • 5.2.1 文件属性
        • a. 权限
        • b. 连接数
        • c. 拥有者 和 群组
        • d. 容量大小,默认单位bytes
        • e. 创建日期或者最近修改日期
        • f. 文件名
      • 5.2.2 修改属性和权限
        • a. 改变群组 chgrp
        • b. 改变拥有者 chown
        • c. 修改权限 chmod
      • 5.2.3 文件和目录权限的意义
        • a. 文件权限意义
        • b. 目录权限意义
      • 5.2.4 Linux文件种类和扩展名
        • a. 文件名长度
    • 5.3 Linux目录配置
      • 5.3.1 Filesystem Hierarchy Standard (FHS)标准
        • a. 根目录
        • b. 目录总览
        • c. /usr
        • d. /var
      • 5.3.2 目录树
      • 5.3.3 绝对路径和相对路径
      • 5.3.4 CentOS的系统信息查看

命令

su -  
export LC_ALL=en_US.utf-8
chgrp [-R] 文件/目录
chown [-R] 用户:组 文件/目录
cp 源文件 目标文件
chmod abc 文件/目录
chmod [ugoa][+-=][rwx] 文件/目录
cat 文件名 文件名
uname -a

文件

  1. /etc/locale.conf 修改默认语系

小结

  1. cp命令会复制执行者的 属性(拥有者和群组)、权限,以及修改modification 时间
  2. Linux的FHS标准只规定了 /,/usr,/var的结构
  3. Linux文件和目录的含义

Chap5 Linux 的文件权限与目录配置

5.1 使用者 和 群组

  • 账号和群组是 多对多的关系
  • 用户是记录在 /etc/passwd中,密码记录在/etc/shadow中,群组记录在/etc/group

5.2 文件权限的概念

5.2.1 文件属性

ls -al
drwxr-xr-x. 3 root root 17 May 6 00:14 .config <=范例说明处
drwx------. 3 root root 24 May 4 17:59 .dbus
-rw-r--r--. 1 root root 1864 May 4 18:01 initial-setup-ks.cfg <=范例说明处
[ 1 ] [ 2 ][ 3 ][ 4 ][ 5 ][ 6 ] [ 7 ]
[ 权限 ][连结][拥有者][群组][文件容量][ 修改日期 ] [ 檔名 ]

a. 权限

-rwxrwx---

第一个字符代表文件类型:

  • d : 目录
  • - : 文件
  • l : 连接档
  • b : 装置文件里面的可供储存的接口设备(可随机存取装置);
  • c : 装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接着三个为一组,分别为 读、写、执行

b. 连接数

每个文件都会把 权限于属性,记录到文件系统的inode中, 这个数字就是标志着这个inode有几个文件名连接到它。

c. 拥有者 和 群组

d. 容量大小,默认单位bytes

e. 创建日期或者最近修改日期

  1. 默认是 日期+时间, 如果时间太久远,则会变成 日期+年份。
  2. 使用 ls -l --full-time 来显示完整时间
  3. 中文显示不对的话记住使用
    export LC_ALL=en_US.utf8
    # 修改默认语系 在 /etc/locale.conf中
    

f. 文件名

5.2.2 修改属性和权限

chgrp : 改变所属组
chown : 改变所属用户
chmod: 改变权限,SUID,SGID,SBIT 等等

a. 改变群组 chgrp

chgrp [-R] 目录名/文件名
# -R代表递归修改

要被改变的组名必须要在/etc/group 文件内存在才行

b. 改变拥有者 chown

chwon [-R] 拥有者:组名 文件名/目录名
chwon [-R] 拥有者 文件名/目录名     # 还能顺便更改组名
chwon [-R] 拥有者.组名 文件名/目录名   # 使用 .来分割
chwon [-R] .组名 文件名/目录名   # 只修改组名

更改的用户需要在 /etc/passwd中存在

注意,因为 cp命令会使用复制 执行者的属性、权限,以及修改 modification time

[root@study ~]# cp .bashrc .bashrc_test
[root@study ~]# ls -al .bashrc*
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 176 Jun 3 00:04 .bashrc_test <==新文件的属性没变

c. 修改权限 chmod

chmod [-R] xyz 文件或目录  # xyz为数字
chmod [-R] [ugoa][+-=][rwx] 文件/目录
# 例子
chmod u=rwx,go=rx .bashrc

5.2.3 文件和目录权限的意义

a. 文件权限意义

  • r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
  • w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
  • x (execute):该文件具有可以被系统执行的权限。

b. 目录权限意义

  • r (read contents in directory):
    表示具有读取目录结构列表的权限,所以当你具有读取®一个目录的权限时,表示你可以查询该目录下的文件名数据。 所以你就可以利用 ls 这个指令将该目录的内容列表显示出来!

  • w (modify contents of directory):

    • 创建文件和目录
    • 删除文件和目录
    • 改名操作
    • 移动操作
  • x (access directory):
    目录的 x 代表的是用户能否进入该目录成为工作目录, 也就表示能否执行该目录下的命令。

读书笔记: 鸟哥基础篇第四版(第五章 文件权限和目录配置)_第1张图片

上面很多情况,dir只要有 x就行了,因为如果知道有什么文件的话,r就不是必须的,但是就没法使用[tab]补全了

5.2.4 Linux文件种类和扩展名

  • regular file: 第一个字符是-
    • 文本文件
    • 二进制文件
    • 数据格式文件: 比如/var/log/wtmp,使用last可以读,但是cat会读出乱码
  • 目录
  • 连接
  • 设备文件:
    • block设备:第一个是b的,如硬盘,可以随机读取
    • character 设备文件:第一个是c,串行设备,只能一次性读取
  • socket: 第一个为s,网络通信
  • 管道文件: 第一个为p

man fifo 及 man socket 可以查看帮助

a. 文件名长度

Ext2/Ext3/Ext4 文件系统以及近来被 CentOS 7 当作预设文件系统的 xfs而言,针对文件的档名长度限制为:
单一文件或目录的最大容许文件名为 255bytes,以一个 ASCII 英文占用一个 bytes 来说,则大约可达 255个字符长度。若是以每个中文字占用 2bytes 来说, 最大档名就是大约在 128 个中文字之谱!

5.3 Linux目录配置

5.3.1 Filesystem Hierarchy Standard (FHS)标准

读书笔记: 鸟哥基础篇第四版(第五章 文件权限和目录配置)_第2张图片

  • shareable: 可以分享给其他系统挂载的目录
  • unshareable: 不适合分享给其他主机挂载的
  • static: 有些数据是不会经常变动的,跟随着 distribution 而不变动。 例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等
  • variable: 经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等

FHS 针对目录树架构仅定义出三层目录底下应该放置什么数据而已:

  • / (root, 根目录):与开机系统有关;
  • /usr (unix software resource):与软件安装/执行有关;
  • /var (variable):与系统运作过程有关

a. 根目录

FHS标准建议: 根目录(/)所在分区槽应该越小越好, 且应用程序所安装的软件最好不要与根目录放在同一个分区槽内,保持根目录越小越好。 如此不但效能较佳,根目录所在的文件系统也较不容易发生问题。

b. 目录总览

FHS 要求必须要存在的目录
/bin Linux有很多放执行文件的地方,但是 /bin 放置的是在单人维护模式下还能够被操作的指令
/boot 开机会用到的文件,Linux 核心文件以及开机选单与开机所需配置文件等, Linux kernel 常用的档名为: vmlinuz,如果使用的是 grub2 这个开机管理程序, 则还会存在/boot/grub2/这个目录喔
/dev 任何装置与接口设备都是以文件的型态存在于这个目录当中
/dev/null, /dev/zero, /dev/tty, /dev/loop*, /dev/sd*
/etc 系统主要的配置文件
/etc/opt(必要):这个目录在放置第三方协力软件 /opt 的相关配置文件
/etc/X11/(建议):与 X Window 有关的各种配置文件都在这里,尤其是 xorg.conf 这个 X Server的配置文件
/etc/xml/(建议):与 XML 格式有关的各项配置文件
/lib 系统的函数库非常多,/lib 放置的则是在开机时会用到的函式库, 以及在/bin 或/sbin 底下的指令会呼叫的函式库而已
/media /media 底下放置的就是可移除的装置啦! 包括软盘、光盘、 DVD
/mnt 挂载文件目录
/opt 第三方软件安装目录
/run 统开机后所产生的各项信息应该要放置到 /var/run 下,现在改为/run 目录下
/sbin 设定系统环境的指令,放在/sbin 底下的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令
/srv 一些网络服务启动之后,这些服务所需要取用的数据目录
/tmp 临时文件
/usr 第二层 FHS 设定
/var 第二层 FHS 设定
FHS 建议可以存在的目录
/home 家目录
/lib64 等 用来存放与 /lib 不同的格式的二进制函式库
/root root家目录, 如果进入单人维护模式而仅挂载根目录时, 该目录就能够拥有 root 的家目录,所以我们会希望 root 的家目录与根目录放置在同一个分区槽中
建议
/lost+found 使用标准的 ext2/ext3/ext4 文件系统格式才会产生的一个目录,目的在于当文件系统发生错误时, 将一些遗失的片段放置到这个目录下。不过如果使用的是 xfs 文件系统的话,就不会存在这个目录了
/proc 虚拟文件系统,保存在内存中的系统运行状态
/sys 这个目录其实跟/proc 非常类似,也是一个虚拟的文件系统,主要也是记录核心与系统硬件信息较相关的信息。

早期 Linux 在设计的时候,若发生问题时,救援模式通常仅挂载根目录而已, 因此有五个重要的目录被要求一定要与根目录放置在一起, 那就是 /etc, /bin, /dev, /lib, /sbin 这五个重要目录。现在许多的 Linux distributions 由于已经将许多非必要的文件移出 /usr 之外了, 所以 /usr 也是越来越精简,同时因为 /usr 被建议为『即使挂载成为只读,系统还是可以正常运作』的模样,所以救援模式也能同时挂载 /usr 喔! 例如我们的这个 CentOS 7.x 版本在救援模式的情况下就是这样。因此那个五大目录的限制已经被打破了呦!例如 CentOS 7.x 就已经将 /sbin, /bin, /lib 通通移动到 /usr 底下了

c. /usr

FHS 要求必须要存在的目录
/usr/bin/ 所有一般用户能够使用的指令都放在这里!目前新的 CentOS 7 已经将全部的用户指令放置于此,而使用连结档的方式将 /bin 连结至此
/usr/lib 与 /lib 功能相同,所以 /lib 就是链接到此目录中的
/usr/local 安装程序目录
/usr/sbin/ 非系统正常运作所需要的系统指令。最常见的就是某些网络服务器软件的服务指令(daemon)啰!不过基本功能与 /sbin 也差不多, 因此目前 /sbin 就是链接到此目录中的
/usr/share/ 主要放置只读架构的数据文件,当然也包括共享文件, 几乎都是文本
FHS 建议可以存在的目录
/usr/games 游戏相关
/usr/include/ C/C++ 等语言的 header 和 include存放位置,当我们以 tarball 方式 (*.tar.gz 的方式安装软件)安装某些数据时,会使用到里头的许多包含档
/usr/libexec/ 某些不被一般使用者惯用的执行档或脚本(script)等
/usr/lib64/ 等 与 /lib64/功能相同,因此目前 /lib64 就是链接到此目录中
/usr/src 一般原始码建议放置到这里

d. /var

cache, log, 数据文件等等

FHS 要求必须要存在的目录
/var/cache 程序运行产生的缓存
/var/lib 需要使用到的数据文件放置的目录。在此目录下各自的软件应该要有各自的目录
/var/lock 某些装置或者是文件资源一次只能被一个应用程序所使用,如果同时有两个程序使用该装置时, 就可能产生一些错误的状况,因此就得要将该装置上锁(lock),以确保该装置只会给单一软件所使用。 目前此目录也已经挪到/run/lock
/var/log 登录文件放置的目录,非常重要
/var/mail 放置个人电子邮件信箱的目录, 现在也放在了 /var/spool/mail
/var/run 某些程序或者是服务启动后,会将他们的 PID 放置在这个目录下喔. 现在也连接到/run
/var/spool 这个目录通常放置一些队列数据 ,这些数据被 使用后通常都会被删除

比较大的差异在于将许多原本应该要在根目录 (/) 里面的目录,将他内部数据全部挪到 /usr 里面去,然后进行连结设定!包括底下这些

  • /bin --> /usr/bin
  • /sbin --> /usr/sbin
  • /lib --> /usr/lib
  • /lib64 --> /usr/lib64
  • /var/lock --> /run/lock
  • /var/run --> /run

5.3.2 目录树

5.3.3 绝对路径和相对路径

5.3.4 CentOS的系统信息查看

Linux除了 FHS 之外,还有个 Linux Standard Base(LSB) 的标准是可以依循的

uname -r # 查看核心版本
uname -m # 查看操作系统位
yum install redhat-lsb  # 安装 lsb_release 来查看 LSB标准信息
lsb_release -a  # 查看lsb标准

你可能感兴趣的:(鸟哥基础篇)