Linux----文件权限与目录配置
1、使用者与群组
1.1 文件拥有者
在文件上添加权限,使其只有文件拥有者有权限。
1.2 群组概念
群组最用的功能就是团队开发资源,每个账号可以有多个群组支持。群组里面的用户可以访问共有的资源。但是不能访问彼此的私有资源。以家庭类比,一个家是一个群组,有三个孩子是群组成员,他们都可以在客厅任意玩,但不能在彼此房间里胡乱看别人私有的东西。
1.3 其他人概念
其他用户在不被允许条件下是访问不了别的用户的内容的,root用户是可以访问系统中任何文件。在linux 中系统账号与一般身份使用者,root相关信息都是记录在/etc/passwd这个文件中,个人密码记录在/etc/shadow这个文件下,所有群组名称记录在/etc/group这个文件下。
三种对应User、Group、Other。
2、linux文件权限概念
文件权限如何针对所有者和群组设置,权限的设置是很重要的。
2.1 Linux文件属性
ls 命令,查看文件,ls就是list的意思,显示文件的文件名和相关属性。可以使用 su命令切换身份为root,ls -al表示列出所有文件详细的权限和属性。如下图

##第一栏代表这个文件的类型和权限
![]()
第一个字符代表这个文件是“目录、文件、链接文件”等
*当为【d】则是目录
*当为【-】则是文件
*当为【l】则是链接文件
*当为【b】则表示为设备文件里面可供存储的周边设备(可随机存取设备)
*当为【c】则表示为设备文件里的序列设备,如磁盘、鼠标等
##接下来的字符中,以三个为一组,且均为"rwx"的三个参数的组合,其中【r】代表可读(read),【w】代表可写(write),【x】代表可执行(execute),他们的位置不会改变,如果没有该权限则用【-】代替。
*第一组为“文件的拥有者可具备的权限”
*第二组为"加入此群组的账号的权限"
*第三组为“非本人且没有加入本群组的其他账号的权限”
##第二栏表示有多少文件名链接到此节点(i-node)
每个文件都会将他的权限和属性记录到系统的i-node中,每个文件名会链接到一个i-node。
##第三栏表示这个文件的拥有者账号
##第四栏表示这个文件的所属群组
linux系统下,你的账号会加入一个或多个群组。
##第五栏为这个文件的容量大小,默认单位为Bytes。
##第六栏为这个文件的创建日期或最近的修改日期
##第七栏为这个文件的文件名
如果文件名前面多一个“.”,则表示这个文件为隐藏文件。
可以使用 ls --help或者man ls 或info ls 看基础用法。
2.2 如何改变文件属性和权限
**改变所属群组,chgrp
假设你已经是root身份,文件夹里有一个a.out文件,改变它的群组为root(群组必须在/etc/group里面)如下图
![]()
使用chgrp命令修改文件群组。
![]()
再用 ls -al显示文件,
![]()
需要注意的是修改的群组必须是在系统群组文件中。使用方法:

**改变文件拥有者,chown
和chgrp一样的是,改变的拥有者必须是存在在系统中的账号,也就是在/etc/passwd/这个文件中。chown 还可以顺便修改群组的名称,如果要连目录下的所有次目录和文件同时更改文件拥有者的话,直接加上 -R即可。语法范例:

什么时候用chown或chgrp,在复制文件给你之外的其他人时,需要改变文件拥有者。复制文件的时候会赋值执行者的属性和权限,所以,要将文件的属性和权限修改一下,不然对方无法使用。
*改变权限,chmod
文件权限的改变使用,chmod这个命令,但是设置的方法有两种,分别可以使用数字或者符号来进行权限的变更。
**数字类型改变文件权限
linux文件的基本权限就只有9个,分别owner/group/other三种身份各自的rwx权限。用数字代表各个权限。
r:4,w:2,x:1
每种身份(owner/group/other)各自的三个权限(r/w/x)分数是要累加的,比如【-rwxrwx--】的分数是
owner=rwx=4+2+1=7
group=rwx=4+2+1=7
other=---=0+0+0=0
所以更改权限时,这个文件的权限数字就是770,所以变更权限的语法是这样的

**符号类型改变文件权限
也就是九个权限分别是user、group、other三种身份,借助u、g、o代表三种身份的权限。a代表all也就是全部身份。读写的权限写成r、w、x。可以用以下的方式来更改。

