我能想到的最接近的是:
useradd --home / -r --shell /sbin/nologin someuser
但这会在 /etc/htpasswd 中创建一个条目,如下所示:
someuser:x:100:100::/:/sbin/nologin
我希望那个“/”消失,这样它看起来像这样:
someuser:x:100:100:::/sbin/nologin
这可以通过 usermod 实现:
usermod -d '' someuser
但我认为这有点倒退了。
有任何想法吗?
答案1
首先,我必须同意吉姆的观点,即您应该非常清楚创建此类用户帐户的动机。
话虽如此:
useradd -d /REPLACEME someuser && perl -p -i -e 's/\/REPLACEME//;' /etc/passwd
当然,这是假设 /REPLACEME 没有在其他任何地方用作有效的主目录。更复杂但更精确的表达式:
's/(someuser:.*:)\/REPLACEME(:.*)/$1$2/'
将确保只有上面 useradd 创建的用户被修改。
答案2
确实,这并不倒退。没有登录目录的账户无法直接登录。它可以拥有资源和文件。你想做什么?
如果没有 --home,useradd 会抱怨吗?
您可以直接使用 vi 或 vim 添加用户。但你必须非常小心。您还提前添加了任何组。