掌桥专利:专业的专利平台
掌桥专利
首页

基于Linux的用户标识唯一性实现方法、装置、设备及介质

文献发布时间:2023-06-19 16:04:54



技术领域

本申请涉及计算机的技术领域,尤其是涉及一种基于Linux的用户标识唯一性实现方法、装置、设备及介质。

背景技术

现有的Linux操作当前系统中,当用户在当前系统生命周期内被删除时,用户标识也会随即从当前系统内删除。但当建立新用户或修改用户时,被删除且已经使用过的用户标识可能主动或被动得被当前系统重用,被当前系统重用的用户标识失去了唯一性,如果被删除用户的重要文件或者其他文件在用户被删除时没有被同时从当前系统内清除,那么新创建的具有相同用户标识的用户就可以访问这些文件,从而可能导致某些特定程序或文件被盗用或滥用,增加数据泄露、身份盗用等风险,进而危害计算机当前系统安全。

发明内容

为了实现用户标识的唯一性,本申请提供一种基于Linux的用户标识唯一性实现方法、装置、设备及介质。

第一方面,本申请提供一种基于Linux的用户标识唯一性实现方法,采用如下的技术方案:

一种基于Linux的用户标识唯一性实现方法,包括:

响应于用户的用户账号创建指令,判断所述用户标识创建指令中是否包含指定用户标识;

若是,则基于预先设置的用户标识数据库判断所述指定用户标识是否具有使用记录;

若不具有使用记录,则基于所述指定用户标识创建用户账号,并将所述指定用户标识存入用户标识数据库,更新所述用户标识数据库;

若具有使用记录,则判断是否存在可用用户标识;

若存在,则基于所述可用用户标识创建用户账号,并将所述可用用户标识存入所述用户标识数据库,更新所述用户标识数据库,或者生成用于向所述用户提示所述可用用户标识的提示信息;

若不存在,则退出;

若否,则执行所述判断是否有可用用户标识的步骤。

通过采用上述技术方案,使用未被使用过的用户标识创建用户账号,并将已经创建过的用户标识存入用户标识数据库,已使用过的用户标识和正在使用的用户标识在当前系统生命周期内不可被重复利用,从而实现用户标识的唯一性。

可选的,所述判断是否存在可用用户标识包括:

获取当前系统内最小用户标识,判断所述当前系统内最小用户标识是否具有使用记录;

若具有使用记录,则判定存在所述可用用户标识,并将所述最小用户标识作为所述可用用户标识;

若不具有使用记录,则将所述当前系统内最小用户标识作为当前用户标识,对所述当前用户标识加1;

判断加1后的当前用户标识是否具有使用记录;

若不具有使用记录,则将加1后的当前用户标识作为所述当前用户标识,重复所述对所述当前用户标识加1的步骤;

若具有使用记录,则判断加1后的当前用户标识是否超过最大用户标识;

若超过,则判定不存在所述可用用户标识;

若没有超过,则判定存在所述可用用户标识,并将所述当前用户标识作为所述可用用户标识。

可选的,在所述更新所述用户标识数据库之后,还包括:

响应于用户的用户标识修改指令,获取待修改的用户标识;

基于所述用户标识数据库,判断所述待修改的用户标识是否具有使用记录;

若不具有使用记录,则将所述用户标识更新为所述待修改的用户标识,将修改成功的所述待修改的用户标识存入所述用户标识数据库,更新所述用户标识数据库;

若具有使用记录,则输出错误信息,以提示用户所述待修改的用户标识不可用。

可选的,所述基于所述用户标识数据库,判断所述待修改的用户标识是否具有使用记录包括:

判断所述待修改的用户标识是否被正被使用;

若正被使用,则判定所述待修改的用户标识具有使用记录;

若未正被使用,则判断所述待修改的用户标识是否曾被使用;

若是,则判定所述待修改的用户标识具有使用记录;

若否,则判定所述待修改的用户标识不具有使用记录。

可选的,在所述更新所述用户标识数据库之后,还包括:

响应于用户的用户账号删除指令,基于所述用户标识数据库判断待删除用户账号是否为当前系统的系统账号;

若是,则判断所述待删除用户账号是否为特殊账号;

若是特殊账号,则删除所述待删除用户账号,将所述待删除用户账号的用户标识从所述用户标识数据库中删除并更新所述用户标识数据库;

