برنامه نویسی

خودکارسازی مدیریت حساب کاربری در لینوکس با اسکریپت Bash

مدیریت کاربر بخشی جدایی ناپذیر از Sys Ops Engineer است، زیرا در فعالیت های روزمره مفید است. این معمولاً هنگام ورود اعضای جدید کارکنان مورد نیاز است. در این قسمت مراحل ایجاد و تخصیص کاربران جدید را طی می کنیم.

این بخشی از الزامات کارآموزی HNG است. با کلیک بر روی لینک زیر می توانید در مورد HNG اطلاعات بیشتری کسب کنید.
کارآموزی HNG

فرضیه

مدیریت دستی حساب های کاربری می تواند خسته کننده باشد و اغلب منجر به اشتباه می شود. برای آسان‌تر و قابل اعتمادتر کردن کارها، باید این فرآیند را خودکار کنیم. ما یک اسکریپت به نام “create_users.sh” ایجاد خواهیم کرد که لیستی از نام‌های کاربری و گروه‌ها را از یک فایل متنی مشخص می‌خواند، کاربران و گروه‌ها را ایجاد می‌کند، فهرست‌های اصلی آن‌ها را راه‌اندازی می‌کند، رمزهای عبور تصادفی ایجاد می‌کند و همه چیز را به یک مدیریت ثبت می‌کند. ورود به سیستم فایل. این باعث صرفه جویی در زمان، کاهش خطاها و ثابت نگه داشتن کارها می شود.

پیش نیازها

موارد زیر الزامات مورد نیاز برای ایجاد و اجرای اسکریپت است

  • آشنایی اولیه با دستور لینوکس
  • امتیاز مدیریت
  • ویرایشگر متن مانند Vim، Nano، TextEdit و غیره

بررسی اجمالی

انتظار می رود اسکریپت وظایف زیر را انجام دهد

  1. فهرستی از کاربران و گروه‌ها را از هر فایل متنی می‌خواند.
  2. کاربران را ایجاد می کند و آنها را به گروه های مشخص اختصاص می دهد.
  3. دایرکتوری های خانگی را با مجوزهای مناسب تنظیم کنید.
  4. رمزهای عبور تصادفی را برای کاربران ایجاد می کند.
  5. همه اقدامات را ثبت می کند /var/log/user_management.log.
  6. رمزهای عبور ایجاد شده را به صورت ایمن در آن ذخیره می کند /var/secure/user_passwords.csv.

روش

  • متغیری را برای پذیرش فایل ورودی، فایل لاگ و فایل رمز عبور تعریف کنید
INPUT_FILE="$1"
USER_INPUT_FILE="/var/log/user_management.log"
PASSWORD_FILE="/var/secure/user_passwords.csv"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  • ایجاد توابع برای انجام وظایف
# Function to log messages
log_message() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | sudo tee -a $USER_INPUT_FILE > /dev/null
}

# Function to generate random password
random_password() {    
    
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  • دایرکتوری ها و فایل ها را ایجاد کنید و اجازه دهید
# Create neccessary directories if they do not exist
sudo mkdir -p /var/log
sudo mkdir -p /var/secure

# create log file if it does not exist, and set the neccessary permission
sudo touch $USER_INPUT_FILE
sudo chmod 600 $USER_INPUT_FILE

# create password file if it does not exist, and set the neccessary permission
sudo touch $PASSWORD_FILE
sudo chmod 600 $PASSWORD_FILE
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  • کد زیر فایل را خط به خط می خواند، کاربر را ایجاد می کند، به گروه اضافه می کند و رمز عبور را تنظیم می کند
# Read the input file line by line
while IFS=';' read -r username groups; do
    # Remove whitespace from username and group
    username=$(echo $username | xargs)
    groups=$(echo $groups | xargs)

    # Create the new user 
    if id -u "$username" >/dev/null 2>&1; then
        log_message "User $username already exists. Creation skipped."
    else
        sudo useradd -m -s /bin/bash "$username"
        if [ $? -eq 0 ]; then
            log_message "New user: $username created successfully."
        else
            log_message "Unable to create user: $username."
            continue
        fi
    fi

    # Create the new user personal group
    if ! getent group "$username" >/dev/null 2>&1; then
        sudo groupadd "$username"
        log_message "Personal group $username created successfully"
    fi

    # Add user to group
    sudo usermod -aG "$username" "$username"

    # Add the user to other groups
    IFS=',' read -ra group_array /dev/null 2>&1; then
            sudo groupadd "$group"
            log_message "Group $group created."
        fi
        sudo usermod -aG "$group" "$username"
        log_message "User $username added to group: $group."
    done

    # Generate a random password and set it for the created user
    password=$(random_password)
    echo "$username:$password" | sudo chpasswd
    echo "$username,$password" | sudo tee -a $PASSWORD_FILE > /dev/null

    log_message "Password set for user $username."
done 
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  • پیام ورود به سیستم برای نمایش وضعیت پس از اجرا
log_message "User creation script completed."
echo "User creation process is complete. Check $USER_INPUT_FILE for details"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه

استفاده از اسکریپت bash برای خودکارسازی مدیریت حساب کاربری می‌تواند فرآیند ورود به سیستم را برای کارمندان، کاربران یا حساب‌های جدید بسیار ساده کند. با دنبال کردن مراحل ذکر شده در این مقاله، می‌توانید یک اسکریپت مؤثر ایجاد کنید که اطمینان حاصل کند کاربران ایجاد شده، به گروه‌ها اضافه می‌شوند و رمزهای عبور امن ارائه می‌شوند، همگی در حین ثبت اقدامات برای اهداف شفافیت و ممیزی.

این آموزش توسط HNG امکان پذیر شده است.

می توانید کد bash را https://github.com/hollyphat/Hng11-Stage-1 پیدا کنید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا