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

简介: 前言之所以会说到这几个特殊权限,是因为fastboot这个命令好像有点抽风,给人的感觉就是有时能用有时不能用,执行fastboot devices的错误提示:no permissions为了找到问题的原因,就思考了一下。

前言

之所以会说到这几个特殊权限,是因为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才可以删除。


如何设置这些特殊权限

chmod的时候如果用数字表示,则比正常的3组数字多了一组,多的一组的含义具体如下:

4表示SUID
2表示SGID
1表示SBIT

来个简单的例子:

chmod 4777 test1
上面的命令就是将test1加上了SUID权限,其他组合大家可以自由发挥。


另外如果chmod用字母的+和-来表示时要注意一下,如果因为没有x权限,直接+s或者+t,会显示为大写的S或T,出现这种情况不用担心,直接再给它+x权限就行了。

用字母表示时如果一定要设置正确的特殊权限可以参考以下几个简单的例子:

chmod u+x+s xxxx
chmod g+x+s xxxx
chmod o+x+t xxxx


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

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


目录
相关文章
|
Linux Android开发
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
490 0
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
3870 77
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
Ubuntu Linux Android开发
termux+anlinux+Rvnc viewer来使安卓手机(平板)变成linux服务器
本文介绍了如何在Android设备上安装Termux和AnLinux,并通过这些工具运行Ubuntu系统和桌面环境。
4216 3
termux+anlinux+Rvnc viewer来使安卓手机(平板)变成linux服务器
|
Java Linux Android开发
深入探索Android系统架构:从Linux内核到应用层
本文将带领读者深入了解Android操作系统的复杂架构,从其基于Linux的内核到丰富多彩的应用层。我们将探讨Android的各个关键组件,包括硬件抽象层(HAL)、运行时环境、以及核心库等,揭示它们如何协同工作以支持广泛的设备和应用。通过本文,您将对Android系统的工作原理有一个全面的认识,理解其如何平衡开放性与安全性,以及如何在多样化的设备上提供一致的用户体验。
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
789 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
安全 Linux
在Linux中,suid、sgid和sticky bit这几个术语意思?
在Linux中,suid、sgid和sticky bit这几个术语意思?
|
Linux 应用服务中间件 nginx
Linux下权限设置之suid、sgid、sticky
Linux下权限设置之suid、sgid、sticky
|
安全 Linux Android开发
FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
该文介绍了如何在Linux服务器上交叉编译Android的FFmpeg库以支持HTTPS视频播放。首先,从GitHub下载openssl源码,解压后通过编译脚本`build_openssl.sh`生成64位静态库。接着,更新环境变量加载openssl,并编辑FFmpeg配置脚本`config_ffmpeg_openssl.sh`启用openssl支持。然后,编译安装FFmpeg。最后,将编译好的库文件导入App工程的相应目录,修改视频链接为HTTPS,App即可播放HTTPS在线视频。
576 3
FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
|
存储 Linux 开发工具
Linux手动升级替换Android Studio
【6月更文挑战第22天】
631 8