linux新增用户无法建立socket问题

这里我们先引用一篇资料来自 android攻防权威指南

安全边界和安全策略

  安全边界,有时也会称为信任边界,是系统中分隔不同信任级别的特殊区域。一个最直接的例子就是内核空间与用户空间之间的边界。Android操作系统应用了两套独立但又相互配合的权限模型。在底层,Linux内核使用用户和用户组来实施权限控制,这套权限模型是从Linux继承过来的,用于对文件系统实体进行访问控制,也可以对其他Android特定资源进行控制。以DalvikVM和Android框架形式存在的Android运行时实施了第二套权限模型。这套模型在用户安装应用时是向用户公开的,定义了应用拥有的权限,从而限制Android应用的能力。  

  Android从其根基Linux继承了已经深入人心的类Unix进程隔离机制与最小权限原则。具体而言,进程以隔离的用户环境运行,不能相互干扰,比如发送信号或者访问其他进程的内存空间。因此,Android沙箱的核心机制基于以下几个概念:标准的Linux进程隔离、大多数进程拥有唯一的用户ID(UID),以及严格限制文件系统权限。

  Android系统沿用了Linux的UID/GID(用户组ID)权限模型,但并没有使用传统的passwd和group文件来存储用户与用户组的认证凭据,作为替代,Android定义了从名称到独特标识符Android ID(AID)的映射表。初始的AID映射表包含了一些与特权用户及系统关键用户(如system用户/用户组)对应的静态保留条目。Android还保留了一段AID范围,用于提供原生应用的UID。

#define AID_ROOT         0 /*传统的unix跟用户*/

#define AID_SYSTEM    1000 /*系统服务器*/

#define AID_RADIO     1001 /*通话功能子系统,RIL*/
#define AID_BLUETOOTH 1002 /*蓝牙子系统*/
...
#define AID_SHELL     2000 /*adb shell与debug shell用户*/
#define AID_CACHE     2001 /*缓存访问*/
#define AID_DIAG      2002 /*访问诊断资源*/

/*编号3000系列只用于辅助用户组们,表示出了内核所支持的Android权能*/
#define AID_NET_BT_ADMIN 3001 /*蓝牙:创建套接字*/
#define AID_NET_BT       3002 /*蓝牙:创建sco、rfcomm或l2cap套接字*/
#define AID_INET         3003 /*能够创建AF_INET和AF_INET6套接字*/
#define AID_NET_RAW      3004 /*能够创建原始的INET套接字*/
...
#define AID_APP            10000 /*第一个应用用户*/

#define AID_ISOLATED_START 99000 /*完全隔绝的沙箱进程中UID的开始编号 */
#define AID_ISOLATED_END   99999 /*完全隔绝的沙箱进程中UID的末尾编号*/
#define AID_USER          100000 /*每一用户的UID编号范围偏移*/
AID_INET用户组允许用户打开AF_INETAF_INET6套接字。

平常一直再root权限下使用自己的嵌入式设备,由于工作需要移植了一个mqtt的服务端程序(mosquitto),而这个程序需要以mosquitto用户使用,没有办法便自己增添了一个新用户,其竟然没有权限建立socket期间想到了android应用的socket权限,终于找到了这篇资料。


时间: 2024-10-21 13:14:46

linux新增用户无法建立socket问题的相关文章

linux新增用户

1.使用useradd 用户名命令新增用户 2.使用passwd 用户名命令设置用户密码 3.用户新增成功后,同时会影响下面的文件: ①/etc/passwd文件会增加该用户一行 执行cat /etc/passwd命令 各字段以冒号隔开,依次为用户名,密码占位符,用户id,用户组id,描述信息,家目录,可执行命令(/bin/base代表可登录linux系统,/sbin/nologin代表不可登录linux系统) ②./etc/shadow文件新增该用户一行 执行cat /etc/shadow命令

linux新增用户和删除用户

