Bash

通過 bash 腳本添加使用者帳戶的正確方法

  • July 13, 2013

我將這個問題交叉發佈到AskUbuntu,因為我的問題在 Debian/Ubuntu 上似乎最為嚴重,但有人建議我在這裡提問。解決此問題的任何建議方法都應該適用於大多數發行版(例如,openSuse 和 Ubuntu)。這是我現在使用的腳本程式碼:

getent group $MYGROUP
if [ $? -ne 0 ] ; then
   sudo su -c "groupadd $MYGROUP"
fi
sudo su -c "useradd mynewuser -p mypassword -m -g $PRIMARYGRP -G $MYGROUP"

它在 Ubuntu 上創建的使用者帳戶存在幾個問題。

  • 未設置終端提示(不echo $PS1返回任何內容)
  • 箭頭鍵和 Tab 鍵在終端中無法正常工作
  • 密碼似乎不起作用(儘管我仍然不清楚這個問題到底是什麼)
  • 不尊重為該新使用者設置的 /etc/sudoers 權限

相反,如果我使用(而不是 useradd)手動創建使用者,adduser我沒有這些問題。但是我需要一個非 Debian 專有的腳本或通過我的 bash 腳本添加使用者帳戶的方法。

我之前也有關於這個主題的問題,但它與這個問題無關。

問題在於 Debian 上新使用者的預設 shell,/bin/sh因此您習慣使用的大多數功能bash都不存在。嘗試添加-s /bin/bash到您的useradd命令。

您還可以通過編輯永久更改預設外殼/etc/default/useradd

編輯:

自動修改密碼的解決方案(由 MountainX 發現)在這裡

游標鍵和提示問題聽起來像是骨架文件沒有正確複製。新使用者的主目錄是否有.bashrc?

至於密碼,man useradd在 Slack 上告訴我

-p, –password PASSWORD 加密的密碼,由 crypt(3) 返回。預設是禁用密碼。

所以你可能不應該把明文密碼放在那裡。不過,我現在找不到手動呼叫 crypt 的便捷方法,所以也許你需要額外呼叫sudo passwd $mynewuser.

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