为什么 useradd 不起作用?

为什么 useradd 不起作用?

我正在尝试解决我尝试创建的这个 RPM 的问题。基本上,我试图做到这一点,如果mark系统上不存在,我想创建一个标记用户帐户。我%pre在 .spec 文件中的一个块中找到了这一点:

id mark &>/dev/null
if [ "$?" != "0" ]; then
    echo "Adding 'mark' user..."
    useradd -g $GROUP_ID \
        -s /bin/bash -d mark
fi

现在,在我构建 RPM 并运行 后rpm -ivh iPackage-1.0.0-1.noarch.rpm,我检查输出并看到“正在添加‘mark’用户...”,但当我id mark在命令行中运行时,我得到的是id: mark: No such user。而且,/etc/passwd也没有 mark 帐户。有什么想法吗?

编辑:请参阅我的答案。事实证明,需要定义变量。

答案1

在我的发行版中useradd应该这样调用:

# useradd -ms /bin/bash mark

-m如果您想创建主目录则使用(请参阅man useradd)。

也作为马特·H说,修复那个空间。

答案2

我是个白痴。&2>/dev/null我的代码中有一个,所以我没有看到我的错误。修复它之后,我发现我使用的变量没有为 的切换-g定义useradd

我已经编辑了这个问题以进一步说明我正在做什么。

答案3

useradd必须作为 运行root

我没有使用基于 RPM 的 Linux,但我猜测您的预安装脚本是以低权限用户身份运行的。

相关内容