linux基础学习——linux的文件权限和目录配置
1.用户和用户组和其他人概念:
三个概念的前提宗旨:linux是一个多人多任务的系统环境。如果不对文件作出一个权限限制的话。任何人都能操作这份文件的话,那么系统变很容易出差错。用户和用户组以及其他人这个就主要是对权限作出限制。保证使用环境安全。在linux里面,每一个文件都具有用户(User),用户组(Group),以及其他人(others)三种身份的个别权限。
用户:用户个人,通常是指拥有者本身。
用户组:多个用户存在于一个用户组里面,共享用户组本身的文件资源,可接受查询等一类功能,但用户个人本身的文件,并不能被其他人包括用户组的拥有者进行查询。保证了私有空间。
其他人:可以说是,用户组之外的都属于其他人一系列。没有权限允许,没办法查询文件。
Root:对于文件有着无穷的权利。基本上跟爹一样。可以协助你,方便我们的linux多任务环境比那的更加容易管理。
PS: 1.每个账号都可以拥有多个用户组的支持。并不局限于单个用户组。
2.linux文件权限概念
2.1linux文件属性
我们有一个常见常用的命令用来查询文件的属性。【ls】就是一个查看文件的命令。查看文件的时候为了方便我们需要切换以下身份,采用Root进行操作。
其中ls是list的意思,重点在显示文件的文件名和相关属性。而选项【-al】表示列出所有文件详细的权限和属性(包括隐藏文件,以 .(点)开头的文件就是了)。
第一栏:代表着的是文件的类型和权限。权限主要是有10个字符(上面好像看不清,大家可以自行测试看看)。(重点!!!!!!!!!!!!!!!!!!!!!!!!!!!!)
1.第一个字符代表这个是文件、目录、还是链接文件。
其中十个字符去掉一个,还剩九个。每三个为一组,分别对应文件拥有者权限(用户)、文件所属群组权限、其他人权限。其中
第二栏表示:有多少文件链接到这个节点(inode)。每个文件都会将文件本身的权限和属性记录到这个文件系统的节点中。这个属性就是记录有多少不同文件名链接到同一个节点上。
第三栏表示:文件拥有者(目录)的拥有者账号。
第四栏表示:这个文件的所属用户组。在linux系统下,你的账号会加入一个或者多个用户组。
第五栏表示的是文件的容量大小。单位是Bytes。
第六栏是创建时间护着是修改时间。
第七栏就是文件名了。其中刚刚提到,如果文件名前面多了一个点,那么就是表示是隐藏文件。
科普:
linux文件权限的重要性
权限的重要用途主要还是在数据安全性上面。
主要体现在系统保护功能、团队开发软件和数据共享功能、以及没有权限的话会导致严重危害。
2.2.修改文件的属性和权限
首先先介绍以下几个常用于用户组、用户、其他人的权限修改命令:
chgrp:修改文件所属用户组。
chown:修改文件拥有者。
chmod:修改文件的权限。
其中修改权限的xyz有这两种表示方法:
1.数字类型修改文件权限法 2.符号类型修改文件法
一:首先先讲以下数字类型修改文件权限法
r=4
w=2
x=1
0表示没有权限
二:符号类型修改文件法
其中我们之前说到了三种权限:用户、用户组、以及其他人。这里我们要补充一个,将用户和用户组以及其他人同称所有。那么我们就可以得到四种权限。
分别用英文缩写表示。u表示用户,g表示用户组。o表示其他人。a表示所有权限。那么就可以衍生出一些表示方法。
u=rwx;或者是 a-x 这样的语句。(这些在鸟叔的笔记里都是有记载的,可行的)
下列我将给大家展示并验证。(这里包括chown和chgrp以及chmod的语法)
PS:我们在修改部分文件的时候。如果是测试的话。一定要复原成原来的样子。
2.3【目录和文件】的权限意义
2.3.1权限对文件的重要性
文件是实际含有数据的地方,包括一般的数据文本文件和数据库文件以及其他的二进制可执行文件等。权限对文件来说,它的意义是这样的:
r(read):可读取此文件的实际内容。w(write):可以修改、编辑、或者新增该文件的内容。但是没有能力删除文件本身。x(execute):该文件有被系统执行的权限。
PS:与Windows不同的是,文件能否被执行,主要是借由是否有X这个权限来判断决定的。和文件名本身没有太大关系。
2.3.2权限对目录的重要性
目录主要的内容在记录文件名列表,文件名和目录有着强烈的关联。
r(read):表示具有读取目录结构列表的权限。w(write):表示具有改动该目录结构列表的权限。①建立新的文件和目录。②删除已经存在的文件和目录(不论该文件的权限是什么);③将已经存在的文件或者目录进行更改名字。④移动该目录内的文件或者目录的位置。x(execute):表示的是用户是否能进入该目录成为工作目录的用途。
PS:
如果在某目录下不具有X权限,那么就无法切换到该目录下。也就无法执行目录下的任何命令。即使具有该目录的r或者w权限。要开放目录给任何人的时候,至少要给r和x的权限。但是w权限不能随便给。
将文件看成文件夹,将目录看成可分类抽屉。再去理解可能会稍微好点。
引用:表格
2.4linux文件种类和拓展名
2.4.1文件种类
①常规文件:纯文本文件、二进制文件、数据文件。
②目录,第一个属性为 [ d ];
③链接文件,第一个属性为[ l ];
④设备和设备文件:区块设备文件(第一个属性为[ b ])、字符文件(第一个属性为[ c ]);
⑤数据接口文件,第一个属性为[ s ];
⑥数据传输文件,第一个属性为[ p ];
2.4.2linux文件拓展名
基本上,linux的文件是没有所谓拓展名。主要是与第一栏的第十个属性有关。跟文件名没有任何关系。
不过可以被执行和可以执行成功就不太一样了。能否执行成功主要取决于文件的内容。
2.4.3linux文件名的限制
和windows一样。给文件命名的时候要尽量避开特殊字符。
3.Linux 目录配置
3.1 Linux 目录配置标准:FHS
a.可分享的: 可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据,是能够分享给网络上其他主机挂载用的目录。
b.不可分享的: 自己机器上面运行的设备文件或者是与程序有关的socket文件等,由于仅与自身机器有关,所以当然就不合适分享给其他主机了
c.不变的: 有些数据是不会经常变动的,跟随着distribution而不变动。例如函数库、文件说明文件、系统管理员所管理的主机服务配置文件等。
d.可变动的: 经常改变的数据,例如登录文件,新闻组等
FHS针对目录树架构定义出三层目录该放什么数据:
①/(root, 根目录): 与开机系统有关;
②/usr(UNIX software resource): 与软件安装/执行有关
③/var (variable): 与系统运作过程有关
3.1.1 根目录(/)的意义与内容
首先根目录与开机、还原、系统修复等操作有关。FHS标准建议:根目录(/)所在分区应该越小越好, 且应用程序所安装的软件最好不要与根目录放在同一个分区内, 保持根目录越小越好,如此不但性能较好, 根目录所在的文件系统也较不容易发生问题。FHS定义出根目录(/)下面应该要有下面这些子目录的存在:
事实上FHS针对根目录所定义的标准仅有上面列举的数据。下面是几个在linux当中也是非常重要的目录:
除了这些目录的内容之外,另外要注意的是,因为根目录与开机有关,开机过程中仅有根目录会被挂载,其他分区则是在开机完成之后才会持续进行挂载的行为。根目录下与开关过程有关的目录就不能够与根目录放到不同的分区去。如下面几个目录:
/etc: 配置文件
/bin: 重要的执行文件
/dev: 所需要的设备文件
/lib: 执行文件所需要的函数库与内核所需的模块
/sbin:重要的系统执行文件
3.1.2 /usr 的意义与内容
依据FHS的基本意义,/usr里面放置的数据属于可分享的与不可变动的, usr是UNIX Software Resource的缩写,也就是“UNIX 操作系统软件资源”所放置的目录,而不是用户的数据。所有系统默认的软件(distribution 发布者提供的软件)都会放置到/usr下面。
3.1.3 /var的意义与内容
如果/usr是安装时会占用较大硬盘容量的目录,那么/var就是在系统运行后才会渐渐占用硬盘容量的目录。因为/var目录主要针对常态性变动的文件, 包括缓存(cache)、登录文件(log file)以及某些软件运行所产生的文件,包括程序文件(lock file, run file), 或者例如MySQL数据库文件等。
3.2 目录树
在Linux下面,所有的文件与目录都是由根目录开始的。那是所有目录与文件的源头。然后再一个一个分支下来,有点像树枝状。因此我们也称这种目录配置方式为“目录树”,它主要的特征有:
目录树的起始点为根目录(/,root)
没一个目录不只能使用本地端的文件系统,也可以使用网络上的文件系统。举例来说,可以利用Network File System(NFS)服务器挂载某特定目录等。
每一个文件在此目录树中的文件名(包含完整路径)都是独一无二
图片引自
3.3 绝对路径和相对路径
在Linux中,根据文件名的写法不同,可以将路径分为绝对路径和相对路径。
绝对路径:路径的写法一定是由根目录 / 写起的。
相对路径:路径的写法不是由根目录 / 写起的。
在Linux文件系统中,有两个特殊的符号也可以表示目录:
“.”表示当前目录.(这边不是没有东西,而是有一个点,英文字符的点)
“. .”表示当前目录的上一级目录
4.总结
1.Linux 的每个文件中,可分别给予用户、用户组与其他人三种身份的rwx权限;
2.用户组最有用的功能之一,就是当你在团队协同工作的时候,且每个账号都可以有多个用户组的支持。
3.利用Is -1显示的文件属性中,第一个字段是文件的权限,共有十个位,第一个位是文件类型,接下来三个为一组共三组,为用户、用户组、其他人的权限,权限有rwx三种;
4.如果文件名之前多一个“.”, 则代表这个文件为隐藏文件;
5.若需要root的权限时,可以使用su-这个命令来切换身份,操作完毕则使用exit离开su的命令环境
6.更改文件的用户组支持可用chgrp,修改文件的拥有者可用chown,修改文件的权限可用chmod;
7.chmod修改权限的方法有两种,分别是符号法与数字法,数字法中r、W、X数字分别为4、2、1;
8.权限对文件来说,它的意义是这样的:
r(read):可读取此文件的实际内容。
w(write):可以修改、编辑、或者新增该文件的内容。但是没有能力删除文件本身。
x(execute):该文件有被系统执行的权限。
9.目录主要的内容在记录文件名列表,文件名和目录有着强烈的关联。
r(read):表示具有读取目录结构列表的权限。
w(write):表示具有改动该目录结构列表的权限。
①建立新的文件和目录。
②删除已经存在的文件和目录(不论该文件的权限是什么);
③将已经存在的文件或者目录进行更改名字。
④移动该目录内的文件或者目录的位置。
x(execute):表示的是用户是否能进入该目录成为工作目录的用途。
10.要开放目录给任何人浏览时,应该至少也要给予r及x的权限,但w权限不可随便给;
11.能否读取到某个文件内容,跟该文件所在的目录权限也有关系(目录至少需要有x的权限);
12.绝对路径:路径的写法一定是由根目录 / 写起的。相对路径:路径的写法不是由根目录 / 写起的。
本篇参考文章如下:
绝对路径和相对路径
linux的目录配置
最后,本人还是弱鸡一枚。许多知识都是站在前人基础上进行搭建和传播。若有侵权行为。还请留言,本人必将道歉和更改。感谢各位的包容。
接下来我会每个礼拜进行两次的留言回答查看。在本人得到能力范围内,会尽量对大家进行解疑。欢迎您的留言。共同进步!
若有更好理解的说法,还请留言指教。本人会根据合理性进行一个更改。感谢大家的支持!!