Linux权限引发的"血案"

本文深入探讨了Linux系统中的权限机制与进程权限管理,包括文件和目录的rwx属性,特殊文件权限如SUID/SGID,以及Linux进程权限的来源与应用。同时,文章还介绍了Linux的重要API exec及其在文件操作中的作用。
摘要由CSDN通过智能技术生成

前言

使用Linux的时候是否有过权限不足的烦恼?rwx对于文件和目录到底有什么作用?Linux又是如何确定进程是对于文件的访问权限的?本文将解决上面的疑问,有了上述基础,再介绍Linux的重要API–exec

权限对于linux的重要性

  1. 解读rwx

文件:
r(read):可以读取文件的内容
w(write):可以编辑/修改文件内容(不包含删除)
x(execute):可执行权限
目录:
r:表示具有读取目录结构列表的权限,所以如果具备r权限,表示可以查询该目录下文件名数据,比如执行ls可以将目录内容列表显出出来,但是如果没有x权限,那么详细信息还是读取到,只会以???显示
w:写权限对于目录意义重大,表示具备修改目录结构的能力,如:

  • 建立新的文件与目录
  • 删除已存在的文件与目录(不论该文件的权限如何)
  • 将已存的文件和目录进行更名
  • 修改该目录内的文件/目录位置
    x:目录的执行权限代表能否进入该目录,比如cd指令是否能成功就看是否具备x权限了。

举例:
这里写图片描述

2.特殊文件权限:SUID/SGID
当s这个标志出现在文件拥有者的x权限上时,例如/usr/bin/passwd这个档案的权限是-rwsr-xr-x,此时就被成为Set UID,那么SUID的权限对于一个文件的特殊功能是什么呢,如下:

  • SUID权限仅对二进制程序有效
  • 执行者对于该程序需要具有x的可执行权限
  • 本权限仅在执行该程序的过程中有效
  • 执行者将具有该程序拥有者的权限
    举例:
    这里写图片描述
    示意图如下:
    这里写图片描述

当s标志出现在文件拥有者的x位置时为SUID,那么s出现在群主的x位置时称为SGID,与SUID不同的是,SGID可以针对文件或者目录设定。
对于文件来说,SGID有如下功能:

  • SGID对二进制程序有用
  • 程序执行着对于该程序来说需要具备x权限
  • 执行者在执行的过程中将会获得该程序群组的支持

对于目录来说,当目录设定了SGID权限以后,他将具有如下功能:

  • 用户如果对于目录具有rx权限,该用户能够进入此目录
  • 用户在此目录下的有效群组将变成该目录的群组
    2.账号和权限
    Linux系统上面的用户如果需要登入主机取得shell环境来工作,他需要如何进行呢?需要利用tty1-tty7终端输入账号和密码,得到账号和密码以后系统如何处理呢?过程如下:
  • 先在/etc/passwd里面查看是否有输入的账号?没有退出,如果有的话就将该账号对应的UID和GID(在/etc/group中)读出来,另外账号的主目录与shell设定也一并读出;
  • 下面则是核对密码,linux进入/etc/shadow里面找到对应的账号与UID,然后核对密码

/etc/passwd文件结构分析:
这个文件的结构是这样的,每一行代表一个账号,有几行就代表有几个账号在你的系统中。每一行使用“:”分割,如下:
账号:密码:UID:GID:用户信息说明/主目录/shell
这里写图片描述

/etc/shadow文件结构
每行的结构如下:
账号名称/密码/最近更改密码的日期/密码不可被更动的天数/密码需要重新更动的天数/密码需要变更期限前的警告天数/….

3.Linux进程的权限
在Linux系统中,创建进程的时候内核会创建一个进程描述符,描述符中的uid,gid等字段会规定进程的权限。每个二进制可执行文件都有三组权限(user/group/others),所以不同的使用者身份执行这个程序时,系统给予的权限也不相同。举例来说,我们可以touch一个空档案,当root执行这个touch指令时,他取得的是UID/GID=0/0权限,而当普通用户tom(UID/GID=501/501)执行这个touch时,他的权限就跟root不同。
这里写图片描述

举个更为常见的例子,我们使用linux操作系统的时候,首先要做的就是登陆操作,然后取得shell,我们的shell是bash,即/bin/bash,那么同时间很多人登陆执行的都是/bin/bash,不过每个人取得的权限是不同的

在Linux内核中有个credential(信任状)的概念,即存储在task_struct中的uid等信息,当某个进程试图访问一个文件时,VFS总是根据文件的拥有者和进程的信任状所建立的许可权检查访问的合法性。
这里写图片描述

exec实现后面再补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值