QNX 权限

本篇简述一下关于qnx中权限基础知识,以便快速上手查看权限。

QNX 进程管理

QNX中,微内核和进程管理器一起组成procnto模块,在系统运行时是必需的。
进程管理器可以创建多个POSIX进程。

基本语法

类型定义:type

type xxx_t

通道连接: channel connect

channel connect 用于在xxx_t 类型进程与yyy_t 的通道进行交互时,授予xxx_t 类型进程的权限

allow xxx_t yyy_t : channel connect

通道继承:attach

通道继承以获取其他类型通道的内容

type xxx_t
type yyy_t
allow attach xxx_t /dev/...
allow yyy_t xxx_t : channel connect

上述中,定义了xxx_tyyy_t 两个类型。xxx_t 通过attach关键字拥有*/dev/*下所有文件的权限。
通过allow yyy_t xxx_t : channel connect 可以让yyy_t 在不改变其类型的情况下获得xxx_t/dev/* 下所有文件的权限

强制更改类型:default_spawn_type

在QNX secpol中,可以将xxx_t 的类型强制更改为yyy_t 的类型,使用方法如下

default_spawn_type xxx_t yyy_t;

settypeid 和gain_priv

settypeid 切换类型导致带来原来本身类型所不具有的权限,需要通过gain_priv 关键词来添加此能力。
栗子:
当类型xxx_t 中本身不包括/拥有pathspace 的权限,yyy_t 类型包含。此时又使用settypeid 关键词切换到了yyy_t 的类型,这时候就需要使用gain_priv来对xxx_t 赋予pathspace的权限了。
如下所示:

allow xxx_t self:ability {
    settypeid:yyy_t
    channel_connect:yyy_t
    gain_priv:pathspace
};

派生类型:derive_type

暂时还在了解中,不过也很重要,在新版本里面

default_rules

能力关键字:ability

带有 ability 关键字的规则为类型授予能力。
栗子

allow xxx_t self:ability {
    mem_phys:0x1200000-0x24000000
    setuid:4,6,23
    able_create
};

xxx_t 类型具有 内存映射能力/切换uid能力/动态创建能力。
一些常见的能力可以参见下表

一些常见ability

abilitydescribtionvalue
io申请I/O 特权0/1
rlimit
memphy内存映射可以是连续/非连续的一段地址空间
setuid设置userID的值
setgid设置groupID的值
able_create动态创建的能力
spawn创建新进程
pathspace

举个栗子

allow xxx_service_t self:ability {
	setuid:ROOT
	setgid:ROOT
	io:0
	#...
};

调试手法

在遇到secpol权限问题时,主要的思路就是见招拆招。
通过cat /dev/secpolgenerate/erros 根据提示添加对应的权限。
当然,QNX的版本不同,有些权限的提示,直接添加可能会导致其他问题。这种情况就需要具体分析,看如何通过其他方法添加或者怎么规避这种获取

tips: 关于语法和权限问题,后续慢慢补充到此篇中
参考链接:https://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.security.system/topic/manual/abilities.html
https://www.jianshu.com/p/2be8a12f8cce

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值