[Linux 杂货铺] —— 权限(文件权限和目录配置)

目录

??前言

?? 文件的属性

?? 权限的概念

??拥有者和所属组(角色):

??用户(具体的人):

?? 权限的管理

??1. chmod 指令:修改文件的权限。

??2. chgrp 指令:  修改文件所属组。

??3. chown 指令: 修改文件拥有者。

?? 一般文件权限

?? 目录权限

?? 粘滞位

?? 总结


??前言

        本期[ Linux杂货铺 ]带来的 权限。我们学习Linux,就是在和文件目录这些打交道,所以搞懂它们的属性之一——权限就很重要,这篇文章将从不同角度带你深入理解权限的概念,如何修改权限,以及区分文件和目录权限的不同。

                Linux最优秀的地方之一就是在于它的多人多任务环境,而为了让每个用户都具有保密的文件数据,因此文件权限管理就变得很重要了。Linux中将文件可读写的身份分为:拥有者(owner),所属组(group),其他人(other),且这三种身份各有读(read),写(write),执行(execute)等权限。那么这些身份和权限各有什么意义呢,下面我们来一一介绍。

?? 文件的属性

        在介绍文件之前,我们先来看看文件都有什么属性把,使用 【ls -al】指令,来查看文件详细属性。

拓展:

        ls是list意思,重点显示文件的文件名与相关属性,选型-al的意思就是列出所有的文件详细的权限与属性(包含隐藏文件)。

        如下图所示,下图即文件属性示意图:

        这篇文章将重点讲解文件类型权限,和文件拥有者,文件所属组这三栏内容。

        我们说先来看第一栏文件类型权限,这里需要注意的是,这一栏一共有10个字符

拓:

第一个字符代表着这个文件是目录,文件或是链接文件等:
[ d ] 则是目录

[ - ]  则是文件

[ l ] 则是链接文件

[ b ] 则表示为设备文件里面可提供存储的周边设备(可随机读写的设备)

[ c ] 则表示为设备文件里面的串行端口设备,例如键盘,鼠标。

        接下来的字符中,以三个为一组,且均为【rwx】为组合,其中【r】代表可读,【w】代表可写,【x】代表可执行。如果没有权限,则用【-】代替。

        第一组为文件拥有者具有的权限,第二组为所属组所有的权限,第三组是其他人所有的权限。

        以上,我们就通过文件属性引入了权限,并对权限有了一定了解,接下来,我们就详细讲解一下什么是权限。

?? 权限的概念

        权限,可以简单理解为限制一部分人的权利,而不限制另一部分人。这里的人就是:用户,所属组,其他人。权利:r可读,w可写,x可执行。

??拥有者和所属组(角色):

1. 文件拥有者:简单理解为,谁创建了文件,谁就是文件的拥有者。

2. 文件所属组:用户组也很好理解,就是和我同组的人。用户组最有用的功能之一就是当你在团队进行协同工作的时候。每个账号可以有多个用户组的支持。

3. 其他人:当一个账户既不是文件的拥有者,又不属于文件所属组,那么这个账户就是其他人。

        以上就是用户和用户组的概念,其实用户和用户组可以理解为角色卡,它是由一个一个的账户所扮演的,也就是我们下面所要讲的具体的人。

??用户(具体的人):

1. root 用户:也就是我们常说的超级管理员,root账户在Linux中可是有很大的权限的,关于系统服务的文件通常只有root才能读写或执行。root基本不受系统的限制,无论文件的权限是什么,默认root都是可以读写的。

2. 普通用户:也就出了root账户以外的账户

拓:

        在Linux系统中,默认情况下,所有系统上的账户与一般身份用户,以及root的相关信息都记录在/etc/passwd这个文件中,至于个人密码在记录在/etc/shadow这个文件中,此外,Linux中所有组名都记录在/etc/group中。

?? 权限的管理

        权限值的表示方法,如下图所示:

??1. chmod 指令:修改文件的权限。

 ( 1 ). 用户表示符
+/-=
权限字符

+:
向权限范围增加权限代号所表示的权限

-:
向权限范围取消权限代号所表示的权限

=:
向权限范围赋予权限代号所表示的权限

用户符号:  

u
:拥有者

g
:拥有者同组用

o
:其它用户

a
:所有用户

例如:

# chmod u+w /home/abc.txt

# chmod o-x /home/abc.txt

 ( 2 ). 三位