如果要设置一个文件权限为“-rwxr-xr-x”,也就是user具有可读可写可执行的权限,group和other具有可读可执行的权限,那么可以这样设置:chmod u=rwx,go=rx a.out。
2.3 目录与文件权限的意义
权限对文件的重要性:文件是实际含有数据的地方,包括一般文本文件、数据库内容档、二进制可执行文件等,因此,权限对文件来说意义是这样的,r(read)可读取此文件的实际内容,w(write)可以编辑、新增或修改该文件内容(不包括删除),x(execute)该文件具有可以被系统执行的权限。
权限对目录的重要性:文件是存放实际数据的所在,目录主要内容在记录文件名清单,文件名与目录有强烈的关联。权限对目录而言,r(read)表示具有读取目录结构清单的权限,当具有读取一个目录的权限的时候,表示你可以查询该目录下文件名数据,所以使用ls知名显示目录。w(write)表示可以异动该目录结构清单的权限,也就是可以创建新的文件鱼目鲈,删除已经存在的文件与目录(不管该文件权限为什么),将已存在的文件或目录进行更名,搬移该目录内的文件、目录位置。x在目录中代表使用者能否进入该目录成为工作目录的用途,也就是可以通过cd命令进入该目录。
创建目录mkdir,创建空文件tough。
2.4 Linux文件种类与扩展名
文件种类:
在之前用ls -al 观察到的,第一个字符为文件类型,一般文件是(-),目录文件是(d)。
*正规文件,第一个字符为(-),按照文件内容又可以分为:纯文本本文件、二进制档、数据格式文件。
*目录文件,第一个字符为(d)。
*链接文件,类似于windows的快捷方式,第一个字符为(l)。
*设备与设备文件,与系统周边及存储等相关的一些文件,通常集中在/dev这个目录下。通常分为区块设备文件(一些存储数据,提供系统随机存取的周边设备,一个字符为(b)),字符设备文件(序列埠的周边设备,比如键盘,鼠标,特色是一次读取,第一个字符为(c))。
*数据接口文件,第一个字符为 (s),通常是通过socket进行数据的沟通。
*数据传送档,FIFO一种特殊的文件类型,主要目的是解决多个程序同时存取一个文件造成的错误问题。第一个字符是(p)。
linux文件扩展名
一个linux文件能不能被执行,和他的属性有关,与文件名无关,但是扩展名有利于了解文件是什么东西。
*.sh:脚本或批处理文件
*Z,*.tar,*.tar.gz,*.zip,*.tgz:经打包的压缩文件,因为压缩软件不同,造成文件名不同。
*.html,*.php:网页相关文件,分别代表HTML语法和PHP语法的网页文件。
linux文件名长度限制
单一文件或目录最大容许文件名为255Bytes,以一个ASCII英文占一个比特而言最大可以255个字符长度,一个中文占两个比特来说,最大128个中文。
linux文件名称的限制
由于linux在命令行下一些指令的关系,设置文件名的时候最好避免一些特殊字符。比如:*?><;&!【】|\' "" `() {}等,以小数点开头代表隐藏文件,也最好避免以+-开头,因为有的指令会+-选项。
3、linux 目录配置
3.1 linux目录配置的依据-FHS
FHS(文件系统层次结构标准),根据这个标准,希望让使用者可以了解到已安装软件通常放置于那个目录下。FHS将目录定义为四种交互作用的形态,如下图:

