Linux 基本权限管理及实验

一、权限介绍

在linux的世界里,一切皆文件,当我们对一个文件长格式显示时,会出现很多具体的信息,这里我以创建的一个临时文件为例:

  从左往右的信息分别表示为:

(1)-rwxr-xr-x.   :文件的权限

(2)1  :文件link数或者是目录中子目录的数量(在这里展示的是文件信息)

(3)root  :所属用户

(4)root  :所属用户组

(5)206  :文件大小(在这里文件大小为206字节)

(6)3 月 12 10:15  :最后一次被修改的日期和时间

(7)666  :文件名

接下来我们重点说一下第一个 文件的权限:

1、我们不难发现文件的权限位一共有十位,除第一位,剩下每三位为一组,这十位的含义如下图所示:

(1)第一位(如上图“-”)代表文件类型,这里列举出了一些基本常见的文件类型:

“-”  :普通文件;

“d” :目录文件;

“c” :字符设备文件(鼠标、键盘等);

“b” :块文件(block、磁盘);

“p” :管道文件;

“s” :网络socket文件;

“l” :连接文件link(软链接文件);

(2)所有者权限  :文件和目录的所属用户,u-usr;

(3)所属组权限  :文件和目录的所属用户组,g-group;

(4) 其他用户权限  :除了所有者和所属组之外的用户;

2、如上图四个字母对应的含义:

(1)读(r)  :Read 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录的权限;

(2)写(w) :write 对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限(文件的删除是上级目录写(w)权限赋予的,而不是文件的权限赋予的)

(3)执行(x):excute 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限;

(4)—:表示不具有该项权限

3、我们再来看一下这张图片:

文件类型:普通文件; 

所有者:rwx,有读、写、执行权限;

所属组:r-x,有读和执行权限,没有写权限;

其他用户:r-x,有读和执行权限,没有写权限 ;

二、基本权限命令

1、chmod 

功能 : 修改文件的访问权限;

格式 : chmod  [选项] 权限类别 文件名

注意 :(1)-R : 递归修改目录中的所有文件的权限;

           (2)只有文件本身的所有者和root才能修改文件的权限;

权限模式:chmod 命令通常后面跟“[用户身份] [赋予方式] [权限类型] [文件名]”;

           (1)用户身份:u :所有者(user );  g :所属组(group);  o :其他人(other);  a :全部身份(all);

           (2)赋予方式 :+ :添加权限  ;  - :删除权限  ;  = :设置权限  ;

           (3)权限类型 : r;w;x(前面已经介绍);

数字权限:因为每一种权限前后位置都是固定的,我们可以用一组二进制数0和1来表示,组合起来便有2^3=8种,如下图所示:

文件常用权限:

            (1)644 :文件基本权限,代表所有者有读、写权限,而所属组和其他人只有读权限;

            (2)755 :文件执行权限(同时也是目录基本权限),代表所有者有读、写、执行权限,而所属组和其他人拥有读、执行权限;

            (3) 777 :最大权限(权限全开,有点危险);

目录的可用权限:

            (1)0 :不具有任何权限;

            (2)5 :基本的进入目录和目录浏览权限;

            (3)7 :权限全开(对于目录权限全开危险性还是很小的);

2、chown

功能 : 修改文件和目录的所有者和所属组;

格式 : chmod  [选项]  所有者:所属组  文件或者目录名;

注意 :(1)普通用户不能修改所有者和所属组,哪怕自己是文件的所有者,只能由root用户来操作;

            (2)普通用户可以修改所有者是自己的文件的权限;

3、chgrp

功能 : 修改文件和目录的所属组;

格式 : chmod    文件或者目录名;

4、umask

  对于文件和目录,我们需要了解一点,新建一个文件时,默认的最大权限是666;而新建一个目录时,默认的最大权限是777;

  至于原因其实我前面也有提到:对于一个文件而言,如果新建时就直接默认赋予了最大权限,这是相当危险的事情,所以新建文件是没有执行权限(x)的;而对于目录而讲,执行权限(x)仅代表可以进入目录,危险性很小,因此这也是两者的不同之处。

功能:控制新建文件和目录权限的系统设置,当一个进程创建一个目录或者文件时,umask的值会影响其的默认权限。

计算方法:(1)首先我们需要查看一下umask的值(由3或4位八进制数组成),如下:

                  (2)计算umask的值和默认最大权限值的补码 ,将umask的值得每一位用最大权限值减去,例如目录777,umask为022,则补码为755;

                  (3)将最大权限值与umask补码进行按位与操作(记得先转化为二进制);

总结:当umask为022时,新建文件默认权限位644(rw-r--r--);,新建目录默认权限为755(rwxr-xr-x);

ps:当然有很多简单的计算方法,网上都有详细步骤。

三、实验

接下来我针对上面的权限进行一些简单的实验:

       我首先添加一个新用户作为测试用户 test1 ;

1、chomd 测试

(1) 在root用户下,我在 /tmp目录下创建了test.txt目录,并且在该目录下创建了test.c文件,通过修改权限,发现在root用户下,是可以修改文件权限的(644—>755);

(2)在测试用户test1下,当我想修改 所有者为root用户的文件text.c时,提示我不允许,说明当普通用户登录时,当文件所有者不是自己,是不允许修改文件权限的(那当文件所有者是自己呢?答案是可以)。

2、chown 和 chgrp 测试 

(1)在root用户下,将test.c文件的所有者和所属组修改为test1用户后,在test1用户下,修改所有者为test1文件的权限,这时就可以修改了。

(2)从上面我们可以发现,在root用户下,是可以修改文件的所有者和所属组的,那如果是在普通用户下呢?—>答案是不能,普通用户不能修改文件的所有者和所属组,哪怕是这个文件所有者是这个普通用户,因此只有root用户才可以修改。

(3)接下来我们做文件和目录的权限操作的测试,由于在root用户下,无论文件权限是什么都不会影响文件和目录的正常操作,因此这里我们用test1用户做测试。 

            >首先,在test用户下,创建一个测试目录111和在目录下创建一个文件aaa,并将文件和目录的权限一次设为0,如下图:

            >这时发现文件和目录的任何基本操作都无法进行;

            > 当我们为目录文件赋予 4 (可读)权限时,发现,发现目录仍然无法正常查看和切换;当我们为目录文件赋予 5 (可读可写)权限时,此时可以查看目录里的文件,并且可以切换到目录里;

            > 在111目录下的aaa文件此时没有任何权限,进行不了读、写和执行操作,分别赋予读写操作后,分别可以进行查看文件、编辑文件等操作,但需要注意,此时依旧无法删除此文件

            > 当我们给111目录赋予 7(可读可写可执行)操作后,111目录里的文件aaa便可以删除,并且可以创建新文件了,因此影响文件是否可以删除的关键便是是否赋予上级目录“可写”操作;

            > 为此我们知道了,对于文件而言,执行权限便是最高权限;但对于目录而言,可写权限才是最高权限。

  • 36
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值