新增用户 新增用户命令:useradd 参数: 参数 说明 -u 指定UID,也就是自定义UID -g 知道GID,也就是初始化用户组,/etc/passwd文件中的第四个字段. -G 后面接用户组的名字,也就是指定其他用户组.给用户指定要加入的非初始化用户组. -M 强制!不要创建用户主文件夹.(系统有默认值) -m 强制!要创建用户主文件夹.(一般默认账号) -c 用户的说明,/etc/passwd的第五个字段. -d 指定用户的主文件夹,一定要写绝对路径 -r 创建一个系统账号,这个账号U

Linux 下新增用户的流程

一: 新增用户 1.添加新的用户账号使用useradd命令,其语法如下: 代码:useradd 选项 用户名其中各选项含义如下: 代码:-c comment 指定一段注释性描述.-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录.-g 用户组 指定用户所属的用户组.-G 用户组,用户组 指定用户所属的附加组.-s Shell文件 指定用户的登录Shell.-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号. 用户名 指定新账号的登录名

linux 添加用户、权限

linux 添加用户.权限 # useradd –d /usr/sam -m sam 此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录). 假设当前用户是sam,则下面的命令修改该用户自己的口令: # passwd Old password:****** New password:******* Re-enter new password:******* 如果是超级用户,可以用下列形式指定任何用户的口令: #

Linux之用户管理--初级上

管理用户命令汇总 命令 注释说明(特殊颜色的必须掌握) useradd增 同adduser命令,执行此命令可在系统中添加用户.(更改4个用户文件) userdel删 执行此命令可删除用户及相关用户的配置或文件(更改4个用户文件) passwd 执行此命令可为用户设置或修改密码.更改/etc/shadow文件 chage 修改用户密码属性.管理/etc/shadow文件 usermod改 修改用户信息的命令,可以通过usermod来修改登录名,用户的家目录等等 id查 查看用户的UID,GID及所

Linux统系统开发11 Socket API编程2 多进程 多线程 高并发处理

[本文谢绝转载原文来自http://990487026.blog.51cto.com] <纲要> Linux统系统开发11 Socket API编程2 多进程 多线程 高并发处理 UDP服务器 客户端最小模型,处理字符转大写 TCP 多进程并发服务器模型,为每个客户端开启一个进程: TCP 多线程服务器模型,使用wrap函数封装 作业: ---------------------------------------------------- UDP服务器 客户端最小模型,处理字符转大写 [em

一起来学linux:用户与用户组

linux的文件属性以及管理方法和windows是完全不同的,所以学习linux首先来了解下用户以及文件权限是怎么回事 p { margin-bottom: 0.25cm; line-height: 120% } linux中权限3个部分组成,用户,用户组,other.就好比一家人,用户是各自的房间,有隐私.不准其他人查看.用户组好比是客厅,属于公共空间,大家都可以用.other就好比是外来的客人,对用户以及用户组都没有访问权限.只有用户同意才行. 通过ls -al来查看文件的属性,如下图: 其

Linux统系统开发12 Socket API编程3 TCP状态转换 多路IO高并发select poll epoll udp组播 线程池

[本文谢绝转载原文来自http://990487026.blog.51cto.com] Linux统系统开发12 Socket API编程3 TCP状态转换 多路IO高并发select  poll  epoll udp组播 线程池 TCP 11种状态理解: 1,客户端正常发起关闭请求 2,客户端与服务端同时发起关闭请求 3,FIN_WAIT1直接转变TIME_WAIT 4,客户端接收来自服务器的关闭连接请求 多路IO转接服务器: select模型 poll模型 epoll模型 udp组播模型 线

Linux下解决高并发socket最大连接数限制,tcp默认1024个连接

linux作为服务器系统,当socket运行高并发TCP程序时,通常会出现连接建立到一定个数后不能再建立连接的情况 本人在工作时,测试高并发tcp程序(GPS服务器端程序),多次测试,发现每次连接建立到1000左右时,再也不能建立tcp连接,最总上网搜索,linux系统默认ulimit为1024个访问 用户最多可开启的程序数目.一般一个端口的最高连接为2的16次方65535 第一步,修改/etc/security/limits.conf文件,在文件中添加如下行(*指代系统用户名),修改Linux