由Android的fastboot no permissions而引出的Linux特殊权限管理之:SUID、SGID、SBIT

前言

之所以会说到这几个特殊权限,是因为fastboot这个命令好像有点抽风,给人的感觉就是有时能用有时不能用,执行fastboot devices的错误提示

no permissions

为了找到问题的原因,就思考了一下。

这种问题一般主要发生在以下2种场景下:

1、复制并使用了新的fastboot可执行文件

2、改变了fastboot可执行文件的环境变量

为什么以上2种场景会产生这样的错误?

which fastboot
ll fastboot

执行这两条命令之后就可见端倪,原来由于复制或者使用了别人复制的fastboot,导致fastboot所属的用户和群组发生了改变,从而让SUID和SGID失效,因为原来fastboot所属的用户和群组都是root。

接下来我们就简单说了解一下SUID和SGID的失效导致no permissions背后的知识点。

SUID

Set UID,它会出现在文件拥有者权限的执行位上,只对二进制程序有效,执行者对于程序需要有x权限,在程序运行过程中,执行者拥有程序拥有者的权限。

例如:普通用户执行fastboot和passwd命令。

这里再多说一句,很多Android上的root工具就是通过一些漏洞(比如缓冲区溢出等)来攻击一些带有SUID或SGID权限,并且所属的用户或用户组是root的二进制程序来临时获取root权限,然后执行一段事先编译好的恶意目标平台代码来达到root的目的。

SGID

Set GID,它出现在文件所属组权限的执行位上面,对于文件和目录都有效,具体作用如下:

1、对于文件

对于二进制程序有用,程序执行者要有x权限,执行者在执行过程中会获得该程序用户组的权限(相当于临时加入了程序的用户组

2、对于目录

用户对此目录有rx权限可以进入目录,用户进入此目录后,有效用户组会变成该目录的用户组,若用户在此目录有wx权限,则用户创建的文件的用户组与该目录用户组相同。

SBIT

Sticky BIT,它出现在其他用户权限的执行位上,只对目录有效,当用户对目录拥有wx权限时,用户在该目录创建的文件或目录,只有用户自己和root才可以删除。

一个小问题背后也会隐藏一些比较重要的知识点,善于发现和总结,总能有一些收获。

最后,将此问题记录下来,希望能够帮到后续遇到类似问题的同学。

时间: 2024-08-29 08:00:09

由Android的fastboot no permissions而引出的Linux特殊权限管理之:SUID、SGID、SBIT的相关文章

关于Android 权限管理的几点认识

作为Android的应用开发者,对于android的权限机制总是感觉很奇怪,为什么要有权限这个东西?为什么要在AndroidManifest里面写uses-permission 这样东西?以前一直困惑,但是用着没什么问题也就认了,没去好好深究过,这回就来好好看下吧. 原来在设备上有这么个文件/system/etc/permissions/platform.xml 打开来看 <permission name="android.permission.INTERNET" > &l

Android 权限管理(持续整理)

1. Android 6.0之后,APP直接安卓,运行时询问用户授予相关权限,此时系统弹出一个对话框,(这个对话框不能由开发者定制) 同时用户也可以在手机的"设置"中对于某个App进行权限管理 注意:这个对话框不是系统自动弹出,而是开发者在调用必须用户授权的方法时,在调用之前检查(如果有授权直接调用)并请求用户权限,否则可能因没有授权而直接程序崩溃 重点:在某一个需要用户权限的地方检查并请求用户权限,否则程序崩溃 2. 权限分类 是否涉及用户隐私,权限分为两类:第一类不涉及隐私,在Ma

Android 6.0 运行时权限管理最佳实践

Android 6.0 运行时权限管理最佳实践 版权声明:转载必须注明本文转自严振杰的博客: http://blog.yanzhenjie.com 这是一篇迟来的博客,Android M已经发布一年多了(6.0的变化),在Android M中权限系统被重新设计,发生了颠覆性的变化,很多人把握不好这个变化,一是对这个权限策略和套路还没有摸透,二是没有一个很好的实践来支撑,在我的技术开发群里很多人问我关于权限的问题,往往我都没有直接回答,因为这个问题不是一两句说的清楚的,这几点是今天我写这篇博客的原

Android获取设备隐私 忽略6.0权限管理

1.前言 (1).由于MIUI等部分国产定制系统也有权限管理,没有相关api,故无法判断用户是否允许获取联系人等隐私.在Android 6.0之后,新增权限管理可以通过官方api判断用户的运行状态: (2).我们指定targetSdkVersion为23或者之后我们还需要在运行时请求这些所需的权限.这很重要,因为已经出现了很多开发者把targetSdkVersion飙到了最新,然后发现自己的app疯狂的崩溃,这是由于他们没有实现执行运行时权限请求的代码.当你已经把一个targeting API

Android 6.0 - 动态权限管理的解决方案(转)

转自:http://www.cnblogs.com/dubo-/p/6018262.html Android 6.0 - 动态权限管理的解决方案 转载请标注 Android 6.0版本(Api 23)推出了很多新的特性, 大幅提升了用户体验, 同时也为程序员带来新的负担. 动态权限管理就是这样, 一方面让用户更加容易的控制自己的隐私, 一方面需要重新适配应用权限. 时代总是不断发展, 程序总是以人为本, 让我们为应用添加动态权限管理吧! 这里提供了一个非常不错的解决方案, 提供源码, 项目可以直

Android 6.0 运行时权限管理

android 6.0 对权限进行了严格的管理 新的权限策略讲权限分为两类,第一类是不涉及用户隐私的,只需要在Manifest中声明即可,比如网络.蓝牙.NFC等:第二类是涉及到用户隐私信息的,需要用户授权后才可使用,比如SD卡读写.联系人.短信读写等. Normal Permissions 此类权限都是正常保护的权限,只需要在AndroidManifest.xml中简单声明这些权限即可,安装即授权,不需要每次使用时都检查权限,而且用户不能取消以上授权,除非用户卸载App. ACCESS_LOC

项目中处理android 6.0权限管理问题

android 6.0对于权限管理比较收紧,因此在适配android 6.0的时候就很有必要考虑一些权限管理的问题. 如果你没适配6.0的设备并且权限没给的话,就会出现类似如下的问题: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:xxxxxxxxxxx cmp=com.android.server.telecom/.componen

Android开发——Android 6.0权限管理机制详解

0.前言 最近在研究所实习,我负责维护Android手机取证项目的Android客户端,有客户反映我们的APP在Android6.0无响应,经过调试发现SD卡读写权限权限被拒绝.但明明是在AndroidManifest.xml文件中声明过的.查了很多资料才知道Android6.0的很多权限申请机制发生了改变,可以说是Android6.0在安全机制上更进了一步吧,因此写下这篇文章以记录. 注:在运行程序时,对于某些权限向用户询问申请(后面会详细地讲)时因为我们知道客户在我们APP中不会点"拒绝&q

Android拍照,相册选择图片以及Android6.0权限管理

概述 在android开发过程中,拍照或者从相册中选择图片是很常见的功能.下面要说得这个案例比较简单,用户点击按钮选择拍照或者打开相册选择图片,然后将选中的图片显示在手机上.android6.0后,推出了动态权限管理.以往我们将涉及到的权限全部写在清单文件中,只要用户安装了该程序,程序在运行过程中都会获得相应权限.android6.0后,对于一些特别敏感的权限,开发者必须在程序中进行声明.拍照和从相册选择图片都是涉及到用户隐私的敏感权限,必须在程序中进行声明. 大概的流程 创建布局文件,这里不多