
我想透過腳本為 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
不會設定密碼(因此使用者將無法透過密碼登入)。請注意,useradd
和adduser
是兩個不同的指令。
下面應該建立具有自己群組的新用戶,建立其主目錄(在預設位置,因為我們沒有指定任何位置)並複製框架檔案。
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 的密碼欄位中輸入 *(如果您沒有設定密碼,就會發生這種情況)。這將阻止用戶登入。