可以分享的:可以分享给其他系统挂载使用的目录,包括可执行文件与使用者的邮箱等数据,是能够分享给网络上其他主机挂载的目录。
不可分享的:自己机器上运行的设备文件或者是与程序有关的socket文件,由于仅与自身及其有关,所以不适合分享给其他主机。
不变的:有些数据是不会经常变动的,例如函数库、文件说明文档、系统管理员所管理的主机服务配置文件等等。
可变动的:经常改变的数据,例如登陆文件、一般用户可自行收受的新闻群组。
事实上,FHS针对目录树架构仅定义出三层目录下面应该放置什么数据,分别是:/(root根目录,与开机系统有关),/user(与软件安装与执行有关),/var(与系统运行过程有关)。
根目录(/)的意义与内容:
根目录是整个系统最重要的目录,所有的目录都是由根目录衍生出来的,同时根目录也与开机/还原/系统修复等动作有关。FHS建议:根目录(/)所在分区应越小越好,应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好,这样不但性能较佳,根目录所在的文件系统也比较不容易发生问题。根据FHS定义根目录应该有下面这些次目录的存在才好,即使没有实体目录,希望至少有链接文件存在。
| 目录 | 应该放置文件内容 |
| 第一部分:FHS要求必须存在的目录 | |
| /bin | /bin放置的是单人维护模式下还能被操作的指令,在/bin下面的指令可以被root和一般账号是用主要有:cat、chmod、chown、date、mv、mkdir、cp、bash 等指令。 |
| /boot |
主要放置开机会使用到的文件,linux kernel常用的文件名为 vmlinuz。 |
| /dev | linux系统上,任何设备与周边设备都以文件的形态存在与这个目录中,存取这个目录下的某个文件就等于存取某个设备,比较重要的文件有/dev/null,/dev/zero,/dev/tty等等 |
| /etc | 系统主要配置文件,比如人员账号密码档、各种服务启动档。一般来说这个目录下文件属性是可以让一般使用者查阅的,但是只有root有权利修改,FHS建议不要防止可执行文件在这个目录中。 |
| /lib |
系统函数库非常多,/lib放置的是在开机时会用到的函数库,以及在/bin或/sbin下面的指令会调用的函数。/lib/include/这个目录下方的是可抽换式的核心相关模块(驱动程序)。 |
| /media | 放置的是可移除的设备,包括软盘、光盘、DVD等设备。 |
| /mnt | 暂时挂载某些额外设备 |
| /opt | 第三方协力软件放置的目录。 |
| /run | 系统开机后产生的各项信息目录。 |
| /sbin | 开机过程中所需要的包括开机、修复、还原系统所需要的指令。常见指令包括fdisk、fsck、ifconfig、mkfs |
| /srv | 可以看作service的缩写,是一些网络服务启动后,所需要取用的数据目录。比如WWW、FTP服务等 |
| /tmp | 一般使用者或正在执行的程序暂时放置文件的地方,重要数据不可放置在此文件下,FHS建议在开机时删除/tmp目录下数据。 |
| /usr | 第二层FHS设置 |
| /var | 第二层FHS设置 |
| 第二部分:FHS建议可以存在的目录 | |
| /home | 系统默认的使用者主文件夹。。~:代表目前这个使用者的主文件夹。~zl:代表zl的主文件夹 |
| /lib<qual> | 用来存放与/lib不同格式的二进制函数库 |
| /root | 系统管理员的主文件夹。如果进入单人维护模式仅挂载根目录时,该目录拥有root的主文件夹。 |
还有几个重要的目录。
| 目录 | 应放置文件内容 |
| /lost+found | 使用标准ext2/ext3/ext4文件系统格式才产生一个目录。 |
| /proc | 本身是一个虚拟文件系统。放置的数据都在内存中。比较重要的文件例如:/proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/* 等等 |
| /sys | 这个目录其实跟/proc非常类似,也是一个虚拟的文件系统,主要也是记录核心与系统硬件信息较相关的信息。 包括目前已载入的核心模块与核心侦测到的硬件设备信息等等。这个目录同样不占硬盘容量 |
根目录结束,来看/usr和/var。
/usr的意义与内容
usr并不是user的缩写,而是unix software resource的缩写,也就是unix操作系统软件资源,/usr的次目录建议有下面这些。
| 目录 | 应放置的内容 |
| 第一部分:FHS要求必须存在的目录 | |
| /usr/bin/ | 所有一般用户能使用的指令。该目录下不应该有子目录 |
| /usr/lib/ | 基本上与/lib功能相同,/lib是链接到此目录的。 |
| /usr/local/ | 系统管理员在本机自行安装自己下载的软件,便于管理 |
| /usr/sbin/ | 非系统正常运行所需要的指令,最常见网络服务器软件的服务指令。/sbin就是链接到该目录的 |
| /usr/share/ | 放置只读架构的数据文件,包括共享文件。 |
| 第二部分:FHS建议可以存在的目录 | |
| /usr/games/ | 与游戏相关的数据存放处 |
| /usr/include/ |
c/c++等程序语言开始(header)与包含档(include)放置处 |
| /usr/libexec/ | 某些不被一般使用者惯用的可执行文件或脚本 |
| /usr/lib<qual> | 与/lib/<qual>功能相同,/lib<qual>是链接到该目录的 |
| /usr/src/ | 一般源代码放置此处,核心源代码放置/usr/src/linux目录下。 |
/var 的意义与内容
/usr是在安装时就会占用较大的硬盘容量的目录,/var是在系统运行之后才会逐渐占用硬盘容量的目录,/var目录主要针对常态性变动的文件,包括高速缓存(cache),登陆文件(log file)以及某些软件运行产生的文件包括程序文件或者数据库文件。常见的次目录:

3.2 目录树
linux下,所有文件与目录都是从根目录开始,然后一个个分支向下,这种目录配置方式为:目录树。特性:(1)目录树的起始点为根目录。(2)每一个目录不只能使用本地端的partition的文件系统也可以使用网络上的filesystem。可以利用NFS(Network File System)服务器挂在某些特定目录。(3)每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。下图为自己虚拟机的目录:

3.3 绝对路径与相对路径
根据文件名的写法不同,也就是所谓的路径定义为绝对路径与相对路径。
*绝对路径:由根目录开始写起的文件名或目录名称。
*相对路径:相对于目前路径的文件名写法。
这一章的内容之前其实看过,有很多东西是基本熟悉的。比较重要的点是:区分使用者、群组、其他人的概念,区分文件权限(rwx),会使用指令修改(chmod(修改权限,两种方法,数字和符号法)、chown(修改文件拥有者)、chgrp(修改文件的群组)),文件目录,绝对路径和相对路径。

浙公网安备 33010602011771号