每当我搜索如何创建组时,示例总是指向第 8 章(即 shell)命令。当我查看常见系统调用列表(即维基百科页面中列出的那些)时,我看到了设置和获取组 ID 的命令,但没有详细说明它们是如何创建的。
我发现一些代码似乎获取了该/etc/groups
文件的文件系统锁,但某些系统(即Android)没有此文件。
操作系统如何知道什么是组?它纯粹是文件和进程条目的元数据吗?
use*_*489 36
内核不知道什么是组。它只知道组 ID。没有必要为内核“创建”一个组,您只需分配一个组ID(所有这对于用户来说也是如此)。
现在,完整的操作系统(内核之外)确实关心组和用户。通常,通过查找它们,可以在名称(组、登录名)和 id 之间来回转换/etc/group
,/etc/passwd
但也可以使用其他选项,如 中列出的/etc/nssswitch.conf
;最终,库调用(不是系统调用)getpwent
(和其他 getpw*)和getgrent
(和 getgr*)通过配置为凭据源的任何内容进行转换。
因此,您只能找到 shell 命令来创建用户和组,因为这就是它的完成方式。没有系统调用,因为内核不跟踪该信息。
(从技术上讲,也有 GUI 界面来创建它们,但这与 shell 命令没有什么不同。)
Linux 内核 (android) 的某些用途动态创建用户和组。再次强调,这是由用户模式 android 监控系统管理的,而不是由内核管理的。
归档时间: |
|
查看次数: |
1377 次 |
最近记录: |