我是贝尔格里尔斯,我要向你展示如何入门并熟练掌握世界上最难的操作系统之一linux,这里遍布着数不清的指令,以及完全脱离图形化的界面,没有高超的学习技巧,甚至连一秒都坚持不下去--linux文件权限

1fc73afce1744098b4291558ac80075a.png

Linux权限

        在Linux系统中,权限是保障系统安全的重要机制。它通过区分用户类型和设定文件/目录的访问权限来控制用户对资源的操作能力。主要涉及的概念包括普通用户与超级用户(root)之间的区别、如何切换用户身份以及相应的权限限制。

linux下存在两种用户:普通用户和超级用户(root)

        超级用户:不受linux的权限限制,可以为所欲为。

        普通用户:受linux的权限限制,和我们普通人一样做有限的事情。

我们使用  su [用户名]  的方式,可以切换用户。

从普通用户切换到root,是需要输入root的密码的,而root因为是超级用户,使用可以随心所欲不用密码的切到任何用户,但是要切回root就需要输入密码了,因为切走之后便不再是超级用户。

 

Linux权限管理

1.文件访问者的分类

        u(User):文件和文件目录的拥有者

        g(Group):文件和文件目录的拥有者所在的组的用户

        o(Others):其他用户

为什么会出现所属组这样的概念的,明明u跟o就已经可以区分权限了呀?

实则不然,因为我们做项目的时候一定会涉及到多人合作的问题,如果只区分拥有者跟其他用户,那么这个文件只能访问,其他人(比如你的领导)需要访问就得开放o的权限,但这会导致其他的所有用户(比如你的竞争对手)都有访问权,造成安全隐患,因此所属组g的出现很好的解决了这个问题。

 

2.文件的类型和访问权限

在Linux系统中,文件类型可以通过文件权限字符串的第一个字符来识别。常见的文件类型及其表示符号如下:
d:文件夹(目录)

例如:drwxr-xr-x

-:普通文件

l:软链接(类似Windows的快捷方式)

b:块设备文件(例如硬盘、光驱等)

p:管道文件

c:字符设备文件(例如显示器和键盘)

s:套接字文件

我们在使用 ll 指令查看文件的时候,会发现文件有这么一栏

drw-r--r-x

我们可以将其分为四个部分,第一个部分就是第一个字母,这就是用来判断我们当前的文件类型的,也就是上述我们提及的。

其余的9个字母可以平均分成三个部分,分别于我们上述提及的文件访问者的三个类型一一对应,每个类型的访问者都有其对印的权限。

1b717b1496b04b5caffa227a00d727d4.png

基础权限

r(读):对于文件来说具有查看文件内容的权限。

w(写):对于文件来说修改文件内容的权限。

x(执行):对于文件来说有执行文件的权限。(比如test.c文件没有x权限的话无法执行)

“ - ” :表示不具有对应的权限。

 

 

3. 文件权限值的表示法

3.1 字符表示法

        就是我们第二点提到的rwx

3.2  8进制表示法

        已知权限的状态只有两种:有或者无,我们可以分别用1和0来表示这两种状态。比如若所属组的权限是 r-x,那么就可以表示为 101,而二进制转换为八进制刚好是三位二进制转一位八进制。 因此 101 又可以转成 5,那么刚好一个访问者类型对应一个数据。

        例如 664 对应的二进制 110 110 100 也就是表示文件的权限为:"rw- rw- r--"

 

 

4. 文件访问权限的相关设置指令

说明:只有⽂件的拥有者和root才可以改变⽂件的权限

4.1 chmod

功能:设置⽂件的访问权限

格式:chmod [参数] 权限 ⽂件名

常⽤选项:

        -r:递归修改目录文件的权限

chmod命令的格式:

用户表示符和权限字符

  • 用户表示符

    • u:拥有者
    • g:拥有者同组用户
    • o:其他用户
    • a:所有用户
  • 权限字符

    • +:向权限范围增加权限代号所表示的权限
    • -:向权限范围取消权限代号所表示的权限
    • =:向权限范围赋予权限代号所表示的权限
  • 实例

    • chmod u+w /home/abc.txt:为文件拥有者增加写权限
    • chmod o-x /home/abc.txt:取消其他用户的执行权限
    • chmod a=x /home/abc.txt:为所有用户设置执行权限,取消其他所有权限

三位8进制数字

  • 实例
    • chmod 664 /home/abc.txt:设置文件权限为 rw-rw-r--
    • chmod 640 /home/abc.txt:设置文件权限为 rw-r-----

4.2 chown

功能:修改⽂件的拥有者

格式:chown [参数] ⽤⼾名 ⽂件名

实例:• chown user1 f1

           • chown -R user1 filegroup1

4.3 chgrp

