美文网首页
Linux-文件权限

Linux-文件权限

作者: Wu杰语 | 来源:发表于2019-10-30 17:16 被阅读0次

序言

linux的文件权限是linux的安全管理机制中的一个环节,我们从使用了解下文件权限,然后再了解一下内核实现。

linux的文件权限

用ls命令查看/boot/grub2的文件权限


image.png

我们看到每个文件相关的信息,其中第一行的字段意义:

  • -rw-r--r--.代表权限
  • 1 对于文件,代表文件链接数,对于目录代表同一级的目录数字
  • root 代表当前用户
  • root 代表当前用户组
  • 64文件大小
  • Jul 10 22:55 是文件创建时间
  • device.map代表文件名

紧接着,我们需要看权限的含义了,一共十个字符:


image.png

一共分为四部分:

  • 第一个字符,代表类型,其中'-'代表普通文件, ‘d'代表目录文件,'b'代表块特殊文件,’c'代表字符特殊文件,‘l'代表符号链接,’f‘代表管道文件,’s‘代表套接字文件
  • 第二部分的 rwx代表文件所属用户具有读写执行的权限
  • r-x代表用户组权限,当一个用户,不是文件所属用户,但是和文件所属用户具有相同的用户组时,就可以有和用户组相同的权限,即使该用户不具备读写可执行权限。
  • r-x,最后桑格字符代表其它用户具有的权限。

对于目录来说:

  • x代表可进入目录
  • rx代表可进入目录,显示目录下的文件名
    -wx代表可进入目录,修改目录内的文件名

修改用户权限

chmod修改文件目录权限
chown修改文件的属主或者属组权限


image.png

通过帮助我们可以看到,有两种方式修改权限,一种MODE,一其中MODE的定义在最后一行

特殊权限

image.png

注意到属主的权限是rws,s表示任何一个用户都可以有可修改的权限,在这里每个用户可以自己修改自己的密码。

image.png

这个文件夹下的用户创建的文件仅仅用户和root可以创建和删除。这样,当用户在tmp下创建文件时,就可以避免被另外一个用户删除掉。

内核中的文件权限

文件创建的时候就会设置好权限,这些权限怎么工作的呢?
在进程描述符中相关的代码

struct task_struct {
.........
        /* Tracer's credentials at attach: */
    const struct cred __rcu     *ptracer_cred;

    /* Objective and real subjective task credentials (COW): */
    const struct cred __rcu     *real_cred;

    /* Effective (overridable) subjective task credentials (COW): */
    const struct cred __rcu     *cred;
........
}
struct cred {
  .........
    kuid_t      fsuid;      /* UID for VFS ops */
    kgid_t      fsgid;      /* GID for VFS ops */
    unsigned    securebits; /* SUID-less security management */
    kernel_cap_t    cap_inheritable; /* caps our children can inherit */
    kernel_cap_t    cap_permitted;  /* caps we're permitted */
    kernel_cap_t    cap_effective;  /* caps we can actually use */
    kernel_cap_t    cap_bset;   /* capability bounding set */
    kernel_cap_t    cap_ambient;    /* Ambient capability set */
  ......
} __randomize_layout;

一个进程,设置了fsuid和fsgid后,在执行碰到文件的时候,就看文件的uid和gid和进程之间比较,如果进程满足条件,就可以按照文件设置的权限对文件进行操作访问,否则就不行。

对于上述所讲的特殊权限s,怎么实现的呢,就是进程被创建的时候,虽然不是文件所属用户创建,但是此时进程的fsuid会被设置成为文件所属用户,这样就做到了可以对该文件进行修改。

小结

这篇小文章复习了一下用户权限,特别是特殊权限,同时,我们针对这块深入到源码中,看了一下源码是如何实现的,通过使用和源码比对,对于知识的掌握程度更加深入,感觉更加通透了。

相关文章

  • Linux-文件权限

    用户与用户组 linux将文件可存取的身份分为三个类别,owner,group,others,且三种身份各有rea...

  • Linux-文件权限

    Linux系统中运行ls -al命令可以看到以下信息: 第一列代表这个文件的类型和权限 第一个字符代表文件是目...

  • Linux-文件权限

    序言 linux的文件权限是linux的安全管理机制中的一个环节,我们从使用了解下文件权限,然后再了解一下内核实现...

  • Linux-文件权限管理

    《鸟哥的Linux私房菜-基础学习篇》笔记 文件权限概念 以查询root用户根目录为例: 第一列的10个字符就代表...

  • Linux-文件的特殊权限

    前言 我们知道在Linux里文件和目录有r、w、x这三个读、写、执行的权限。但有时还会在权限里看到s和t,例如:s...

  • Linux-文件权限与目录配置

    Linux 最优秀的地方之一就在于他的多人多任务环境。而为了让各个使用者具有较保密的文件数据,因此文件的权限管理就...

  • Linux-如何成为一个优秀的管家(文件篇②)

    接《Linux-如何成为一个优秀的管家(文件篇①)》 四、整理文件 ① 打包文件:tar(tape archive...

  • Linux-文件与目录的权限意义

    我们都知道Linux系统内的文件有三种身份:所有者、用户组和其他人;并且每种身份都有三种权限:r、w、x;还知道可...

  • linux-权限管理

    一、文件权限 对于文件:r(读)文本文件,可以看文件内容;w(写)文本文件,可以修改文件内容;x(执行)程序(二进...

  • linux-权限管理

    chmod 修改文件、目录权限 查看文件 ls -ldrwx------+ 9 user1 group1 ...

网友评论

      本文标题:Linux-文件权限

      本文链接:https://www.haomeiwen.com/subject/ofnovctx.html