未使用 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.

相關內容