ถามเรื่อง การ adduser ทีละมากๆ

ผมต้องการ adduser ทีละหลายๆคน(1000-2000)อยากทำเป็น File คำสั่งต้องทำเป็นรูปแบบใดครับ

ผมไม่มีความรู้ว่า การเพิ่มผู้ใช้ในระบบมากขนาดนั้น เหมาะสมที่จะใช้ระบบ user ในลินุกซ์ปกติหรือไม่
แต่หากต้องการทำจริง ๆ อาจเขียนสคริปต์ขึ้นมาจัดการเองได้ครับ

ยกตัวอย่างการสร้างสคริปต์อย่างง่ายคือ

  • สร้างไฟล์ข้อมูลของกรุ๊ป มีรูปแบบเป็น GROUPNAME:GID คือ ชื่อกรุ๊ป และไอดีของกรุ๊ป
    $ vi group-data
    mygroup:1001
  • สร้างไฟล์ข้อมูลของยูสเซอร์ มีรูปแบบเป็น GROUPNAME:UID:USERNAME:PASSWORD คือ ชื่อกรุ๊ป ไอดีผู้ใช้ ชื่อผู้ใช้ และรหัสผ่านตามลำดับ
    $ vi users-data
    mygroup:1011:user1:user1password
    mygroup:1012:user2:user2password
    mygroup:1013:user3:user3password
    ...
  • สคริปต์ตั้งชื่อว่า gen-group-users.sh จะเป็นดังนี้
    $ vi gen-group-users.sh
    #!/bin/bash
    if ! [ -f group-data ]; then
        echo "File $1/group-data not exist"
        exit 1
    fi
    if ! [ -f users-data ]; then
        echo "File $1/user-data not exist"
        exit 1
    fi
    if ! [ $UID == 0 ]; then
        echo "Please run as root"
        exit 1
    fi
    
    SYSGROUP="lp,dialout,cdrom,floppy,audio,video,plugdev,lpadmin,sudo"
    
    #CREATE GROUP
    cat group-data | while read LINE; do
        GROUPNAME=`echo $LINE | cut -d : -f 1`
        GROUPID=`echo $LINE | cut -d : -f 2`
    done
    
    #CREATE USER
    cat users-data | while read LINE; do
        GROUPNAME=`echo $LINE | cut -d : -f 1`
        USERID=`echo $LINE | cut -d : -f 2`
        USERNAME=`echo $LINE | cut -d : -f 3`
        PASSWORD=`echo $LINE | cut -d : -f 4`
        /usr/sbin/useradd -g $GROUPNAME -u $USERID -m -d /home/$USERNAME \
            -G $SYSGROUP -s /bin/bash $USERNAME
        echo $USERNAME:$PASSWORD$SUFFIX >> pass.txt
    
        #FOR SAMBA USER
        #(echo $PASSWORD$SUFFIX ; echo $PASSWORD$SUFFIX) | smbpasswd -a -s $USERNAME
    
    done
    #SET ALL USERS PASSWORD
    /usr/sbin/chpasswd < pass.txt
    rm -rf pass.txt
    

    ทำให้รันได้

    $ chmod 755 gen-group-users.sh

    โดย

    • SYSGROUP เป็นกรุ๊ปของระบบ ที่จะให้ผู้ใช้ในชุดนี้เข้าเป็นสมาชิก
    • -m คือยึดเอาโครงสร้างไดเรกทอรี่ของระบบ (ดูที่ /etc/skel)
    • -s คือให้เชลล์เป็น /bin/bash

    เป็นต้น

สั่งรันด้วยคำสั่ง

$ ./gen-group-users.sh

สิ่งที่สคริปต์นี้ยังขาดคือ

  • การตรวจสอบการมีอยู่ของกลุ่มเก่าและผู้ใช้เก่า
  • หากมีผู้ใช้เก่า ควรลบทิ้งหรือนำข้อมูลใน /home/olduser1 กลับมาใช้หรือไม่
Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้