能力(Capabilities)

本文介绍了Symbian9平台的安全性机制及其对开发者的影响。为了保护系统的安全,Symbian引入了“能力”概念,即应用程序需要获得特定权限才能访问敏感资源和服务。文章详细解释了三种主要的能力类型:TCB、USER和系统能力,并提供了如何在MMP文件中配置这些能力的方法。
从Symbian 9开始平台安全性的问题被引入,这意味着,硬件 设备只能有限的访问安全的数据和 软件

因此在 s60第三版和UIQ3的设备上,开发者开发的 程序需要一些授权才能够访问平台。这种授权被称之为能力。这些能力被定义为授权 应用,因为某个API被限制使用,除非能力(capability )授予该程序使用这些属性。

这里有3种主要的能力:
1. TCB(底层 处理信任)
2. USER(用户层)
3. 系统能力

TCB : "底层处理信任(Trusted computing Base )"

它由一些底层的系统属性组成,像文件系统中的目录。这些能力(Capabilities)是不授予第三方应用程序的,他们只被授权给平台的制造商。

TCB包括 操作系统的核心,文件服务和存储器 管理单元等等。

USER(用户层)

网络服务:打电话、发短信、访问 远程服务。

本地服务:这个能力包括:通过USB、红外、蓝牙设备发送和接受信息

读取用户数据:授权读取用户信息。系统服务和应用程序 引擎就是这个级别。

写用户数据:授权写用户数据,同读取的服务一致。

区域:授权访问 手机的某个区域。

用户环境:授权访问关于用户和环境的保密信息

系统能力(System Cabability)

These API’s under these capbilities has access to sensitive parts of the machine which due programatical errors may corrupt the phone’s Software and hardware. So these capabilities are granted only after symbian signed which after testing is done.

ALLFiles,SwEvent,WriteDeviceData,PowerMgmt,Drm, etc.

如何赋予能力

可以在MMP文件中,使用CAPABILITY 关键字来赋予能力
 
CODE:
CAPABILITY  ReadUserData   DiskAdmin

或者
 
CODE:
CAPABILITY   ALL -ALLFiles  Drm
//除了ALLFiles和Drm的能力

在项目中,我们可以通过相应的API可以使用相关的能力,例如:DataFileSave() 可以调用WriteDeviceData WriteUserData能力

译文地址: http://www.symbianx.cn/viewthread.php?tid=58&extra=page%3D1
原文地址: http://www.newlc.com/Capabilites.html
 
<think>好的,我现在需要解释一下Linux的能力Capabilities)。首先,我得回忆一下自己学过的相关知识,确保准确无误。Linux的能力机制是用来细分传统超级用户的权限,对吧?这样普通进程不需要拥有完全的root权限,也能执行特定的特权操作。这样可以提高系统的安全性,减少潜在的风险。 那具体有哪些能力呢?我记得能力被划分为不同的类别,比如关于文件系统的、进程管理的、网络相关的等等。可能需要列举一些常见的能力并说明它们的作用。例如,CAP_CHOWN允许改变文件的属主,CAP_NET_BIND_SERVICE允许绑定低端口号。 另外,用户可能会关心如何查看和管理能力,比如使用getcap和setcap命令,或者通过编程接口来操作。还有,能力可以分成有效集、许可集、继承集等,这部分可能需要解释清楚,避免混淆。 还要注意不要遗漏一些重要的点,比如能力如何继承,如何通过文件系统属性赋予可执行文件特定的能力。还有,能力的边界情况,比如当进程放弃某些能力后如何影响后续操作。可能还需要提到一些实际应用的例子,帮助用户理解。 需要确认自己记得的所有能力名称和描述是否正确,避免错误。例如,CAP_SYS_ADMIN是一个比较广泛的能力,它提供了大量的系统管理权限,类似于小范围的root。而CAP_KILL允许发送信号给不属于自己的进程,这些都需要准确描述。 还有,可能用户会想知道为什么需要能力机制,可以简单对比一下传统的setuid方法的不足,比如过于粗放的权限授予,容易导致安全漏洞。而能力机制则更细粒度,更安全。 最后,整理结构,分点说明,确保逻辑清晰,由浅入深,帮助用户逐步理解。可能需要先介绍基本概念,再列举主要能力,然后说明管理方法,最后实际应用例子。检查是否有遗漏的重要能力或者错误的信息,确保回答正确可靠。</think>Linux 能力Capabilities)是一种细粒度的权限控制机制,旨在将传统超级用户(root)的权限拆分为独立的能力单元。通过赋予进程或文件特定的能力,可减少滥用完整 root 权限带来的安全风险。以下是关键内容: --- ### **一、能力机制的核心作用** 1. **替代传统 root 权限** 传统 `setuid` 程序需要完整 root 权限,而能力机制允许仅授予必要的特权。 2. **最小权限原则** 限制进程仅拥有完成任务所需的最小能力,降低攻击面。 --- ### **二、常见能力分类与示例** Linux 定义了约 40 种能力(可通过 `man capabilities` 查看完整列表),以下是典型示例: | **能力名称** | **描述** | |----------------------|-------------------------------------------------------------------------| | `CAP_CHOWN` | 允许修改文件所有者/组(如 `chown` 命令) | | `CAP_DAC_OVERRIDE` | 绕过文件读/写/执行的权限检查(如访问其他用户文件) | | `CAP_KILL` | 允许向非属主进程发送信号(如 `kill`) | | `CAP_NET_BIND_SERVICE` | 绑定低于 1024 的端口(如 Web 服务器监听 80 端口) | | `CAP_SYS_ADMIN` | 执行系统管理操作(挂载文件系统、配置磁盘配额等) | | `CAP_SYS_TIME` | 修改系统时间 | | `CAP_NET_RAW` | 使用 RAW/PACKET 套接字(如 `ping` 或网络嗅探工具) | --- ### **三、能力的三种集合** 每个进程的能力状态由以下集合定义: 1. **Effective**:当前实际生效的能力。 2. **Permitted**:进程可启用的能力上限。 3. **Inheritable**:子进程可继承的能力。 --- ### **四、管理能力的方法** #### 1. **命令行工具** - **查看文件能力** ```bash getcap /path/to/file ``` - **设置文件能力** ```bash setcap cap_net_bind_service+ep /path/to/program # 允许程序绑定低端口 ``` #### 2. **编程接口** 使用 `libcap` 库的函数(如 `cap_set_proc()`)动态调整进程能力。 #### 3. **系统调用** 通过 `prctl()` 或 `capset()`/`capget()` 修改能力集合。 --- ### **五、实际应用示例** - **赋予 `ping` 无需 root 的权限** ```bash setcap cap_net_raw+ep /bin/ping # 允许普通用户使用 ping ``` - **限制容器权限** 在 Docker 中通过 `--cap-drop` 和 `--cap-add` 控制容器能力: ```bash docker run --cap-drop=ALL --cap-add=CAP_NET_BIND_SERVICE my_image ``` --- ### **六、注意事项** 1. **谨慎授予高危能力** 如 `CAP_SYS_ADMIN` 和 `CAP_DAC_OVERRIDE` 可能导致系统暴露于风险。 2. **能力继承规则** 子进程的能力由其父进程的 Inheritable 集合和文件属性共同决定。 3. **兼容性检查** 部分旧程序可能依赖完整 root 权限,需测试后再替换为能力授权。 --- 通过合理使用能力机制,可在提升安全性的同时保持功能灵活性。建议结合场景需求,逐步替换传统 root 权限的使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值