序言

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目录权限为rws,Linux-文件权限相关推荐

  1. Linux常用命令(本篇包括,Linux目录结构介绍、Linux Shell介绍、9个常见命令介绍、文件的概念、文件的操作(20个)、目录的操作、文件和目录的权限、文件压缩及解压缩)

    Linux常用命令(本篇包括,Linux目录结构介绍.Linux Shell介绍.9个常见命令介绍.文件的概念.文件的操作(20个).目录的操作.文件和目录的权限.文件压缩及解压缩)         ...

  2. Linux基础(用户身份和文件权限)

    用户身份与能力 Linux是一个多用户.多任务的操作系统,具有很好的稳定性与安全性,在幕后保障Linux系统安全则是一系列复杂的配置工作. Linux系统的管理员之所以是root,并不是因为它的名字叫 ...

  3. linux限制组访问权限,linux用户和组管理以及文件权限访问控制ACL策略

    01.通配符 文件通配符可以用来匹配符合条件的多个文件,方便批量管理文件. 通配符采用特定的符号,表示特定的含义,此符号称为元 meta 字符. 常见的通配符如下: * 匹配零个或多个字符,但不匹配 ...

  4. linux chmod命令数字,菜鸟学Linux命令:chmod命令和数字文件权限

    chmod是一条在Unix系统中用于控制用户对文件的权限的命令(change mode单词前缀的组合)和函数. 只有文件所有者和超级用户可以修改文件或目录的权限.可以使用绝对模式,符号模式指定文件的权 ...

  5. 蓝桥云课linux入门3:用户及文件权限管理

    内容转自蓝桥云课 目录 1.内容 2.Linux用户管理 2.1查看用户 2.2创建用户 2.3用户组 将其它用户加入 sudo 用户组 2.4删除用户和用户组 3.Linux文件权限 3.1查看文件 ...

  6. Linux目录结构,命令,文件类型学习

    2019独角兽企业重金招聘Python工程师标准>>> [toc] Linux目录结构,命令,文件类型学习 一. 系统目录结构 简述 对于目录,我们大致能够理解,像书本学的章节,每个 ...

  7. 【linux 】添加开机启动项的方法|Linux目录结构和存放哪些文件

    目录 linux 添加开机启动项的方法 编辑文件 /etc/rc.local 在/etc/init.d目录下添加自启动脚本 每次登录自动执行 通过chkconfig命令设置 把脚本注册为系统服务 在c ...

  8. java 获取文件权限_Java中的文件权限,检查权限和更改权限 - Break易站

    Java提供了许多方法调用来检查和更改文件的权限,例如可以将只读文件更改为具有写入权限.当用户想要限制文件允许的操作时,需要更改文件权限.例如,文件权限可以从写入更改为只读,因为用户不再想要编辑文件. ...

  9. 鸟哥Linux私房菜基础学习篇 第二部分 Linux 文件、目录与磁盘格式_Linux文件权限与 目录配置_Linux文件与目录管理...

    2019独角兽企业重金招聘Python工程师标准>>> 1.相对路径相对某目录比较灵活方便(如安软件时候指定目录),绝对路径一般不会因为环境变化而产生错误. 2.目录变化时的切换 - ...

  10. 【Linux】Linux权限(一)文件权限和目录权限

    Linux权限 1.Linux权限的概念 2.Linux的用户分类 3.Linux的文件类型 3.1如何看待Linux下的文件后缀 4.Linux的文件权限 5.Linux下切换用户指令 6.Linu ...

最新文章

  1. 数字字符串转化为时间字符串
  2. while循环,递进,linux按行读入并按数组存储
  3. IDEA整合 ssm的详细demo(使用maven)
  4. poj-青蛙的约会(扩展欧几里得)nyoj-小柯的约会
  5. Codeforces Round #636 (Div. 3)(ABC)
  6. .NET+PostgreSQL实践与避坑指南
  7. Unity3d--美工建模须知【转http://blog.csdn.net/tanmengwen/article/details/8735889】
  8. LeetCode38.报数
  9. 你真的了解 Load Balance 嘛
  10. 程序员的进阶课-架构师之路(6)-链表
  11. 【NLP之情感分析】华为云NLP算法专家:全面解读文本情感分析任务
  12. c语言中按键程序设计,c语言获得键盘的按键
  13. anki 神级插件 fastWQ 提取本地朗文音频
  14. 计算机怎么链接网络打印机,连接网络打印机,教您如何使用网络连接打印机
  15. springboot+redis主从复制、哨兵、读写分离
  16. 二分图匹配-匈牙利算法, 最小路径覆盖
  17. Java判断上海自来水来自海上_JavaAPI
  18. 【推荐】万物兴歇——衰老与寿命的演化
  19. 小程序图片长按识别功能的实现
  20. Win2003系统安装SQL Sever2000后1433端口未开放的解释

热门文章

  1. UE4 UI界面的层级切换
  2. 电感的工作原理与作用
  3. 微信小程序接入腾讯云IM即时通讯(发送消息开发步骤)
  4. SAP中计划日历计算规则的理解
  5. python日历打印算法
  6. linux df -h显示空间信息不正确
  7. java实现与图灵机器人聊天_调用图灵机器人API实现简单聊天
  8. 动态IP和静态IP地址
  9. html背景色不透明度,css怎么设置颜色不透明度?
  10. 基于PHP使用thinkphp开发的教学管理系统