簡體   English   中英

BASH 腳本添加用戶名、密碼和多個組

[英]BASH script to add username, password and multiple groups

假設:

我有一個名為users.txt的文件

username:password:groups
user1:password:group1,group2,group3
user2:password:group3
user3:password:group1,group3
user4:password:group2,group3

代碼

#!/bin/bash
FILENAME="users.txt"

while IFS=':' read USERNAME PASSWORD GROUPS
do

    echo "USERNAME" $USERNAME "PASSWORD" $PASSWORD "GROUPS" $GROUPS

done < "$FILENAME"

我希望能夠添加一堆用戶來進行 samba 共享。 我有一個完整的用戶列表要輸入。 我在大多數情況下都遇到了小組問題。

兩個最大的問題是,如何將組作為一個字符串獲取以及如何加密密碼。

我已經閱讀了本網站上的所有教程,但都沒有奏效。

簡單易懂的代碼真的很有幫助。 謝謝。

更新完成的工作示例

#!/bin/bash
# set filename
FILENAME="users.txt"

# loop through file 
while IFS=':' read USERNAME PASSWORD GROUPNAMES
do

    # add user and assign groups
    echo " "
    echo "ADDING USER: " $USERNAME
    useradd $USERNAME -G $GROUPNAMES

    # add password
    echo -e "$PASSWORD\n$PASSWORD\n" | passwd $USERNAME

    # add user to samba
    echo -e "$PASSWORD\n$PASSWORD\n" | smbpasswd -a $USERNAME

done < "$FILENAME"

不要使用 GROUPS 作為變量名:它是系統已經使用的只讀變量。 只需更改此變量的名稱即可。

我不確定密碼加密部分,但我可以提供有關組的建議。 在你的循環內,你可以這樣做:

read -ra groups_array -d, <<<"$groups"

現在您有一個包含每個組作為元素的數組。 您可以使用擴展"${groups_array[@]}"將它們作為單獨的參數傳遞給命令,或者使用"${groups_array[0]}""${groups_array[1]}"等單獨訪問它們。

請注意,我使用的是小寫變量名 - 這是故意的。 大寫名稱應保留供 shell 使用,否則您將面臨覆蓋重要名稱的風險。

上面的優秀腳本:我使用代碼共同創建了這個工作版本。

#!/bin/bash

此方法僅在一個文件中包含 bash 代碼和數據

安裝此文件,運行它並立即將其刪除,以備將來與新服務器等一起使用。

函數 setupUser()
{

首先,在 linux 和 samba 中刪除舊的用戶實例

回聲“刪除用戶:” $1 smbpasswd -d $1 userdel $1

現在在 linux 和 samba 中添加新用戶

echo "添加用戶:"$1 useradd $1 -G nogroup echo -e "$2\\n$2\\n" | passwd $1 echo -e "$2\\n$2\\n" | smbpasswd -a $1 }

#------------------------------------------------- --------------------------

setupUser tom secret setupUser dick secret setupUser harry secret

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM