为什么useradd不起作用?


0

我正试图找出我想要创建的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,我检查输出并看到“添加'标记'用户...”,但是当我跑 id mark 在命令行上,我明白了 id: mark: No such user。也, /etc/passwd 也没有标记帐户。有任何想法吗?

编辑:看我的回答。事实证明,需要定义变量。


1
您的脚本中存在错误。在结束']'之前添加另一个空格。并确保以root身份运行此脚本。
Matt H

另一个错误是 useradd 命令行显然是不完整的(除非这是一个不寻常的变体 useradd )。 @Pat:请复制粘贴您的实际代码,并说出您要定位的分发版。
Gilles

Answers:


0

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

# useradd -ms /bin/bash mark

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

也作为 马特H. 说,修好那个空间。


0

我是个白痴。我曾有一个 &2>/dev/null 在我的代码中,所以我没有看到我的错误。解决之后,我发现我使用的变量没有定义 -g 开关 useradd

我编辑了这个问题,以进一步证明我在做什么。


0

useradd 必须以 root

我不使用基于RPM的Linux,但我猜你的预安装脚本是作为一个权限不足的用户运行的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.