鸟哥的Linux私房菜-第五章、Linux 的文件权限与目录配置

前言

  本章重点Linux的文件权限管理和目录配置。文件权限管理主要内容为三个身份类别、三种操作权限权限和三种操作方式,可以简记为3个3。目录配置主要内容为FHS—Linux的目录配置依据。

  下面分两个部分来梳理和记录。

一、Linux的文件权限管理

  Linux的文件权限管理很好的体现了它优秀的多任务环境。上面说到Linux有3个3,三个身份类别:owner/group/others;三种操作权限:read/write/execute;三种操作方式:chgrp/chown/chmod。

1.三个身份类别

    1. 拥有者(owner)
    1. 群组(group)
    1. 其他人(others)

  三个身份类别很好理解,此外还有root。

2.文件属性

理解3个3之前,看图了解一下文件属性,这个必须要记牢。

文件属性说明


文件类型和权限:(1)文件类型,d表示目录,-表示文件,l表示链接文件,b表示可存储的周边设备文件,c表示键盘鼠标一次性读取设备文件;(2)文件权限,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute),三个为一组,分别为拥有者权限,群组权限,其他人权限。文件类型和权限图示如下
文件类型和权限图示

3.三种操作权限

对于文件 对于目录
r可读 读取文件实际内容 读取目录结构清单
w可写 编辑、新增或者是修改该文件的内容(但不含删 除该文件) 异动该目录结构清单的权限,包含创建、删除、更名、移动文件和目录
x可执行 可被系统执行 进入该目录成为工作目录(cd )

4.三种操作方式

(1)改变所属群组, chgrp

chgrp [-R] dirname/filename,例:chgrp users initial-setup-ks.cfg

其中:-R : 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件、目录都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。

(2)改变文件拥有者或群组, chown

chown [-R] 帐号名称 文件或目录,例:chown bin initial-setup-ks.cfg
chown [-R] 帐号名称:群组名称 文件或目录,例:chown root:root initial-setup-ks.cfg
chown [-R] .群组名称 文件或目录,例:chown .root initial-setup-ks.cfg

其中:-R : 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件都变更

(3)改变权限, chmod

a.数字类型改变文件权限

三种权限代表三个值:r:4 w:2 x:1

chmod [-R] xyz 文件或目录

其中:xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

例:当权限为: [-rwxrwx- - -] 分数则是:chmod 770 文件或目录
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= - - - = 0+0+0 = 0

b.符号类型改变文件权限

符号类型改变文件权限
其中:u, g, o代表三种身份,a 则代表 all 即全部的身份

例:
chmod u=rwx,go=rx .bashrc
chmod a+w .bashrc
chmod a-x .bashrc

5.文件种类与扩展名

一个Linux文件能不能被执行,与他的第一栏的十个属性有关, 与文件名没有关系!!!

  • 正规文件(regular file)
    • 纯文本文件(ASCII)
    • 二进制档(binary)
    • 数据格式文件(data)
  • 目录(directory)
  • 链接文件(link)
  • 设备与设备文件(device)
    • 区块(block)设备文件,文件种类[ b ]
    • 字符(character)设备文件,文件种类[ c ]
  • 数据接口文件(sockets)
  • 数据输送档(FIFO, pipe)

二、Linux目录配置

1.Linux目录配置的依据–FHS

Filesystem Hierarchy Standard (FHS)希望让使用者可以了解到已安装软件通常放置于那个目录下。

(1)FHS的四种交互作用形态:

  • 可分享的:可以分享给其他系统挂载使用的目录,所以包括可执行 文件与使用者的邮件等数据,是能够分享给网络上其他主机挂载用的目录;
  • 不可分享的:自己机器上面运行的设备文件或者是与程序有关的 socket文件等, 由于仅与自身机器有关,所以当然就不适合分享给 其他主机了。
  • 不变的:有些数据是不会经常变动的,跟随着distribution而不变动。 例如函数库、文件说明文档、系统管理员所管理的主机服务 配置文件等等;
  • 可变动的:经常改变的数据,例如登录文件、一般用户可自行收受 的新闻群组等。

(2) 三个目录层级

  • /(root, 根目录):与开机系统有关;
  • /usr (unix software resource):与软件安装/执行有关;
  • /var (variable):与系统运行过程有关。
