发明内容
本申请实施例提供一种文件路径的建立、访问方法和装置,在多个用户共享相同的逻辑目录时,实现不同用户对同一个逻辑目录执行的操作实际上分别在不同的物理目录下进行。
本申请实施例采用下述技术方案:
一种文件路径的建立方法,包括:获取多个文件的绝对路径,所述多个文件的绝对路径的集合与多个用户的用户标识的集合之间具有映射关系;建立与所述绝对路径的集合相对应的符号链接文件,使目标用户读取所述符号链接文件时,根据所述映射关系,将所述符号链接文件指向与所述目标用户的用户标识对应的绝对路径。
进一步的,获取多个文件的绝对路径,包括:采用用户空间文件系统fuse开发文件系统;根据开发的文件系统,获取多个文件的绝对路径。
进一步的,所述方法还包括:检测所述映射关系是否需要变更;若所述映射关系需要变更,则更新所述映射关系和所述符号链接文件,使目标用户读取更新后的符号链接文件时,根据更新后的映射关系,将更新后的符号链接文件指向与所述目标用户的用户标识对应的绝对路径。
一种文件路径的访问方法,包括:接收目标用户针对符号链接文件的访问请求,其中,所述符号链接文件与多个文件的绝对路径的集合相对应,所述多个文件的绝对路径的集合与多个用户的用户标识的集合之间具有映射关系;根据所述目标用户的用户标识以及所述映射关系,将所述符号链接文件指向与所述目标用户的用户标识对应的绝对路径。
进一步的,接收目标用户针对符号链接文件访问请求之前,所述方法还包括:采用fuse开发文件系统;根据开发的文件系统,获取多个文件的绝对路径。
一种文件路径的建立装置,包括:获取模块,用于获取多个文件的绝对路径,所述多个文件的绝对路径的集合与多个用户的用户标识的集合之间具有映射关系;建立模块,用于建立与所述绝对路径的集合相对应的符号链接文件,使目标用户读取所述符号链接文件时,根据所述映射关系,将所述符号链接文件指向与所述目标用户的用户标识对应的绝对路径。
进一步的,获取模块获取多个文件的绝对路径,包括:获取模块采用fuse开发文件系统;并根据开发的文件系统,获取多个文件的绝对路径。
进一步的,所述装置还包括:检测模块,用于检测所述映射关系是否需要变更;更新模块,用于在所述映射关系需要变更时,则更新所述映射关系和所述符号链接文件,使目标用户读取更新后的符号链接文件时,根据更新后的映射关系,将更新后的符号链接文件指向与所述目标用户的用户标识对应的绝对路径。
一种文件路径的访问装置,包括:接收模块,用于接收目标用户针对符号链接文件的访问请求,其中,所述符号链接文件与多个文件的绝对路径的集合相对应,所述多个文件的绝对路径的集合与多个用户标识的集合之间具有映射关系;访问模块,用于根据所述目标用户的用户标识以及所述映射关系,将所述符号链接文件指向与所述目标用户的用户标识对应的绝对路径。
进一步的,所述装置还包括:获取模块,用于采用fuse开发文件系统;并根据开发的文件系统,获取多个文件的绝对路径。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:首先获取多个文件的绝对路径,上述多个文件的绝对路径的集合与多个用户的用户标识的集合之间具有映射关系;然后建立与上述绝对路径的集合相对应的符号链接文件,使目标用户读取符号链接文件时,根据所述映射关系,将所述符号链接文件指向与目标用户的用户标识对应的绝对路径。这样,上述符号链接文件即可以作为逻辑目录供多个用户共享使用,当不同的用户分别读取该符号链接文件时,分别访问不同的绝对路径下的文件或目录,实现不同用户对同一个逻辑目录执行的操作而实际上分别在不同的物理目录下进行。
本发明实施例中,在访问文件路径时只需要解析上述符号链接文件,相对于现有技术中为每一个用户分别设置配置文件的方式,避免了管理大量的配置文件所造成的繁琐和复杂的问题,节约了所需要消耗的资源。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种文件路径的建立方法,在多个用户共享相同的逻辑目录时,实现不同用户对同一个逻辑目录执行操作而实际上分别在不同的目录下进行,如图1所示,该实施例包括如下步骤:
S101:获取多个文件的绝对路径,所述多个文件的绝对路径的集合与多个用户的用户标识的集合之间具有映射关系。
该步骤中的绝对路径,可以用来完整的描述用户实际操作执行的文件的位置。绝对路径通常由一系列连续的目录组成,中间用斜线分隔,直到要指定的目录或文件,例如,绝对路径/data0/data98/abc和绝对路径/data0/data98/xyz中,包括有目录data0、目录data98、目录(或文件)abc以及目录(或文件,该文件不存在下级目录)xyz,绝对路径中的最后一个名称即为要指向的目录或文件,即,上述abc和xyz既可以是目录,还可以是文件。
该步骤中获取的多个文件的绝对路径的集合(简称集合A)与多个用户标识的集合(简称集合B)之间具有映射关系。例如,集合A中包括有绝对路径:/data0/data98/abc、绝对路径:/data0/data98/xyz;这里的abc和xyz可以是目录data98的下级目录,或者是具体的文件。集合B中包括有用户abc的用户标识abc(具体为用户名,后续类似),用户xyz的用户标识xyz,对于上述映射关系,即,可以是:绝对路径/data0/data98/abc与用户标识abc相对应,绝对路径/data0/data98/xyz与用户标识xyz相对应。当然,在其他的实施例中,还可以是多个绝对路径与一个用户标识之间具有多对一的对应关系。
S102:建立与所述绝对路径的集合相对应的符号链接文件,使目标用户读取所述符号链接文件时,根据所述映射关系,将所述符号链接文件指向与所述目标用户的用户标识对应的绝对路径。
该步骤中的符号链接文件,还可以称作是软链接文件,是一类特殊的文件,其中可以包括有上述绝对路径。例如,在上述所举的例子中,集合A中包括有绝对路径/data0/data98/abc和绝对路径/data0/data98/xyz,建立集合A的符号链接文件例如/mnt/data98之后,符号链接文件/mnt/data98中同样分别包括有上述绝对路径/data0/data98。
当目标用户读取所述符号链接文件/mnt/data98时,根据绝对路径的集合与多个用户标识的集合之间的映射关系,即可访问与所述目标用户的用户标识对应的绝对路径。例如,用户abc读取符号链接文件/mnt/data98时,根据上述映射关系中绝对路径/data0/data98/abc与用户标识abc的对应关系,即可访问绝对路径/data0/data98/abc。
具体建立符号链接文件时,例如,在linux/C语言环境下,可以采用symlink()函数来创建绝对路径的集合的符号链接文件。
本申请实施例提供的上述文件路径的建立方法,首先获取多个文件的绝对路径,上述多个文件的绝对路径的集合与多个用户的用户标识的集合之间具有映射关系;然后建立与上述绝对路径的集合相对应的符号链接文件,使目标用户读取符号链接文件时,根据所述映射关系,将符号链接文件指向与目标用户的用户标识对应的绝对路径。这样,上述符号链接文件即可以作为逻辑目录供多个用户共享使用,当不同的用户分别读取该符号链接文件时,分别将所述符号链接文件指向不同的绝对路径下的文件或目录,实现不同用户对同一个逻辑目录执行操作而实际上分别在不同的物理目录下进行。
本发明实施例中,在访问文件路径时只需要解析上述符号链接文件,相对于现有技术中为每一个用户分别设置配置文件的方式,避免了管理大量的配置文件所造成的繁琐和复杂的问题,节约了所需要消耗的资源。
现有技术中还具有采用mount namespace技术(通常也简单叫做namespace)。即,通过特定的系统调用,可以允许不同的进程拥有不同的挂载表,其子进程也能继承这些挂载表。但是namespace的核心思想是进程的父子关系而非用户标识(可以是id)。从而导致了如果要为不同的用户配置不同的目录,需要设置复杂的pam规则;而复杂的pam规则又难以配置且容易造成服务器不能登录;此外,如果出现用户身份改变的情况(例如执行了su或类似的命令),难以简单切换到另一个namespace,造成和预期不一致的情况。
本发明实施例提供的文件路径的建立方法,相对于上述mount namespace技术,只需要建立符号链接文件、配置简单、安全;执行访问时只需要解析符号链接文件,无需占用额外空间,节约资源;并且该方法的系统支持性较广,可以广泛应用于posix系统等环境中。
另外,上述实施例的S102执行完成之后,还可以包括如下步骤:检测所述映射关系是否需要变更;
若所述映射关系不需要变更,则结束流程;
若所述映射关系需要变更,则更新所述映射关系和所述符号链接文件,使目标用户读取更新后的符号链接文件时,根据更新后的映射关系,将更新后的符号链接文件指向与所述目标用户的用户标识对应的绝对路径。
例如,集合A中包括有绝对路径/data0/data98/abc和绝对路径/data0/data98/xyz;集合B中包括有用户abc的用户标识abc,用户xyz的用户标识xyz。
如果集合A需要添加绝对路径/data0/data98/def,集合B中添加用户标识def,添加绝对路径/data0/data98/def和用户标识def相对应,此时,相当于是对集合A和集合B之间的映射关系进行了更新。同时也可以对应地更新集合A对应的符号链接文件/mnt/data98,该处的更新符号链接文件,实际上并未改变符号链接文件/mnt/data98。当然,在其他的实施例中,更新符号链接文件,也可以是为了实现目标用户访问与自身的用户标识对应的绝对路径而真实地改变符号链接文件。
通过上述操作,在映射关系需要变更时,可以及时的更新映射关系和符号链接文件,使目标用户可以继续访问与所述目标用户的用户标识对应的绝对路径。
Linux系统由于具有良好的稳定性和开放性,支持各种文件系统,因而在互联网中使用日益广泛。在Linux服务器中,具有用户空间文件系统(fuse,filesystem inuserspace)功能,fuse能够更方便地支持自定义的文件系统,包括按需建立的符号链接文件。为详细说明本申请实施例提供的文件路径的建立方法,以下将结合一具体实施例进行说明,如图2所示,该实施例包括如下步骤:
S201:采用用户空间文件系统fuse开发文件系统。
该步骤中的fuse,即“用户空间的文件系统”,fuse是一个内核模块,能够让用户在用户空间实现文件系统并且挂载到某个目录下。
文件系统是一种用来存储和组织计算机文件、目录及其包含的数据的方法,它使文件、目录以及数据的查找和访问得到简化。
该步骤中采用fuse开发文件系统时,还可以将开发的文件系统挂载到目录中,如挂载到目录/mnt,然后通过访问挂在到的目录来访问开发的文件系统。具体挂载时,可以采用fuse_main()函数,从而调用fuse_mount()函数将fuse文件系统挂载到/mnt下,并创建UNIX本地套接字,创建并运行子进程fusermount,然后调用fuse_new()函数为fuse文件系统分配数据存储空间,完成挂载。
S202:根据开发的文件系统,获取多个文件的绝对路径,所述多个文件的绝对路径的集合与多个用户的用户标识的集合之间具有映射关系;
在上述开发的文件系统下,可以默认包含一个特殊选项“参照目录”,根据该参照目录,即可自动获取得到多个文件的绝对路径。
S203:建立与所述绝对路径的集合相对应的符号链接文件,使目标用户读取所述符号链接文件时,根据所述映射关系,指向与所述目标用户的用户标识对应的绝对路径。
建立与所述绝对路径的集合相对应的符号链接文件后,参照目录中的下级目录,即可以在上述建立的文件系统中作为符号链接文件列出,这样,不同的用户读取上述符号链接文件时,即可返回参照目录的下级目录的绝对地址。
例如,如要让不同的用户看到同一个共享目录/data98中的不同内容,而这些内容实际放置在/data0/data98,该处/data98是/data0的下级目录,/data98中还可以包括有多个下级目录,data98的下级目录可以是S202中获取到的绝对路径,则可以将此fuse开发的文件系统挂载到/mnt中,创建/data98的符号链接文件指向/data0/data98即可实现。此时用户rst访问/data98时,首先会指向/mnt/data98(符号链接文件),再指向真实的绝对路径/data0/data98/rst。
其它公开不足之处参见上述实施例的S102。
本申请实施例提供的上述文件路径的建立方法,首先采用fuse开发文件系统,获取多个文件的绝对路径,上述多个文件的绝对路径的集合与多个用户的用户标识的集合之间具有映射关系;然后建立与上述绝对路径的集合相对应的符号链接文件,使目标用户读取符号链接文件时,根据所述映射关系,将符号链接文件指向与目标用户的用户标识对应的绝对路径。这样,上述符号链接文件即可以作为共享目录供多个用户共享使用,当不同的用户分别读取该符号链接文件时,分别指向不同的绝对路径下的文件或目录,实现不同用户对同一个共享目录执行的操作而实际上分别在不同的物理目录下进行。
本发明实施例中,在访问文件路径时只需要解析上述符号链接文件,相对于现有技术中为每一个用户分别设置配置文件的方式,避免了管理大量的配置文件所造成的繁琐和复杂的问题,节约了所需要消耗的资源。
本发明实施例采用fuse开发文件系统、获取多个文件的绝对路径、建立符号链接文件等,减少了开发过程中所需要消耗的资源。
上述两个实施例主要介绍了文件路径的建立方法过程中符号链接文件的建立过程,在实际应用中,目标用户可以根据上述建立的符号链接文件,指向与所述目标用户的用户标识对应的绝对路径。如图3所示,本申请实施例提供一种文件路径的访问方法,包括如下步骤:
S301:接收目标用户针对符号链接文件的访问请求,其中,所述符号链接文件与多个文件的绝对路径的集合相对应,所述多个文件的绝对路径的集合与多个用户的用户标识的集合之间具有映射关系。
S302:根据所述目标用户的用户标识以及所述映射关系,将所述符号链接文件指向与所述目标用户的用户标识对应的绝对路径。
该实施例的公开不足之处参见上述两个实施例,并且,该实施例能够达到上述两个实施例相同或者是等同的技术效果,在此不再赘述。该实施例在S301接收目标用户针对符号链接文件的访问请求之前,该实施例还可以包括如下步骤:采用fuse开发文件系统;根据开发的文件系统,获取多个文件的绝对路径。
基于相同的发明构思,本申请还提供一种文件路径的建立装置实施例,如图4所示,该装置包括:
获取模块401,可以用于获取多个文件的绝对路径,所述多个文件的绝对路径的集合与多个用户的用户标识的集合之间具有映射关系。
建立模块402,可以用于建立与所述绝对路径的集合相对应的符号链接文件,使目标用户读取所述符号链接文件时,根据所述映射关系,将所述符号链接文件指向与所述目标用户的用户标识对应的绝对路径。
进一步的,获取模块401获取多个文件的绝对路径,包括:获取模块401采用fuse开发文件系统;根据开发的文件系统,获取多个文件的绝对路径。
进一步的,所述装置还包括:检测模块403,用于检测所述映射关系是否变化;更新模块404,用于在所述映射关系变化时,则更新所述映射关系和所述符号链接文件,使目标用户读取更新后的符号链接文件时,根据更新后的映射关系,将更新后的符号链接文件指向与所述目标用户的用户标识对应的绝对路径。
本申请实施例提供的上述文件路径的建立装置,首先获取多个文件的绝对路径,上述多个文件的绝对路径的集合与多个用户的用户标识的集合之间具有映射关系;然后建立与上述绝对路径的集合相对应的符号链接文件,使目标用户读取符号链接文件时,根据所述映射关系,将所述符号链接文件指向与目标用户的用户标识对应的绝对路径。这样,上述符号链接文件即可以作为逻辑目录供多个用户共享使用,当不同的用户分别读取该符号链接文件时,分别指向不同的绝对路径下的目录或文件,实现不同用户对同一个共享目录执行的操作而实际上分别在不同的物理目录下进行。
本发明实施例中,在访问文件路径时只需要解析上述符号链接文件,相对于现有技术中为每一个用户分别设置配置文件的方式,避免了管理大量的配置文件所造成的繁琐和复杂的问题,节约了所需要消耗的资源。
基于相同的发明构思,本申请还提供一种文件路径的访问装置实施例,如图5所示,该装置包括:
接收模块501,可以用于接收目标用户针对符号链接文件的访问请求,其中,所述符号链接文件与多个文件的绝对路径的集合相对应,所述多个文件的绝对路径的集合与多个用户标识的集合之间具有映射关系。
访问模块502,可以用于根据所述目标用户的用户标识以及所述映射关系,将所述符号链接文件指向与所述目标用户的用户标识对应的绝对路径。
进一步的,所述装置还包括:获取模块503,可以用于采用fuse开发文件系统;并根据开发的文件系统,获取多个文件的绝对路径。
该实施例能够达到上述装置实施例相同或者是等同的技术效果,在此不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。