若不是特殊账号,则仅删除所述待删除用户账号;

若否,则仅删除所述待删除用户账号。

可选的,所述基于预先设置的用户标识数据库判断所述指定用户标识是否具有使用记录包括:

获取“/etc/passwd”文件,基于所述“/etc/passwd”文件判断所述指定用户标识是否正在被使用;

若是,则判定所述指定用户标识具有使用记录;

若否,则基于所述用户标识数据库判断是否曾被使用;

若曾被使用,则判定所述指定用户标识具有使用记录;

若未曾被使用,则判定所述指定用户标识不具有使用记录。

可选的,所述用户标识以字节形式加密存入所述用户标识数据库。

第二方面,本申请提供一种基于Linux的用户标识唯一性实现装置,采用如下的技术方案:

一种基于Linux的用户标识唯一性实现装置,包括:

指令接收模块,用于响应于用户的用户账号创建指令,判断所述用户标识创建指令中是否包含指定用户标识;

第一判断模块,用于基于预先设置的用户标识数据库判断所述指定用户标识是否具有使用记录;

第一创建模块,用于基于所述指定用户标识创建用户账号,并将所述指定用户标识存入用户标识数据库,更新所述用户标识数据库;

第二判断模块,用于判断是否存在可用用户标识;

第二创建模块,用于基于所述可用用户标识创建用户账号,并将所述可用用户标识存入所述用户标识数据库,更新所述用户标识数据库,或者生成用于向所述用户提示所述可用用户标识的提示信息;

第一退出模块,用于退出;

第一执行模块,用于执行所述判断是否有可用用户标识的步骤。

通过采用上述技术方案,使用未被使用过的用户标识创建用户账号,并将已经创建过的用户标识存入用户标识数据库,已使用过的用户标识和正在使用的用户标识在当前系统生命周期内不可被重复利用,从而实现用户标识的唯一性。

第三方面,本申请提供一种电子设备,采用如下的技术方案:

一种电子设备,包括存储器和处理器,所述存储器上存储有能够被处理器加载并执行第一方面任一项所述的基于Linux的用户标识唯一性实现方法的计算机程序。

第四方面,本申请提供一种计算机可读存储介质,采用如下的技术方案:

一种计算机可读存储介质,存储有能够被处理器加载并执行第一方面任一项所述的基于Linux的用户标识唯一性实现方法的计算机程序。

附图说明

图1是本申请实施例提供的一种基于Linux的用户标识唯一性实现方法的流程示意图。

图2是本申请实施例提供的一种用户标识判断方法的流程示意图。

图3是申请实施例提供的一种基于Linux的用户标识唯一性实现装置的结构框图。

图4是本申请实施例提供的电子设备的结构框图。

具体实施方式

以下结合附图对本申请作进一步详细说明。

图1为本申请实施例提供的一种基于Linux的用户标识唯一性实现方法的流程示意图。

如图1所示,该方法主要流程描述如下(步骤S101~S106):

步骤S101,响应于用户的用户账号创建指令,判断用户标识创建指令中是否包含指定用户标识;

步骤S102,若是,则基于预先设置的用户标识数据库判断指定用户标识是否具有使用记录;

步骤S103,若不具有使用记录,则基于指定用户标识创建用户账号,并将指定用户标识存入用户标识数据库,更新用户标识数据库;

步骤S104,若具有使用记录,则判断是否存在可用用户标识;

步骤S105,若存在,则基于可用用户标识创建用户账号,并将可用用户标识存入用户标识数据库,更新用户标识数据库,或者生成用于向用户提示可用用户标识的提示信息;

步骤S106,若不存在,则退出;

若否,则执行步骤S104。

在本实施例中,不限定步骤S103和步骤S104的执行顺序,执行步骤S104和步骤S102的执行顺序,步骤S105和步骤S106的执行顺序。

在本实施例中,针对步骤S102,获取“/etc/passwd”文件,基于“/etc/passwd”文件判断指定用户标识是否正在被使用;若是,则判定指定用户标识具有使用记录;若否,则基于用户标识数据库判断是否曾被使用;若曾被使用,则判定指定用户标识具有使用记录;若未曾被使用,则判定指定用户标识不具有使用记录。

在本实施例中,用户标识数据库会自动生成用户标识数据库备份文件,用户标识数据库与用户标识数据库备份文件中的用户标识数据信息一致,在用户标识数据库进行更新时用户标识数据库备份文件也进行同步更新,用户标识数据库备份文件用于对用户标识数据库中的用户标识数据信息备份,在其中一个产生损坏无法正常获取用户标识数据信息时可通过另一个和当前系统的 “/etc/passwd”文件恢复用户标识数据信息。其中,当前系统的 “/etc/passwd”文件为用户配置文件,当前系统的 “/etc/passwd”文件具有修改权限,仅管理员可对当前系统的 “/etc/passwd”文件的文件数据进行修改,普通用户只具备查看权限,且用户标识数据库和用户标识数据库备份文件为隐藏文件。需要说明的是,用户标识数据库与用户标识数据库备份文件均设置有不可删除保护,并且用户不具备修改权限。

需要说明的是,在创建用户账号时,禁止使用“-o”参数,若创建用户账号的指令中含有“-o”参数,则无法继续创建用户账号。

在本实施例中,在创建用户账号时,用户可以选择指定用户标识,即用户自定义用户标识,在用户指定用户标识后,首先获取用户标识数据库中的用户标识数据信息,判断指定用户标识是否具有使用记录,即是否正在被其他用户使用或者被其他用户使用过,若该指定用户标识在当前系统生命周期内不具有使用记录,则使用该指定用户标识创建用户账号,并将该指定用户标识存入用户标识数据库,并且更新用户标识数据库和用户标识数据库备份文件,从而使该指定用户标识不可被重复利用。

在本实施例中,如果用户在创建用户账号的时候没有指定用户标识,当前系统将自动分配用户标识用于创建用户账号。当前系统在自动分配用户标识时,获取用户标识数据库中的用户标识数据信息,判断当前自动分配用户标识在当前系统生命周期内是否具有使用记录,若当前自动分配用户标识在当前系统生命周期内不具有使用记录,则使用当前自动分配用户标识创建用户账号,并将当前自动分配用户标识存入用户标识数据库,并且更新用户标识数据库和用户标识数据库备份文件,从而使该自动分配用户标识不可被重复利用。

在本实施例中,指定用户标识和自动分配用户标识均存在不可进行使用的情况,此时需要在当前系统内寻找可用用户标识,即判断是否具有可用用户标识,若具有可用用户标识则使用可用用户标识自动创建用户账号,或提示用户使用可用用户标识创建账号,若不具有可用用户标识则退出。

在本实施例中,提示信息可以为“该用户标识已被占用,建议使用1024作为用户标识”、“该用户标识曾被使用过,建议使用1024作为用户标识”等,在此不作具体限定。

图2为本申请实施例提供的一种基于Linux的用户标识唯一性实现方法的流程示意图。

如图2所示,用户标识判断方法主要流程描述如下(步骤S201~S207):

步骤S201,获取当前系统内最小用户标识,判断当前系统内最小用户标识是否具有使用记录;

步骤S202,若不具有使用记录,则判定存在可用用户标识,并将最小用户标识作为可用用户标识;

步骤S203,若具有使用记录,则将当前系统内最小用户标识作为当前用户标识,对当前用户标识加1;

步骤S204,判断加1后的当前用户标识是否具有使用记录;

若具有使用记录,则将加1后的当前用户标识作为当前用户标识,重复步骤S203;

步骤S205,若不具有使用记录,则判断加1后的当前用户标识是否超过最大用户标识;

步骤S206,若超过,则判定不存在可用用户标识;

步骤S207,若没有超过,则判定存在可用用户标识,并将当前用户标识作为可用用户标识。

在本实施例中,若当前自动分配的用户标识在当前系统生命周期内具有使用记录,则当前自动分配的用户标识将自动加1,例如,当前自动分配的用户标识为1024,如果1024具有使用记录,1024将自动加1成为1025。判断1025是否具有使用记录,若不具有使用记录则判断1025是否超过当前系统允许的最大用户标识,如果超过当前系统允许的最大用户标识则无法进行用户账号创建,如果没有超过当前系统允许的最大用户标识则使用1025创建用户账号,若具有使用记录则并继续执行用户标识自动加1的步骤,直至选出可用的自动分配的用户标识或者达到当前系统当前允许的最大用户标识。需要说明的是,1024和1025仅为举例说明,在此不作具体限定。

在本实施例中,不限定步骤S202和步骤S203的执行顺序,重复步骤S203和步骤S205的执行顺序,步骤S206和步骤S207的执行顺序。

