如何從腳本新增具有隨機或無效密碼的 Linux 用戶

如何從腳本新增具有隨機或無效密碼的 Linux 用戶

我想透過腳本為 Linux 系統添加用戶,但我不想發明或關心密碼。這應該會自動完成。

目標是產生 ssh 金鑰,並且該使用者只需要遠端登入。或者,該用戶將透過 sudo 用戶使用sudo su - thatuser

我想省去每次創建此類用戶時發明和輸入一些安全密碼的麻煩,並且也可以透過腳本執行此操作。

沒有人應該能夠以該用戶的身份登錄,所以我的想法是他得到一個好的隨機密碼,但沒有人知道。

我可以編寫一個生成隨機內容的腳本,但也許有內建的東西?或只是停用密碼(這樣就無法使用密碼登錄,但可以使用金鑰進行 ssh 登入並且sudo su - thatuser運作正常。

編輯:已經有一些答案了,很好,但我仍然不知道該怎麼做。劇本會是什麼樣子?

它的行為應該像 adduser 一樣,並創建所有標準內容(例如 std.home 目錄、複製的骨架、具有相同名稱的群組)

編輯2:最後,在您的幫助下,我找到了一個可行的解決方案,我想分享它。這是一個我稱之為「adduser-nopasswd」的腳本,我將其放入 /usr/local/sbin (這是一個好地方嗎?)並且它只能由 root 執行。它需要一個參數,即新群組和使用者的名稱:

#!/bin/sh -e
# the -e makes the script exit immediateley if one command fails
NAME=$1
groupadd $NAME
useradd --create-home -d /home/$NAME --shell /bin/bash -g $NAME $NAME

對這個功能有什麼意見嗎?

答案1

如果您不指定密碼,則useradd不會設定密碼(因此使用者將無法透過密碼登入)。請注意,useraddadduser是兩個不同的指令。

下面應該建立具有自己群組的新用戶,建立其主目錄(在預設位置,因為我們沒有指定任何位置)並複製框架檔案。

useradd --create-home <user>

然後,您只需.ssh在其主目錄中建立該目錄(為了安全起見,SSH 將需要此目錄),chmod並將0700用戶公鑰放入其中.ssh/authorized_keys(私鑰/公鑰對應由用戶他/她自己生成,在他/她自己的電腦)。

如果您想要停用現有帳戶的密碼,可以使用下列命令。

usermod --lock <user>

答案2

實用程式 /usr/sbin/useradd 總是為我建立使用者而不需要密碼。我編寫了許多腳本,這些腳本會取得另一個系統的 /etc/passwd 並為我建立使用者。

或者,如果您查看 Mercurial-server 的文檔,您將看到如何設定許多 SSH 金鑰(客戶端)以在伺服器端僅以一個使用者身分執行程式。

答案3

# cat user-pw_list
john:p455W0rD
geany:p455W0rD


# cat CreateUsers.sh
#!/bin/bash
#
# filename: CreateUsers.sh
# usage: cat "User:passwd" | $0
#
set -e
# set -x
while read ; do
  USER=${REPLY%%:*}
  PWD=${REPLY##*:}
  # alternative for random passwd, where $RANDOM is a bash function
  #PWD=${REPLY%%:*}$RANDOM$RANDOM

  echo -e "adding User $USER "
  # for disabled users: /usr/sbin/nologin, otherwise /bin/bash
  /usr/sbin/useradd -c automaticUser -m -k/dev/null -s /usr/sbin/nologin $USER
  echo "$USER:$PWD" | chpasswd --md5 $USER

  ## also add user to samba:
  #echo -e "$PWD\n$PWD" | pdbedit -t -u $USER
done

好的,讓我們加入我們的用戶:

cat user-pw_list | ./CreateUsers.sh

答案4

在 /etc/shadow 的密碼欄位中輸入 *(如果您沒有設定密碼,就會發生這種情況)。這將阻止用戶登入。

相關內容