8
进制数字 

# chmod 664 /home/abc.txt

# chmod 640 /home/abc.txt

??2. chgrp 指令:  修改文件所属组。

                如果要修改文件所属组,被修改的组名必须存在在/etc/group这个二维年鉴中,否则就会显示错误。

chgroup  【-R】   新的用户组名字   dirname/filename

选项与参数:

【-R】:进行递归修改,即连同子目录下的所有文件,目录都更新成为新用户组。

??3. chown 指令: 修改文件拥有者。

        同样,使用chown时,要注意,新修改的用户必须是存在在系统账户中的,也就是/etc/passwd这个文件中有记录的用户名才能修改。扩充的一点是,chown也可以修改用户组。

chown    【-R】    账户名称    文件或目录

chown    【-R】    账户名称:用户组名称    文件或目录

选项与参数:

【-R】:进行递归修改,即连同子目录下的所有文件,目录都更新成为新用户/用户组。

        如果你要拷贝一个文件,使用cp命令后,还会复制执行者的属性与权限,如果我们想要修改呢,就可以使用chgrp和chown指令了。

拓:

新建文件夹默认权限
=0666

新建目录默认权限
=0777

        但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是
mask
,则实际创建的出来的文件权限是
: mask & ~umask。

        umask是文件掩码的意思,也是一条指令,查看或修改文件掩码。

# umask //
查看

# umask 044//
设置

?? 一般文件权限

        现在,我们知道了Linux系统内用户的三种身份(拥有者,所属组,其他人),以及他们所拥有的权限有哪些(r , w , x)。利用【ls -al】指令来查看。下面,我们来看一下文件权限对一般文件和目录文件有何不同。

对于一般文件:

● r (read) : 可读取该文件的实际内容,如读取文本文件的文字内容等;

● w (write) : 可以编辑,新增或是修改文件的内容。(注意,没有删除文件的权限);

● x (execute) : 该文件可以被系统执行的权限。

拓:

        在Linux中,不以后缀名区分文件,对于.exe为后缀名的文件,Linux是不区分的,当然Linux中的软件是区分的。

        因此,Linux中判断一个文件能否被执行,并不是以.exe后缀名来判断的。在Linux中如果一个文件想要被执行,必须符合一下两点:

        1. 该文件能够被执行,也就是该文件是一个可执行文件。

        2. 该文件是否具有【x】权限。

?? 目录权限

        文件是用来存放实际数据的,而目录主要记录的就是文件名列表等信息,文件名与目录有强烈的关系。

对于目录:

r : 具有读取目录结构列表的权限,所以当你具有r权限时,表示你可以查询该目录下的文件名数      据。

w:表示你具有改动该目录结构列表的权限,即 建立显得文件与目录,删除已经存在的文件与目录,将已经存在的目录或文件更名,移动该目录内的文件和目录位置。

x:表示用户可以进入该目录,即该目录成为工作目录。

?? 粘滞位

可执行权限
:
如果目录没有可执行权限
,
则无法
cd
到目录中
.

可读权限
:
如果目录没有可读权限
,
则无法用
ls
等命令查看目录中的文件内容
.

可写权限
:
如果目录没有可写权限
,
则无法在目录中创建文件
,
也无法在目录中删除文件
.

        问题来了,
就是只要用户具有目录的写权限
,
用户就可以删除目录中的文件
,
而不论这个用户是否有这个文件的写权限。这好像不太科学啊,
我张三创建的一个文件
,
凭什么被你李四可以删掉
?

        为了解决这个问题,Linux引入了粘滞位的概念。

当一个目录被设置为
"
粘滞位
"(

chmod +t),
则该目录下的文件只能由

一、超级管理员删除

二、该目录的所有者删除

三、该文件的所有者删除

?? 总结

        权限就是限定用户可以执行哪些操作的,权限分为r,w,x,用户的角色分为所有者,所属组,其他人,而这些角色是由一个个普通用户和root用户来充当的,其中用户是可以修改的。文件的权限是对针对文件的内容,而目录的权限主要是针对文件名等内容。

        以上,我们就对文件的权限进行了讲解,其中包含了一般文件的权限意义和目录权限的意义,已讲解了如何修改权限。

        如最后,如果感觉这篇文章对你有用,欢迎点赞,收藏,关注;也希望大家找出文章不足,在评论区讨论交流,互相学习。Thanks?(?ω?)?