CN112965760A - 修改根目录的方法、装置、电子设备和可读存储介质 - Google Patents
修改根目录的方法、装置、电子设备和可读存储介质 Download PDFInfo
- Publication number
- CN112965760A CN112965760A CN202110243035.8A CN202110243035A CN112965760A CN 112965760 A CN112965760 A CN 112965760A CN 202110243035 A CN202110243035 A CN 202110243035A CN 112965760 A CN112965760 A CN 112965760A
- Authority
- CN
- China
- Prior art keywords
- function
- path
- file
- environment
- root directory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 151
- 230000006870 function Effects 0.000 claims description 168
- 230000010365 information processing Effects 0.000 abstract description 2
- 238000013507 mapping Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000036316 preload Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000005530 etching Methods 0.000 description 1
- 125000001475 halogen functional group Chemical group 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种修改根目录的方法、装置、电子设备和可读非暂时性存储介质,属于电子信息处理的技术领域。修改根目录的方法包括:启动第一进程,以读取修改根目录所需的环境配置信息;通过第一进程创建共享文件,并将环境配置信息写入该文件;通过第一进程复刻子进程,并在子进程设置环境变量;通过子进程调用第一函数,以执行子进程中的待执行子进程;将函数调用传入的文件路径参数由客路径替换为主路径,并将函数调用返回结果的文件路径参数由主路径替换为客路径。本申请能够构建主文件和客文件混合的修改根目录环境,并且该修改根目录环境的性能较优。
Description
技术领域
本申请属于电子信息处理领域,具体涉及一种修改根目录的方法、装置、电子设备和可读非暂时性存储介质。
背景技术
root是linux系统中的超级管理员用户帐户,该帐户拥有整个系统的最高权限,可方便地对于系统的部件进行删除或更改。修改根目录(英文全称: change root,英文简称:chroot)是指:改变程序执行时所参考的根目录位置,修改根目录可以增进系统的安全性,限制使用者能做的事。
现有技术中修改根目录的方法有以下两种:第一种是通过操作系统内核提供的chroot系统调用实现修改根目录,该方法目前最常用;第二种是proot, proot能让root用户使用备用根目录运行程序,其在由于缺少root权限而无法使用chroot的情况下尤其有用。通过proot修改根目录时,父进程(parent process) 通过ptrace函数复刻(fork)出来的子进程的open、getcwd等和文件路径有关的系统调用,将系统调用传入的文件路径参数由guest(客)虚拟路径修改为 host真实路径,将系统调用返回的文件路径结果由host(主)真实路径修改为 guest虚拟路径。
chroot系统调用实现方法存在的缺点是:chroot系统调用需要root权限,其在某些使用场景下存在限制,并且chroot系统调用无法构建host和guest混合的chroot环境。
proot实现chroot的方法存在的缺点是:proot虽然可以构建host和guest 混合的chroot环境,而且也其需要root权限既可以构建。但是其采用ptrace实现路径的修改,chroot环境中所有进程系统调用都需要父进程处理,因此该方法chroot的环境性能极低。
综上可知,现有技术中缺少一种能够构建主文件和客文件混合的修改根目录环境,并且该修改根目录环境的性能较优的技术方案。
申请内容
为了解决上述现有技术中存在的技术问题中的至少之一,本申请是这样实现的:
第一方面,本申请实施例提供了一种修改根目录的方法,包括:启动第一进程,以读取修改根目录所需的环境配置信息;通过第一进程创建共享文件,并将环境配置信息写入共享文件;通过第一进程复刻子进程,并在子进程设置环境变量;通过子进程调用第一函数,以执行子进程中的待执行子进程;将函数调用传入的文件路径参数由客路径替换为主路径,并将函数调用返回结果的文件路径参数由主路径替换为客路径。
另外,本申请第一方面提供的技术方案还可以具有如下附加技术特征:
上述任一技术方案中,将函数调用传入的文件路径参数由客路径替换为主路径,并将函数调用返回结果的文件路径参数由主路径替换为客路径,具体包括:通过链接器加载动态库,使动态库调用第二函数,以通过环境变量获取环境配置信息,并对与文件路径相关的函数进行保存,其中,与文件路径相关的函数包括:传入参数包含文件路径的第三函数和返回结果包含文件路径的第四函数;子进程在需要调用第三函数时,调用动态库中与第三函数对应的第五函数,以将函数调用传入的文件路径参数由客路径替换为主路径;子进程在需要调用第四函数时,调用动态库中与第四函数对应的第六函数,以将函数调用返回结果的文件路径参数由主路径替换为客路径。
上述任一技术方案中,环境配置信息包括第一环境配置信息和第二环境配置信息,通过第一进程复刻子进程,并在子进程设置环境变量,具体包括:通过第一进程复刻子进程;在子进程设置第一环境变量,以使得链接器能够提前加载动态库,并替换与文件路径相关的函数;在子进程设置第二环境变量,以传递和保存环境配置信息的文件路径。
上述任一技术方案中,第二函数包括配置有构造属性的init函数,链接器加载动态库,使动态库调用第二函数,以通过环境变量获取环境配置信息,并对与文件路径相关的函数进行保存,具体包括:链接器通过读取第一环境变量加载动态库,使动态库调用init函数,以通过第二环境变量获取环境配置信息,并通过dlsym函数对与文件路径相关的函数进行保存。
上述任一技术方案中,至少两次地执行将函数调用传入的文件路径参数由客路径替换为主路径,并将函数调用返回结果的文件路径参数由主路径替换为客路径的步骤。
上述任一技术方案中,在执行将函数调用传入的文件路径参数由客路径替换为主路径,并将函数调用返回结果的文件路径参数由主路径替换为客路径的步骤时,方法还包括:检测文件路径,并将文件路径限制于修改根目录规定的路径下。
上述任一技术方案中,通过第一进程创建共享文件,并将环境配置信息写入共享文件,具体包括:通过第一进程创建共享文件,并利用mmap函数将环境配置信息写入共享文件。
第二方面,本申请实施例提供了一种修改根目录的装置,包括:读取模块,读取模块用于启动第一进程,以读取修改根目录所需的环境配置信息;创建模块,创建模块用于通过第一进程创建共享文件,并将环境配置信息写入共享文件;复刻模块,复刻模块用于通过第一进程复刻子进程,并在子进程设置环境变量;执行模块,执行模块用于通过子进程调用第一函数,以执行子进程中的待执行子进程;替换模块,替换模块用于将函数调用传入的文件路径参数由客路径替换为主路径,并将函数调用返回结果的文件路径参数由主路径替换为客路径。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序或指令,程序或指令被处理器执行时实现如第一方面的方法的步骤。
第四方面,本申请实施例提供了一种可读非暂时性存储介质,存储介质上存储程序或指令,程序或指令被处理器执行时实现如第一方面的方法的步骤。
通过本申请提供的修改根目录的方法、修改根目录的装置、电子设备和可读非暂时性存储介质,能够构建主文件和客文件混合的修改根目录环境,并且该修改根目录环境的性能较优。
附图说明
图1是本申请实施例的修改根目录的方法的步骤流程图之一;
图2是本申请实施例的修改根目录的方法的步骤流程图之二;
图3是本申请实施例的修改根目录的方法的步骤流程图之三;
图4是本申请实施例的电子设备的组成示意框图。
附图标记:
修改根目录的装置:100,读取模块:110,创建模块:120,复刻模块:130,执行模块:140,替换模块:150,循环模块:160,检测模块:170,电子设备: 200,处理器:210,存储器:220。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的修改根目录的方法、修改根目录的装置、电子设备和可读非暂时性存储介质进行详细地说明。
图1是本申请实施例的修改根目录的方法的步骤流程图之一。如图1所示,本申请实施例提供了一种修改根目录的方法,包括:
步骤S102,启动第一进程,以读取修改根目录所需的环境配置信息;
步骤S104,通过第一进程创建共享文件,并将环境配置信息写入共享文件;
步骤S106,通过第一进程复刻子进程,并在子进程设置环境变量;
步骤S108,通过子进程调用第一函数,以执行子进程中的待执行子进程;
步骤S110,将函数调用传入的文件路径参数由客路径替换为主路径,并将函数调用返回结果的文件路径参数由主路径替换为客路径。
本实施例通过sroot命令构建chroot环境的二进制可执行程序。步骤S102 中的第一进程为sroot进程,通过启动sroot进程,读取修改根目录(即:chroot) 环境配置信息,该环境配置信息具体包括chroot的根目录,主文件(host文件) 与客文件(guest文件)映射关系等。
进而,步骤S104通过第一进程创建共享文件,并利用mmap函数将环境配置信息写入。换言之,在本申请实施例的部分实施方式中,通过第一进程创建共享文件,并将环境配置信息写入共享文件,具体包括:通过第一进程创建共享文件,并利用mmap函数将环境配置信息写入共享文件。
在步骤S106中,第一进程复刻(fork)子进程并在子进程设置环境变量。图2是本申请实施例的修改根目录的方法的步骤流程图之二。如图2所示,在本申请实施例的部分实施方式中,步骤S106的环境配置信息包括第一环境配置信息和第二环境配置信息,步骤S106的通过第一进程复刻子进程,并在子进程设置环境变量,具体包括:
步骤S1062,通过第一进程复刻子进程;
步骤S1064,在子进程设置第一环境变量,以使得链接器能够提前加载动态库,并替换与文件路径相关的函数;
步骤S1066,在子进程设置第二环境变量,以传递和保存环境配置信息的文件路径。
具体而言,第一环境变量为LD_LIBRARY_PATH/LD_PRELOAD环境变量,第二环境变量为SROOT_CONFIG_FILE环境变量。 LD_LIBRARY_PATH/LD_PRELOAD为linux系统的环境变量。 LD_LIBRARY_PATH环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。LD_PRELOAD环境变量可以影响程序的运行时的链接,并可允许定义在程序运行前优先加载的动态链接库。该功能主要用来有选择性地载入不同动态链接库中的相同函数。通过该环境变量,可以在主程序和其动态链接库的中间加载别的动态链接库,甚至覆盖正常的函数库。本实施例配置LD_LIBRARY_PATH/LD_PRELOAD环境变量,用来配置链接器(linker) 提前加载libsroot-libc.so动态库,替换libc open或getcwd等和文件路径有关的函数。本实施例配置SROOT_CONFIG_FILE(非现有)环境变量,用来传递保存chroot环境配置信息的文件路径。
在步骤S108中,第一函数为exec函数,子进程调用exec函数,执行要真正要执行的子进程程序,例如其可以是bash或者单独执行的其他二进制程序。
通过步骤S110,则可将函数调用传入的文件路径参数由客路径替换为主路径,并将函数调用返回结果的文件路径参数由主路径替换为客路径。图3是本申请实施例的修改根目录的方法的步骤流程图之三。如图3所示,在本申请实施例的部分实施方式中,步骤S110中将函数调用传入的文件路径参数由客路径替换为主路径,并将函数调用返回结果的文件路径参数由主路径替换为客路径,具体包括:
步骤S1102,通过链接器加载动态库,使动态库调用第二函数,以通过环境变量获取环境配置信息,并对与文件路径相关的函数进行保存,其中,与文件路径相关的函数包括:传入参数包含文件路径的第三函数和返回结果包含文件路径的第四函数;
步骤S1104,子进程在需要调用第三函数时,调用动态库中与第三函数对应的第五函数,以将函数调用传入的文件路径参数由客路径替换为主路径;
步骤S1106,子进程在需要调用第四函数时,调用动态库中与第四函数对应的第六函数,以将函数调用返回结果的文件路径参数由主路径替换为客路径。
具体而言,步骤S110实现上述路径替换的方式如下。
在步骤S1102中,动态库为libsroot-libc.so动态库。第二函数包括配置有构造属性的init函数。第三函数包括open/fopen等传入参数包含文件路径的函数。第四函数包括getcwd等返回结果包含文件路径函数。
链接器加载动态库,使动态库调用第二函数,以通过环境变量获取环境配置信息,并对与文件路径相关的函数进行保存,具体包括:链接器通过读取第一环境变量加载动态库,使动态库调用init函数,以通过第二环境变量获取环境配置信息,并通过dlsym函数对与文件路径相关的函数进行保存。换言之,在子进程通过exec函数,在内核处理完新的可执行程序执行处理之后,则交给链接器执行。链接器会通过读取LD_LIBRARY_PATH/LD_PRELOAD环境变量加载libsroot-libc.so动态库。libsroot-libc.so动态库在被linker加载时,执行配置了构造(constructor)属性的init函数。init函数会通过环境变量 SROOT_CONFIG_FILE的值,通过读取该文件,获取chroot环境配置,还会通过dlsym函数,将libc中open/getcwd等函数符号地址保存在标签(table)中。
步骤S1104中,子进程在需要调用第三函数时,调用动态库中与第三函数对应的第五函数,以将函数调用传入的文件路径参数由客路径替换为主路径的具体方式如下。子进程在后续执行过程中,当调用open/fopen等传入参数包含文件路径的函数时,会调用到libsroot-libc.so动态库中对应的open/fopen等函数。其首先会将传入的文件路径参数由guest路径替换为host路径,然后再通过之前保存下来的libc.so的函数地址调用对应的open/fopen等函数。
步骤S1106中,子进程在需要调用第四函数时,调用动态库中与第四函数对应的第六函数,以将函数调用返回结果的文件路径参数由主路径替换为客路径的具体方式如下。当调用getcwd等返回结果包含文件路径函数时,也会调用到libsroot-libc.so动态库中对应的getcwd等函数。其首先会通过之前保存下来的libc.so的函数地址调用对应的getcwd等函数,然后在将返回结果的文件路劲参数由host路径修改为guest路径。
在本申请实施例的部分实施方式中,至少两次地执行将函数调用传入的文件路径参数由客路径替换为主路径,并将函数调用返回结果的文件路径参数由主路径替换为客路径的步骤。换言之,本实施方式后续bash再复刻子进程处理步骤,即:执行步骤S1102至S1106的重复。通过以上步骤就可以实现host和 guest混合的chroot环境,
在本申请实施例的部分实施方式中,在执行将函数调用传入的文件路径参数由客路径替换为主路径,并将函数调用返回结果的文件路径参数由主路径替换为客路径的步骤时,方法还包括:检测文件路径,并将文件路径限制于修改根目录规定的路径下。上述步骤能够将路径严格限定在chroot规定的路径下,防止突破chroot环境。
还需要说明的是,本申请实施例提供的修改根目录的方法通过替换libc中的open、getcwd等函数,对相关的参数和结果做路径转换。此外,本申请实施例中,chroot环境配置跨进程共享,通过mmap共享内存,可以实现chroot环境复杂配置,支撑构建复杂的host和guest混合环境。
综上,本申请实施例提供的修改根目录的方法通过替换并hack libc中open、getcwd函数,实现guest路径到host路径的映射。host系统中的父进程通过进程间通讯方式(例如利用环境变量、共享内存)将chroot环境配置(例如文件映射表)传递给chroot的guest环境中所有进程。采用替换并hack libc中函数的方式,本申请实施例可实现guest环境与host环境的文件映射,所以其构建时不需要root权限。另外由于替换都发生在当前进程,没有跨进程的调用,所以相比chroot系统调用构建的环境,本申请实施例host文件和guest文件混合构建chroot环境时的性能基本无损失。
图4是本申请实施例的电子设备的组成示意框图。如图4所示,本申请实施例提供了一种修改根目录的装置100,包括:读取模块110、创建模块120、复刻模块130、执行模块140和替换模块150。读取模块110用于启动第一进程,以读取修改根目录所需的环境配置信息。创建模块120用于通过第一进程创建共享文件,并将环境配置信息写入共享文件。复刻模块130用于通过第一进程复刻子进程,并在子进程设置环境变量。执行模块140用于通过子进程调用第一函数,以执行子进程中的待执行子进程。替换模块150用于将函数调用传入的文件路径参数由客路径替换为主路径,并将函数调用返回结果的文件路径参数由主路径替换为客路径。
在本申请实施例的部分实施方式中,替换模块150具体用于:通过链接器加载动态库,使动态库调用第二函数,以通过环境变量获取环境配置信息,并对与文件路径相关的函数进行保存,其中,与文件路径相关的函数包括:传入参数包含文件路径的第三函数和返回结果包含文件路径的第四函数;子进程在需要调用第三函数时,调用动态库中与第三函数对应的第五函数,以将函数调用传入的文件路径参数由客路径替换为主路径;子进程在需要调用第四函数时,调用动态库中与第四函数对应的第六函数,以将函数调用返回结果的文件路径参数由主路径替换为客路径。
在本申请实施例的部分实施方式中,环境配置信息包括第一环境配置信息和第二环境配置信息,复刻模块130具体用于:通过第一进程复刻子进程;在子进程设置第一环境变量,以使得链接器能够提前加载动态库,并替换与文件路径相关的函数;在子进程设置第二环境变量,以传递和保存环境配置信息的文件路径。
在本申请实施例的部分实施方式中,第二函数包括配置有构造属性的init 函数,链接器加载动态库,使动态库调用第二函数,以通过环境变量获取环境配置信息,并对与文件路径相关的函数进行保存,具体包括:链接器通过读取第一环境变量加载动态库,使动态库调用init函数,以通过第二环境变量获取环境配置信息,并通过dlsym函数对与文件路径相关的函数进行保存。
在本申请实施例的部分实施方式中,修改根目录的装置100还包括:循环模块160,循环模块160用于至少两次地执行将函数调用传入的文件路径参数由客路径替换为主路径,并将函数调用返回结果的文件路径参数由主路径替换为客路径的步骤。
在本申请实施例的部分实施方式中,修改根目录的装置100还包括:检测模块170,检测模块170用于检测文件路径,并将文件路径限制于修改根目录规定的路径下。
在本申请实施例的部分实施方式中,创建模块120具体用于:通过第一进程创建共享文件,并利用mmap函数将环境配置信息写入共享文件。
需要说明的是,本申请实施例提供的用于修改根目录的方法,执行主体可以为用于修改根目录的装置,或者,或者该用于修改根目录的装置中的用于执行加载用于修改根目录的方法的控制模块。本申请实施例中以用于修改根目录的装置执行加载用于修改根目录的方法为例,说明本申请实施例提供的用于修改根目录的方法。
本申请实施例中的用于修改根目录的装置可以是装置,也可以是终端中的部件、集成电路、或芯片。该装置可以是移动电子设备,也可以为非移动电子设备。示例性的,移动电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、可穿戴设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA) 等,非移动电子设备可以为服务器、网络附属存储器(Network Attached Storage, NAS)、个人计算机(personal computer,PC)、电视机(television,TV)、柜员机或者自助机等,本申请实施例不作具体限定。
本申请实施例中的用于修改根目录的装置可以为具有操作系统的装置。该操作系统可以为安卓(Android)操作系统,可以为ios操作系统,还可以为其他可能的操作系统,本申请实施例不作具体限定。
本申请实施例提供的用于修改根目录的装置能够实现本申请实施例提供的用于修改根目录的方法实施例中用于修改根目录的装置实现的各个过程,为避免重复,这里不再赘述。
图4是本申请实施例的电子设备的组成示意框图。如图4所示,本申请实施例提供了一种电子设备200,包括处理器210,存储器220及存储在存储器 220上并可在处理器210上运行的程序或指令,程序或指令被处理器执行时实现如本申请任一实施例的用于修改根目录的方法的步骤。需要注意的是,本申请实施例中的电子设备包括上述的移动电子设备和非移动电子设备。
本领域技术人员可以理解,电子设备200还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器210逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图4中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
其中,处理器为上述实施例中的电子设备中的处理器。可读非暂时性存储介质,包括计算机可读非暂时性存储介质,如计算机只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
本申请实施例提供了一种可读非暂时性存储介质,存储介质上存储程序或指令,程序或指令被处理器执行时实现如本申请任一实施例的用于修改根目录的方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (10)
1.一种修改根目录的方法,其特征在于,包括:
启动第一进程,以读取所述修改根目录所需的环境配置信息;
通过所述第一进程创建共享文件,并将所述环境配置信息写入所述共享文件;
通过所述第一进程复刻子进程,并在所述子进程设置环境变量;
通过所述子进程调用第一函数,以执行所述子进程中的待执行子进程;
将函数调用传入的文件路径参数由客路径替换为主路径,并将函数调用返回结果的文件路径参数由主路径替换为客路径。
2.根据权利要求1所述的修改根目录的方法,其特征在于,所述将函数调用传入的文件路径参数由客路径替换为主路径,并将函数调用返回结果的文件路径参数由主路径替换为客路径,具体包括:
通过链接器加载动态库,使所述动态库调用第二函数,以通过所述环境变量获取所述环境配置信息,并对与文件路径相关的函数进行保存,其中,所述与文件路径相关的函数包括:传入参数包含文件路径的第三函数和返回结果包含文件路径的第四函数;
所述子进程在需要调用所述第三函数时,调用所述动态库中与所述第三函数对应的第五函数,以将函数调用传入的文件路径参数由客路径替换为主路径;
所述子进程在需要调用所述第四函数时,调用所述动态库中与所述第四函数对应的第六函数,以将函数调用返回结果的文件路径参数由主路径替换为客路径。
3.根据权利要求2所述的修改根目录的方法,其特征在于,所述环境配置信息包括第一环境配置信息和第二环境配置信息,所述通过第一进程复刻子进程,并在所述子进程设置环境变量,具体包括:
通过所述第一进程复刻所述子进程;
在所述子进程设置所述第一环境变量,以使得所述链接器能够提前加载所述动态库,并替换所述与文件路径相关的函数;
在所述子进程设置所述第二环境变量,以传递和保存所述环境配置信息的共享文件路径。
4.根据权利要求3所述的修改根目录的方法,其特征在于,所述第二函数包括配置有构造属性的init函数,所述链接器加载动态库,使所述动态库调用第二函数,以通过所述环境变量获取所述环境配置信息,并对与文件路径相关的函数进行保存,具体包括:
所述链接器通过读取所述第一环境变量加载所述动态库,使所述动态库调用所述init函数,以通过所述第二环境变量获取所述环境配置信息,并通过dlsym函数对与所述文件路径相关的函数进行保存。
5.根据权利要求1至4中任一项所述的修改根目录的方法,其特征在于,至少两次地执行所述将函数调用传入的文件路径参数由客路径替换为主路径,并将函数调用返回结果的文件路径参数由主路径替换为客路径的步骤。
6.根据权利要求1至4中任一项所述的修改根目录的方法,其特征在于,在执行所述将函数调用传入的文件路径参数由客路径替换为主路径,并将函数调用返回结果的文件路径参数由主路径替换为客路径的步骤时,所述方法还包括:
检测文件路径,并将所述文件路径限制于所述修改根目录规定的路径下。
7.根据权利要求1至4中任一项所述的修改根目录的方法,其特征在于,所述通过第一进程创建共享文件,并将所述环境配置信息写入所述共享文件,具体包括:
通过所述第一进程创建共享文件,并利用mmap函数将所述环境配置信息写入所述文件。
8.一种修改根目录的装置,其特征在于,包括:
读取模块,所述读取模块用于启动第一进程,以读取所述修改根目录所需的环境配置信息;
创建模块,所述创建模块用于通过所述第一进程创建共享文件,并将所述环境配置信息写入所述共享文件;
复刻模块,所述复刻模块用于通过所述第一进程复刻子进程,并在所述子进程设置环境变量;
执行模块,所述执行模块用于通过所述子进程调用第一函数,以执行所述子进程中的待执行子进程;
替换模块,所述替换模块用于将函数调用传入的文件路径参数由客路径替换为主路径,并将函数调用返回结果的文件路径参数由主路径替换为客路径。
9.一种电子设备,其特征在于,包括处理器,存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现权利要求1至7中任一项所述的用于修改根目录的方法的步骤。
10.一种可读非暂时性存储介质,其特征在于,所述存储介质上存储程序或指令,所述程序或指令被处理器执行时实现权利要求1至7中任一项所述的用于修改根目录的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110243035.8A CN112965760A (zh) | 2021-03-04 | 2021-03-04 | 修改根目录的方法、装置、电子设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110243035.8A CN112965760A (zh) | 2021-03-04 | 2021-03-04 | 修改根目录的方法、装置、电子设备和可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112965760A true CN112965760A (zh) | 2021-06-15 |
Family
ID=76276608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110243035.8A Pending CN112965760A (zh) | 2021-03-04 | 2021-03-04 | 修改根目录的方法、装置、电子设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112965760A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113821224A (zh) * | 2021-08-20 | 2021-12-21 | 济南浪潮数据技术有限公司 | 一种环境变量替换使用的方法、系统、设备和存储介质 |
CN115827103A (zh) * | 2022-12-19 | 2023-03-21 | 上海弘积信息科技有限公司 | 一种程序运行方法及系统 |
-
2021
- 2021-03-04 CN CN202110243035.8A patent/CN112965760A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113821224A (zh) * | 2021-08-20 | 2021-12-21 | 济南浪潮数据技术有限公司 | 一种环境变量替换使用的方法、系统、设备和存储介质 |
CN113821224B (zh) * | 2021-08-20 | 2023-12-22 | 济南浪潮数据技术有限公司 | 一种环境变量替换使用的方法、系统、设备和存储介质 |
CN115827103A (zh) * | 2022-12-19 | 2023-03-21 | 上海弘积信息科技有限公司 | 一种程序运行方法及系统 |
CN115827103B (zh) * | 2022-12-19 | 2024-04-09 | 上海弘积信息科技有限公司 | 一种程序运行方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2020504865A (ja) | アプリケーションデータ処理方法、装置、及び記憶媒体 | |
CN109325195A (zh) | 浏览器的渲染方法和系统、计算机设备、计算机存储介质 | |
CN108121594B (zh) | 一种进程管理方法及装置 | |
CN112965760A (zh) | 修改根目录的方法、装置、电子设备和可读存储介质 | |
CA3167549A1 (en) | Method and apparatus for authority control, computer device and storage medium | |
EP3497586A1 (en) | Discovery of calling application for control of file hydration behavior | |
CN115335806A (zh) | 以模块粒度的影子堆栈违规强制 | |
CN114115840B (zh) | 用于核电站dcs系统应用软件的变量跳转方法和装置 | |
CN113467817B (zh) | 一种应用管理方法、系统、介质及电子终端 | |
CN111338626B (zh) | 一种界面渲染方法、装置、电子设备及介质 | |
US10318745B2 (en) | Access control system and access control method | |
CN111885184A (zh) | 高并发场景下热点访问关键字处理方法和装置 | |
CN109388435A (zh) | 实现app同时多次开启操作的方法和装置 | |
CN104346228A (zh) | 共享应用程序的方法及终端 | |
CN113132241A (zh) | Acl模板动态配置方法及装置 | |
CN113971073A (zh) | 数据调用方法、装置、电子设备及计算机存储介质 | |
CN109783156B (zh) | 一种应用的启动控制方法及装置 | |
CN113938527A (zh) | Api网关的扩展处理方法、计算设备及存储介质 | |
CN103176915B (zh) | 一种管理内存的方法及装置 | |
CN113726855A (zh) | 服务聚合方法、装置、电子设备以及计算机可读存储介质 | |
CN112291212A (zh) | 静态规则的管理方法、装置、电子设备和存储介质 | |
CN115469909B (zh) | 指令更新方法、软件平台的工作方法、装置、设备和介质 | |
US20050198108A1 (en) | Deterministic rule-based dispatch of objects to code | |
CN105844151A (zh) | 一种文件存储保护实现方法和系统 | |
CN115277140B (zh) | 策略配置、风险识别方法和装置、可读存储介质以及计算设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220402 Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing. Applicant after: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd. Address before: 100080 floor 2, No.36 Haidian Street, Haidian District, Beijing 2002 Applicant before: Beijing jingling Information System Technology Co.,Ltd. |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |