多用户管理数据库

更新时间:
2024-05-13
下载文档

多用户管理数据库

用户操作

在 SylixOS 中调用 user_db_uadd 函数可以创建一个新的账户,该函数创建账户需要访问/etc/passwd 文件和/etc/shadow 文件,因此添加新的账户需要/etc 目录下存在这两个文件。

#include <userdb.h>
int  user_db_uadd(const char  *user, const char *passwd, 
                  int enable, uid_t uid, gid_t  gid, 
                  const char *comment, const char  *home);

函数 user_db_uadd 原型分析:

  • 此函数成功返回 0,失败返回-1 并设置错误号。
  • 参数 user 是用户名。
  • 参数 passwd 是用户密码。
  • 参数 enable 表示是否使能用户。
  • 参数 uid 是用户 ID。
  • 参数 gid 是用户组 ID。
  • 参数 comment 是注释信息。
  • 参数 home 是用户主目录。

需要注意的是,调用 user_db_uadd 函数只能在存在的用户组中创建新的账户,如果指定的组 ID 不存在,则创建新账户将失败。

调用 user_db_umod 函数可以修改一个存在账户的使能状态、注释和用户主目录。

#include <userdb.h>
int  user_db_umod(const char  *user, int enable,
                  const char *comment, const char  *home);

函数 user_db_umod 原型分析:

  • 此函数成功返回 0,失败返回-1 并设置错误号。
  • 参数 user 是用户名。
  • 参数 enable 表示是否使能用户。
  • 参数 comment 是注释信息。
  • 参数 home 是用户主目录。

调用 user_db_uget 函数可以获得指定账户的信息,如下描述:

#include <userdb.h>
int  user_db_uget(const char  *user, int *enable,
                  uid_t *uid, gid_t *gid, 
                  char *comment, size_t sz_com, 
                  char  *home, size_t sz_home);

函数 user_db_uget 原型分析:

  • 此函数成功返回 0,失败返回-1 并设置错误号。
  • 参数 user 是用户名。
  • 输出参数 enable 表示是否使能用户。
  • 输出参数 uid 是用户 ID。
  • 输出参数 gid 是用户组 ID。
  • 输出参数 comment 返回注释信息。
  • 参数 sz_com 是注释缓冲区大小。
  • 输出参数 home 返回用户主目录。
  • 参数 sz_home 是用户主目录缓冲区大小。

调用 user_db_udel 函数可以删除一个存在的账户。

#include <userdb.h>
int  user_db_udel(const char  *user);

函数 user_db_udel 原型分析:

  • 此函数成功返回 0,失败返回-1 并设置错误号。
  • 参数 user 是用户名。

组操作

下面函数提供了 SylixOS 中用户组的操作方法,user_db_gadd 函数向 SylixOS 中添加一个新的用户组,user_db_gget 函可以获得指定用户组 group 的组 ID,user_db_gdel 函数将删除一个指定的组 group

#include <userdb.h>
int  user_db_gadd(const char  *group, gid_t  gid);
int  user_db_gget(const char  *group, gid_t *gid);
int  user_db_gdel(const char  *group);

以上函数原型分析:

  • 以上函数成功时返回 0,失败时返回-1 并设置错误号。
  • 参数 group 是组名。
  • 参数 gid 是组 ID,user_db_gget 函数的 gid 参数用来存放返回的组 ID。

密码操作

#include <userdb.h>
int  user_db_pmod(const char  *user, 
                  const char  *passwd_old, 
                  const char  *passwd_new);

函数 user_db_pmod 原型分析:

  • 此函数成功返回 0,失败返回-1 并设置错误号。
  • 参数 user 是用户名。
  • 参数 passwd_old 是先前的密码。
  • 参数 passwd_new 是新的密码。

调用 user_db_pmod 函数可以修改指定用户的密码,特殊地,如果参数 passwd_new 为 NULL,则清除用户密码。

用户 Shell 命令

在 UNIX 系统中,root 账号具有“至高无上”的权利,也就是说,具有了 root 权限的账户可以做任何事情,甚至将系统破坏。同样 SylixOS 也具有类似的权限管理机制,具有了 SylixOS root 权限的账户可以做 SylixOS 中的任何事情(例如:删除其他账户或者底层的工作)。因此用户管理要求一般用户的操作权限低于 root 用户的权限,下面是 SylixOS 中添加用户、修改用户、删除用户的 Shell 命令。

uadd 命令可以向 SylixOS 中添加新用户:

【命令格式】

uadd name password enable[0 / 1] uid gid comment homedir

【常用选项】


【参数说明】

name :创建的帐户名
password :新账户密码
enable :是否使能新账户(0不使能,1使能)
uid :新账户ID
gid :新账户组ID
comment :注释信息
homedir :新账户主目录(如/home/flags)

下面命令向 SylixOS 添加新账户 flags:

# uadd flags 123456 1 10 2 a_new_user /home/flags

上面命令显示:新账户 flags、账户密码是 123456、使能这个账户(1)、账户 ID 是 10、组 ID 是 2、账户的主目录是/home/flags,注释标注这是一个新的账户。

注:新用户创建之前必须先创建指定的用户组。

umod 命令可以修改一个存在的账户:

【命令格式】

umod name enable[0 / 1] comment homedir

【常用选项】


【参数说明】

name :账户名
enable :是否使能账户(0不使能,1使能)
comment :注释信息
homedir :账户主目录

下面是如何修改一个账户的信息,命令显示将账户 flags 的状态置为禁止,置为禁止状态的账户将不具有操作 SylixOS 的权限。

# umod flags 0 a_mod_user /home/flags

udel 命令可以删除一个存在的账户:

【命令格式】

udel name

【常用选项】


【参数说明】

name :账户名

gadd命令添加一个新的用户组到 SylixOS:

【命令格式】

gadd group_name gid

【常用选项】


【参数说明】

group_name :用户组名
gid :用户组ID

下面命令向 SylixOS 添加一个新组 grp 组 ID 为 11:

# gadd grp 11

gdel 命令删除一个存在的组,需要注意的是,被删除的组必须是一个不存在用户的组(即空组):

【命令格式】

gdel  group_name

【常用选项】


【参数说明】

group_name :用户组名

下面命令删除组 grp:

# gdel grp

pmod 命令可以修改指定用户的密码:

【命令格式】

pmod name old_password new_password

【常用选项】


【参数说明】

name :用户名
old_password :先前密码
new_password :新密码

下面命令修改用户 flags 的密码 123456 为 abcd:

# pmod flags 123456 abcd
文档内容是否对您有所帮助?
有帮助
没帮助