需要说明的是,最小用户标识包括普通用户可用的最小用户标识和系统可用的最小用户标识,最大用户标识为普通用户可用的最大用户标识,其中系统可用的最大用户标识为普通用户可用的最小用户标识减1,最小用户标识和最大用户标识均在系统生成阶段由“/etc/login.defs”文件中的配置参数所指定,“/etc/login.defs”文件用于在创建用户账号时,对用户的一些基本属性做默认设置,例如指定用户用户标识的范围、用户的过期时间、密码的最大长度等。

在本实施例中,可以对系统中已经存在的用户账号的用户标识进行修改,响应于用户的用户标识修改指令,获取待修改的用户标识;基于用户标识数据库,判断待修改的用户标识是否具有使用记录;若不具有使用记录,则将用户标识更新为待修改的用户标识,将修改成功的待修改的用户标识存入用户标识数据库,更新用户标识数据库;若具有使用记录,则输出错误信息,以提示用户待修改的用户标识不可用。

其中,在判断用户标识是否具有使用记录时,判断待修改的用户标识是否被正被使用;若正被使用,则判定待修改的用户标识具有使用记录;若未正被使用,则判断待修改的用户标识是否曾被使用;若是,则判定待修改的用户标识具有使用记录;若否,则判定待修改的用户标识不具有使用记录。

在本实施例中,错误信息包括“该用户标识正在被使用,请更换用户标识”、“该用户标识曾经被使用过,请更换用户标识”、“该用户标识不可用,请更换用户标识”等,在此不作具体限定。

在本实施例中,可以对系统中已经存在的用户账号的进行删除操作,响应于用户的用户账号删除指令,基于用户标识数据库判断待删除用户账号是否为当前系统的系统账号;若是,则判断待删除用户账号是否为特殊账号;若是特殊账号,则删除待删除用户账号,将待删除用户账号的用户标识从用户标识数据库中删除并更新用户标识数据库;若不是特殊账号,则仅删除待删除用户账号;若否,则仅删除待删除用户账号。

其中,如果待删除用户账号为系统用户,需要进一步判断是否为特殊用户,即一些服务指定的用户,这类用户需要部署软件程序包,卸载软件时会同时删除部署该软件程序包的用户账号,如果该软件在安装时使用指定用户标识创建特殊用户,当该软件删除再次安装时,将无法再次指定创建特殊用户,需要将用户标识数据库中的用户标识删除,用于再次安装该软件时可以继续指定创建特殊用户。如果不是特殊用户,不存在部署软件安装包的问题,则无需将用户标识在数据库内删除。

在本实施例中,用户标识以字节形式加密存入用户标识数据库。以字节为单位减小对用户标识数据库存储空间的占用,在被调用时加快调用速度,从而减少系统资源的占用。在加密时可以采用对数据进行置换的方式加密,加密方式包括但不限于上述方式,在此不做具体限定。

图3为申请实施例提供的一种基于Linux的用户标识唯一性实现装置300的结构框图。

如图3所示,基于Linux的用户标识唯一性实现装置300主要包括:

指令接收模块301,用于响应于用户的用户账号创建指令,判断用户标识创建指令中是否包含指定用户标识;

第一判断模块302,用于基于预先设置的用户标识数据库判断指定用户标识是否具有使用记录;

第一创建模块303,用于基于指定用户标识创建用户账号,并将指定用户标识存入用户标识数据库,更新用户标识数据库和用户标识数据库备份文件;

第二判断模块304,用于判断是否存在可用用户标识;

第二创建模块305,用于基于可用用户标识创建用户账号,并将可用用户标识存入用户标识数据库,更新用户标识数据库,或者生成用于向用户提示可用用户标识的提示信息;

第一退出模块306,用于退出;

第一执行模块307,用于执行判断是否有可用用户标识的步骤。

作为本实施例的一种可选实施方式,第二判断模块304具体用于获取当前系统内最小用户标识,判断当前系统内最小用户标识是否具有使用记录;若具有使用记录,则判定存在可用用户标识,并将最小用户标识作为可用用户标识;若不具有使用记录,则将当前系统内最小用户标识作为当前用户标识,对当前用户标识加1;判断加1后的当前用户标识是否具有使用记录;若不具有使用记录,则将加1后的当前用户标识作为当前用户标识,重复对当前用户标识加1的步骤;若具有使用记录,则判断加1后的当前用户标识是否超过最大用户标识;若超过,则判定不存在可用用户标识;若没有超过,则判定存在可用用户标识,并将当前用户标识作为可用用户标识。