a.根目录 (/) 的意义与内容:

根目录也与开机/还原/系统修复等动作有关,因此FHS标准建议:根目录(/)所在分区应该越小越好, 且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好。 如此不但性能较佳,根目录所在的文件系统也较不容易发生问题。

第一部份:FHS 要求必须要存在的目录

  • /bin:但用户模式也可操作的可执行文件,比如cat、chmod、chown、date、mv、mkdir、cp、bash;
  • /boot:开机文件,包含核心文件、开机菜单、开机配置,比如kernel常用文件vmlinuz;
  • /dev:设备文件,比如/dev/null、/dev/zero、/dev/tty、/dev/loop*、/dev/sd*;
  • /etc:系统主要配置文件,不建议放执行文件,比如/etc/modprobe.d/、/etc/passwd、/etc/fstab、/etc/issue,还有放置第三方软件的配置文件目录/etc/opt;
  • /lib:开机和指令调用的函数库,比如/lib/modules/下放有核心驱动程序;
  • /media:DVD、光盘等可移除媒体设备,比如/media/floppy,/media/cdrom;
  • /mnt:暂时挂载的额外设备;
  • /opt:第三方软件,注:也可放在/usr/local下;
  • /run:开机后的各项信息,注:也可放在/var/run下;
  • /sbin:开机、修复、还原系统的指令,比如:fdisk,fsck,ifconfig,mkfs;
  • /srv:网络服务数据目录,比如WWW,FTP等;
  • /tmp:暂时存放,建议开机清理;
  • /usr:查阅下方描述;
  • /var:查阅下方描述;

第二部份:FHS 建议可以存在的目录

  • /home:使用者主文件夹;
  • /lib<qual>:二进制函数库;
  • /root:系统管理员(root)的主文件夹;

第三部份:其他

  • /lost+found:系统错误时放置遗失片段;
  • /proc:虚拟文件夹,数据存放在内存中,比如:/proc/cpuinfo,/proc/dma,/proc/interrupts,/proc/ioports,/proc/net/* 等;
  • /sys:虚拟文件夹,记录核心与系统硬件信息;
b./usr 的意义与内容

usr是Unix Software Resource的缩写, 也就是“Unix操作系统软件资源”所放置的目录,而不是使用者的数据。

第一部份:FHS 要求必须要存在的目录

  • /usr/bin/:一般用户使用的所有指令,不应该有子目录;
  • /usr/lib/:与/lib一样;
  • /usr/local/:系统管理员自行安装下载的软件;
  • /usr/sbin/:与/sbin一样;
  • /usr/share/:只读架构的数据文件和共享文件,比如/usr/share/man线上说明文档;

第二部份:FHS 建议可以存在的目录

  • /usr/games/:游戏相关数据;
  • /usr/include/:c/c++等程序语言的header和include;
  • /usr/libexec/:不被一般使用者惯用的可执行文件或脚本;
  • /usr/lib<qual>/:与/lib<qual>一样;
  • /usr/src/:源代码,核心源代码则建议放置到/usr/src/linux/;
c./var 的意义与内容

如果/usr是安装时会占用较大硬盘容量的目录,那么/var就是在系 统运行后才会渐渐占用硬盘容量的目录。 因为/var目录主要针对常态性 变动的文件,包括高速缓存(cache)、登录文件(log file)以及某些软 件运行所产生的文件, 包括程序文件(lock file, run file),或者例如 MySQL数据库的文件等等。

第一部份:FHS 要求必须要存在的目录

  • /var/cache/:应用程序的暂存数据;
  • /var/lib/:程序使用的数据文件,MySQL的数据库放置到/var/lib/mysql/,rpm的数据库则放到/var/lib/rpm;
  • /var/lock/:程序锁,此目录也已经挪到 /run/lock 中;
  • /var/log/:**非常重要!**登录文件,比如/var/log/messages,/var/log/wtmp(记录登陆者的信 息);
  • /var/mail/:个人电子邮件信箱;
  • /var/run/:放置某些已启动程序或服务的PID;
  • /var/spool/:程序队列信息;

总结

本章很重点也很基础,需要记住的内容比较多,因为大多数都是在日常开发中所使用到的知识点。

猜你喜欢

转载自blog.csdn.net/qq_39271952/article/details/128157099