功能:修改⽂件或⽬录的所属组

格式:chgrp [参数] ⽤⼾组名 ⽂件名

常⽤选项:

        -R 递归修改⽂件或⽬录的所属组 

实例: • chgrp users /abc/f2

4.4 umask

功能:  查看或修改⽂件掩码

实例:

        • umask 755

         • umask //查看

         • umask 044//设置

文件掩码:

        新建⽂件夹默认权限=0666,新建⽬录默认权限=0777,但是那么照例来说我们新建一个文件他默认的权限应该是 rw-rw-rw,但是实际上我们新建一个文件可以发现并不是这样的

e9744a733c3f48ebaf5c05e6d8cc74f8.png

可以看到转换过来应该是664,那么为什么会这样呢? 这就是因为有文件掩码,

比如文件掩码是0002,那么实际的默认权限就等于起始的默认权限&(~文件掩码)

52b2f403e3774c6381c63823c0540a58.png

 

为什么要有文件掩码?

         新创建的目录默认具有 777 权限(即 drwxrwxrwx),表示所有用户都具有读、写和执行权限。然而,这些默认权限可能过于宽松,存在安全风险。umask 的作用就是从这些默认权限中减去一些权限,以确保新创建的文件和目录具有更严格的权限设置。
        通过设置全局或用户的umask值,可以确保所有新创建的文件和目录具有一致的权限设置。这有助于维护系统的权限管理标准,减少因权限设置不一致而引起的混乱。
        我们可以可以通过调整umask值来快速更改新文件和目录的默认权限,而不需要手动逐个设置权限。

4.5 file指令

功能说明:辨识⽂件类型。

在linux中,文件名的后缀并不一定代表着他的真实类型,就比如说一个文件的后缀是.c,着并不能代表他是一个代码文件,可能只是一个文本文件。当我们需要查看该文件的类型是时,就需要使用file指令。

21846546bbbe47fd9756ace6cd8e295b.png

语法: file [选项] ⽂件或⽬录...

常⽤选项:

        • -c:详细显⽰指令执⾏过程,便于排错或分析程序执⾏的情形。

        • -z:尝试去解读压缩⽂件的内容。

4.6 sudo指令

        当我们需要root的权限来执行当前语句,但是又不想用su来频繁切换用户,就可以使用sudo来进行提权。

功能:提升用户的权限,目前这个阶段我们可以暂时理解为以root用户的权限来执行当前语句

语法:sudo + 命令

 

 

5. 目录的权限

目录的权限与文件的权限又些许不同,因此我们需要在阐述一下。

• 可读权限(r):  如果⽬录没有可读权限,则⽆法⽤ls等命令查看⽬录中的⽂件内容.

• 可写权限(w):   如果目录没有可写权限,则无法在目录中创建,删除,以及修改文件。

• 可执⾏权限(x):    如果目录没有可执行权限,则无法cd到目录中,即无法进入访问该目录。

 

6. 粘滞位

        如果有一天那么需要写一个公共的项目,那么就需要建立一个共享文件,这样可以促进文件和资源的共享、协作和管理。

        于是,问题来了,只要用户具有目录的写权限,用户就可以删除该目录中的文件,即使用户对该文件本身没有写权限。我张三创建的⼀个⽂件,凭什么被你李四可以删掉?

        所以共享目录这种行为可能会导致一些安全和管理上的问题。

        因此就引出了我们的粘滞位的概念。

[root@localhost ~]$ chmod +t /home/ # 加上粘滞位 
[root@localhost ~]$ ls -ld /home/
drwxrwxrwt. 3 root root 4096 9⽉ 19 16:00 /home/
[root@localhost ~]$ su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别⼈的⽂件 
rm:是否删除有写保护的普通空⽂件 "/home/abc.c"?y
rm: ⽆法删除"/home/abc.c": 不允许的操作

使用 chmod +t 给文件加上粘滞位,则该⽬录下的⽂件只能由

        1. 超级管理员删除

        2. 该⽬录的所有者删除

        3. 该⽂件的所有者删除

 

 

关于权限的总结


        •  目录的可执行权限(-x)表示你是否可以在目录下执行命令。

        •  如果目录没有 -x 权限,用户无法对目录执行任何命令,甚至无法使用 cd 命令进入该目录。即使目录有 -r 读权限(这是一个常见的误解,认为有读权限就可以进入目录并读取文件,但实际上没有可执行权限是无法进入目录的)

        •  如果目录具有 -x 权限,但没有 -r 读权限,用户可以执行命令,可以使用 cd 命令进入目录。但由于没有目录的读权限,用户在目录下即使可以执行 ls 命令,也无法读出目录下的文档。也就是说,用户可以看到目录的存在,但不能列出目录中的文件和子目录。

 

 

 

 

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值