作为本实施例的一种可选实施方式,该基于Linux的用户标识唯一性实现装置300还包括:

标识获取模块,用于响应于用户的用户标识修改指令,获取待修改的用户标识;

标识判断模块,用于基于用户标识数据库,判断待修改的用户标识是否具有使用记录;

标识修改模块,用于将用户标识更新为待修改的用户标识,将修改成功的待修改的用户标识存入用户标识数据库,更新用户标识数据库;

标识提示模块,用于输出错误信息,以提示用户待修改的用户标识不可用。

在本可选实施例中,标识判断模块具体用于判断待修改的用户标识是否被正被使用;若正被使用,则判定待修改的用户标识具有使用记录;若未正被使用,则判断待修改的用户标识是否曾被使用;若是,则判定待修改的用户标识具有使用记录;若否,则判定待修改的用户标识不具有使用记录。

作为本实施例的一种可选实施方式,基于Linux的用户标识唯一性实现装置300还包括:

账号判断模块,用于响应于用户的用户账号删除指令,基于用户标识数据库判断待删除用户账号是否为当前系统的系统账号;

特殊账号判断模块,用于判断待删除用户账号是否为特殊账号;

第一删除模块,用于删除待删除用户账号,将待删除用户账号的用户标识从用户标识数据库中删除并更新用户标识数据库;

第二删除模块,用于仅删除待删除用户账号;

第三删除模块,用于仅删除待删除用户账号。

作为本实施例的一种可选实施方式,第一判断模块302具体用于获取“/etc/passwd”文件,基于“/etc/passwd”文件判断指定用户标识是否正在被使用;若是,则判定指定用户标识具有使用记录;若否,则基于用户标识数据库判断是否曾被使用;若曾被使用,则判定指定用户标识具有使用记录;若未曾被使用,则判定指定用户标识不具有使用记录。

作为本实施例的一种可选实施方式,该基于Linux的用户标识唯一性实现装置300用户标识以字节形式加密存入用户标识数据库。

在一个例子中,以上任一装置中的模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个专用集成电路(application specificintegratedcircuit,ASIC),或,一个或多个数字信号处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA),或这些集成电路形式中至少两种的组合。

再如,当装置中的模块可以通过处理元件调度程序的形式实现时,该处理元件可以是通用处理器,例如中央处理器(central processing unit,CPU)或其它可以调用程序的处理器。再如,这些模块可以集成在一起,以片上当前系统(system-on-a-chip,SOC)的形式实现。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

图4为本申请实施例提供的电子设备400的结构框图。

如图4所示,电子设备400包括处理器401和存储器402,还可以进一步包括信息输入/信息输出(I/O)接口403、无线通信模块404中的一种或多种和通信总线405。

其中,处理器401用于控制电子设备400的整体操作,以完成上述的基于Linux的用户标识唯一性实现方法的全部或部分步骤;存储器402用于存储各种类型的数据以支持在电子设备400的操作,这些数据例如可以包括用于在该电子设备400上操作的任何应用程序或方法的指令,以及应用程序相关的数据。该存储器402可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random AccessMemory,SRAM)、电可擦除可编程只读存储器(Electrically Erasable ProgrammableRead-Only Memory,EEPROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、只读存储器(Read-Only Memory,ROM)、磁存储器、快闪存储器、磁盘或光盘中的一种或多种。

I/O接口403为处理器401和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。无线通信模块404用于电子设备400与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(NearField Communication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该无线通信模块404可以包括:Wi-Fi部件,蓝牙部件,NFC部件。

电子设备400可以被一个或多个应用专用集成电路 (Application SpecificIntegrated Circuit,简称ASIC)、数字信号处理器(Digital Signal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field ProgrammableGate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述实施例给出的基于Linux的用户标识唯一性实现方法。

通信总线405可包括一通路,在上述组件之间传送信息。通信总线405可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA (ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。通信总线405可以分为地址总线、数据总线、控制总线等。

本申请还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述的基于Linux的用户标识唯一性实现方法的步骤。

该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器 (R ead-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的申请范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离前述申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中申请的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

技术分类

06120114698820