برنامه نویسی

مدیریت کاربر و گروه را با اسکریپت Bash به صورت خودکار انجام دهید

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

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

چرا مدیریت کاربر را خودکار کنیم؟
قبل از فرو رفتن در اسکریپت، بیایید درک کنیم که چرا خودکارسازی مدیریت کاربر سودمند است:

  1. ثبات: اتوماسیون تضمین می کند که کاربران با تنظیمات مشابه ایجاد می شوند و خطر خطاهای پیکربندی را کاهش می دهد.
  2. بهره وری: پردازش دسته ای حساب های کاربری باعث صرفه جویی در زمان نسبت به ورود دستی می شود.
  3. امنیت: تنظیم خودکار رمزهای عبور ایمن و مجوزهای مناسب امنیت را افزایش می دهد.
  4. ورود به سیستم: نگه داشتن گزارش از تمام اقدامات به حسابرسی و عیب یابی کمک می کند.

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

#!/bin/bash

# Script to create users and groups from a given text file
# Usage: bash create_users.sh 
# Example: bash create_users.sh users.txt

# Log file
LOG_FILE="/var/log/user_management.log"
PASSWORD_FILE="/var/secure/user_passwords.txt"

# Check if the input file is provided
if [ $# -ne 1 ]; then
  echo "Usage: $0 "
  exit 1
fi

INPUT_FILE=$1

# Ensure the log and password files exist
touch $LOG_FILE
mkdir -p /var/secure
touch $PASSWORD_FILE
chmod 600 $PASSWORD_FILE

log_action() {
  echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> $LOG_FILE
}

create_user() {
  local username=$1
  local groups=$2

  # Create the user's personal group
  if ! getent group $username > /dev/null 2>&1; then
    groupadd $username
    log_action "Created group $username"
  else
    log_action "Group $username already exists"
  fi

  # Create user
  if ! id -u $username > /dev/null 2>&1; then
    useradd -m -g $username -s /bin/bash $username
    log_action "Created user $username"
  else
    log_action "User $username already exists"
    return
  fi

  # Assign additional groups to the user
  IFS=',' read -ra group_array  "$groups"
  for group in "${group_array[@]}"; do
    group=$(echo $group | xargs) # Remove leading/trailing whitespaces
    if ! getent group $group > /dev/null 2>&1; then
      groupadd $group
      log_action "Created group $group"
    fi
    usermod -aG $group $username
    log_action "Added user $username to group $group"
  done

  # Generate a random password for the user
  local password=$(openssl rand -base64 12)
  echo "$username:$password" | chpasswd
  log_action "Set password for user $username"

  # Store the password securely
  echo "$username,$password" >> $PASSWORD_FILE
}

while IFS=';' read -r username groups; do
  username=$(echo $username | xargs) # Remove leading/trailing whitespaces
  groups=$(echo $groups | xargs)     # Remove leading/trailing whitespaces
  create_user $username "$groups"
done $INPUT_FILE

log_action "User creation script completed"
وارد حالت تمام صفحه شوید

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

شکستن اسکریپت

هدر اسکریپت و استفاده

فیلمنامه با یک شبنگ شروع می شود (#!/bin/bash، نشان می دهد که باید در پوسته bash اجرا شود. اگر اسکریپت با آرگومان‌های صحیح اجرا نشود، یک پیام استفاده ارائه می‌شود، تا اطمینان حاصل شود که کاربران می‌دانند چگونه آن را به درستی اجرا کنند.

# Check if the input file is provided
if [ $# -ne 1 ]; then
  echo "Usage: $0 "
  exit 1
fi
وارد حالت تمام صفحه شوید

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

فایل های لاگ و رمز عبور

تعریف می کنیم LOG_FILE و PASSWORD_FILE برای ثبت اقدامات و ذخیره ایمن رمزهای عبور. اسکریپت تضمین می کند که این فایل ها و دایرکتوری ها با مجوزهای مناسب ایجاد می شوند.

# Log file
LOG_FILE="/var/log/user_management.log"
PASSWORD_FILE="/var/secure/user_passwords.txt"

# Ensure the log and password files exist
touch $LOG_FILE
mkdir -p /var/secure
touch $PASSWORD_FILE
chmod 600 $PASSWORD_FILE
وارد حالت تمام صفحه شوید

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

تابع ورود به سیستم

را log_action() تابع، پیام‌ها را با مُهر زمانی در فایل گزارش ثبت می‌کند و رکوردی از اقدامات انجام شده توسط اسکریپت را ارائه می‌کند.

log_action() {
  echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> $LOG_FILE
}
وارد حالت تمام صفحه شوید

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

تابع ایجاد کاربر

را create_user() تابع ایجاد کاربران و گروه های شخصی آنها را مدیریت می کند. بررسی می کند که آیا یک گروه یا کاربر از قبل وجود دارد یا خیر و اگر وجود نداشته باشد آنها را ایجاد می کند. کاربران را به گروه های اضافی مشخص شده در فایل ورودی اختصاص می دهد و یک رمز عبور تصادفی برای هر کاربر ایجاد می کند.

create_user() {
  local username=$1
  local groups=$2

  # Create the user's personal group
  if ! getent group $username > /dev/null 2>&1; then
    groupadd $username
    log_action "Created group $username"
  else
    log_action "Group $username already exists"
  fi

  # Create user
  if ! id -u $username > /dev/null 2>&1; then
    useradd -m -g $username -s /bin/bash $username
    log_action "Created user $username"
  else
    log_action "User $username already exists"
    return
  fi

  # Assign additional groups to the user
  IFS=',' read -ra group_array  "$groups"
  for group in "${group_array[@]}"; do
    group=$(echo $group | xargs) # Remove leading/trailing whitespaces
    if ! getent group $group > /dev/null 2>&1; then
      groupadd $group
      log_action "Created group $group"
    fi
    usermod -aG $group $username
    log_action "Added user $username to group $group"
  done

  # Generate a random password for the user
  local password=$(openssl rand -base64 12)
  echo "$username:$password" | chpasswd
  log_action "Set password for user $username"

  # Store the password securely
  echo "$username,$password" >> $PASSWORD_FILE
}
وارد حالت تمام صفحه شوید

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

حلقه اصلی

اسکریپت فایل ورودی را خط به خط می‌خواند، هر فضای خالی پیشرو/پس از نام‌های کاربری و گروه‌ها را برش می‌دهد و فراخوانی می‌کند. create_user() برای هر خط در فایل ورودی

while IFS=';' read -r username groups; do
  username=$(echo $username | xargs) # Remove leading/trailing whitespaces
  groups=$(echo $groups | xargs)     # Remove leading/trailing whitespaces
  create_user $username "$groups"
done $INPUT_FILE
وارد حالت تمام صفحه شوید

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

اجرا و ثبت

پس از پردازش فایل ورودی، یک پیام تکمیل ثبت می شود که نشان می دهد اجرای اسکریپت به پایان رسیده است.

log_action "User creation script completed"
وارد حالت تمام صفحه شوید

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

نتیجه

خودکارسازی مدیریت کاربر و گروه با اسکریپت bash نه تنها وظایف اداری را ساده می کند، بلکه ثبات و امنیت را نیز افزایش می دهد. با پیروی از این راهنما، می توانید حساب های کاربری و گروه های موجود در سیستم خود را به طور موثر مدیریت کنید.

برای اطلاعات بیشتر در مورد فرصت های کارآموزی و یادگیری نحوه استخدام استعدادها از برنامه کارآموزی HNG، به وب سایت کارآموزی HNG مراجعه کنید و نحوه استخدام استعدادهای برتر را بررسی کنید.

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

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

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

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