Shell

未使用 useradd 選擇預設 shell

  • April 8, 2020

我安裝了新版本的 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

我可能做錯了什麼導致這種情況?

奇怪的是,昨天我也在執行 Ubuntu 16.04 LTS 的伺服器上發生了這種情況。

關於為什麼會發生這種情況,我沒有具體的答案,但這裡有一個對我有用的快速解決方案:

不要使用useraddadduser而是使用!

描述

adduseraddgroup 根據命令行選項和配置資訊將使用者和組添加到系統中/etc/adduser.conf。 它們是和 程序useradd等低級工具更友好的前端 ,預設選擇符合 Debian 策略的 UID 和 GID 值,創建具有骨架配置的主目錄,執行自定義腳本和其他功能。groupadd``usermod

至於sudo,您必須註銷該使用者 - 然後重新登錄 - 才能使新組設置生效。

這是 vs 的一個很好的**連結**。useradd``adduser

這是 Ubuntu 中的一個已知錯誤useradd(由特定於 Ubuntu 的更新檔添加)。它忽略/etc/default/useradd…中指定的所有設置

maulinglawns 的回答所示,解決方法是adduser改用它,這是在 Debian 衍生產品中添加非系統使用者的推薦工具。

引用自:https://unix.stackexchange.com/questions/321216