我维护一个为 debian、RedHat 和 SUSE Linux 发行版构建的软件包。安装后脚本的一部分如下:
/usr/sbin/useradd -r -d /var/opt/CampbellSci/LoggerNet loggernet
此命令似乎可以在其他发行版中使用,但在 SUSE 下,不会创建“loggernet”组,而是在“root”组下创建主目录。根据 useradd 的手册页,除非使用 -g -N 或 -U 选项,否则应该自动创建组。 SUSE 无法创建适当的组有什么原因吗?
答案1
手册页说的有些不同。引用自 OpenSUSE 13:
默认情况下,还将为新用户创建一个组(请参阅
-g
,-N
,-U
, 和USERGROUPS_ENAB
)。
和
-g
,--gid
团体
用户初始登录组的组名或组号。组名必须存在。组编号必须引用已存在的组。如果未指定,则行为
useradd
将取决于USERGROUPS_ENAB
中的变量/etc/login.defs
。如果该变量设置为是的(或者-U
/--user-group
在命令行上指定),将为该用户创建一个组,其名称与其登录名相同。如果变量设置为 no(或-N
/--no-user-group
在命令行上指定),useradd
会将新用户的主要组设置为 中 GROUP 变量指定的值/etc/default/useradd
,默认情况下为 100。
在我的 OpenSUSE 13 VM 中,设置/etc/login.defs
为(默认)不。
在 OpenSUSE 12 中,此功能不存在。