android 限制adb的访问目录

最近有个特殊的要求,engneer版本既要可以adb访问,且adb有的目录不能访问 如/data/目录。

用传统的chmod chgrp等无法满足客户需求,只能修改内核文件系统部分。 添加函数,检查路径的合法性

主要是修改内核函数do_path_lookup (namei.c):

 

static  int is_valid_path(char * pathname, char * pname)
{
     int plength = strlen(pname);
     int pathlength = strlen(pathname);
     int errorno=-1;
     int i=0; 
     char buf[6][50]={"","/","./","../","../../","../../../"};

     if (pathlength >  plength)
     {
         printk(" pathlength >  pname\n"); 
         return 0;
     }
     for (i=0;i<6;i++)
     {       
            printk("i is %d \n",i);
            strcat(buf[i],pathname);
            char * buftemp=buf[i];
	    printk("shit buftemp is %s \n",buftemp);
            int buftemplength=strlen(buftemp);
	    if ( buftemplength !=  plength)
           {
                 continue;
           }
            if(!strcmp(buftemp,pname))
            {
                  return  errorno;
            }
     }
     return 0;
}
/* Returns 0 and nd will be valid on success; Retuns error, otherwise. */
static int do_path_lookup(int dfd, const char *name,
				unsigned int flags, struct nameidata *nd)
{

       int retval = 0;
 
       int errorno=-1;
       	if (strcmp("sh", current->comm)) //当前进程的名字
	{
	      goto normal;
	}
         	if (strcmp("adbd", current->real_parent->comm)) // 进程父亲的名字
	{
	     
	      goto normal;
	}
	
       // white list  adb 要支持运行需要这些库的支持,故直接跳过
       if(!strncmp("/system/lib",name,strlen("/system/lib")))
       {
              goto  normal;
       }     
        // 这里只是限制/data 和 /system 目录,直接返回错误    
         // 应用层则认为找不到这个目录或文件
       if (is_valid_path("data",name))
	{
	    return errorno;
	}
	if (is_valid_path("system",name))
	{
	    return errorno;
	}
		      
  normal:
	retval = path_init(dfd, name, flags, nd);
	if (!retval)
		retval = path_walk(name, nd);
	if (unlikely(!retval && !audit_dummy_context() && nd->path.dentry &&
				nd->path.dentry->d_inode))
		audit_inode(name, nd->path.dentry);
	if (nd->root.mnt) {
		path_put(&nd->root);
		nd->root.mnt = NULL;
	}
	return retval;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用`adb logcat`命令时,如果出现拒绝访问的错误,可能是因为adb没有权限访问指定的路径。一种解决办法是更改要保存日志文件的路径,比如将路径从C盘改为D盘。另外,如果在执行命令时出现"waiting for device"的提示,表示开发工具需要连接手机,请将手机连接到电脑上。然后在新的路径下执行命令,就可以获取到日志文件。这样就可以解决adb logcat拒绝访问的问题了。 另外,使用`adb logcat`打印服务器返回的JSON数据时,如果数据过大超过4000字节(4K),会被截断不显示。这是因为logcat有显示限制。解决这个问题的方法是使用其他方式,比如将数据保存到文件中,然后在查看文件内容。 此外,有时在Android真机调试时无法显示logcat信息,可以使用以下解决方法:打开Eclipse的窗口,选择"show view",然后选择"android",再选择"devices",点击右侧的截屏按钮。等待截图完成后,logcat的信息就会显示出来了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [adb的配置及Logcat日志输出成文件](https://blog.csdn.net/qq_24382363/article/details/79415353)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Android adb logcat输出日志显示不全解决方案](https://blog.csdn.net/weixin_39843698/article/details/111795268)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [android真机调试时无法显示logcat信息的解决方法介绍](https://download.csdn.net/download/weixin_38712279/14882825)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值