未使用 useradd 选择默认 shell

未使用 useradd 选择默认 shell

我安装了新版本的 Ubuntu 16.04.1,并尝试通过创建新的用户帐户root。我已将SHELL行更改/etc/default/useradd为如下:

SHELL=/bin/bash

(之前读过/bin/sh

执行useradd -D提供以下输出:

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

然后我尝试创建一个用户,如下所示:

useradd -m -G sudo -c "David Buckley" david

但默认的 shell 仍然是/bin/sh.更具体地说,该/etc/passwd文件内容如下:

david:x:1000:1000:David Buckley:/home/david:

稍微相关的一点是,新用户不会收到 sudo 访问权限。给定 groups david sudo,并且该/etc/sudoers文件包含以下行(未注释):

# Allow members of group sudo to execute any command
sudo    ALL=(ALL:ALL) ALL

我可能做错了什么导致这种情况?

答案1

这是一个已知错误在 Ubuntu 中useradd(通过特定于 Ubuntu 的补丁添加)。它忽略/etc/default/useradd...中指定的所有设置

解决方法,如中所示莫林劳恩斯的回答,就是使用adduser,这是在 Debian 衍生品中添加非系统用户的推荐工具。

答案2

奇怪的是,昨天我在运行 Ubuntu 16.04 LTS 的服务器上也发生了这种情况。

我没有具体的答案为什么发生这种情况,但这里有一个对我有用的快速解决方案:
不要使用useraddadduser而是使用!

描述

adduseraddgroup 根据命令行选项和配置信息将用户和组添加到系统中/etc/adduser.conf。它们是低级工具(如useraddgroupaddusermod 程序)更友好的前端,默认情况下选择符合 Debian 策略的 UID 和 GID 值、创建具有骨架配置的主目录、运行自定义脚本和其他功能。

至于sudo,您必须注销该用户,然后重新登录,新的组设置才能生效。

这是一个良好的链接useraddVS adduser.

相关内容