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

مدیریت کاربران و گروه ها در یک سیستم لینوکس می تواند یک کار دلهره آور باشد، به خصوص زمانی که مجبور باشید تعداد زیادی کاربر را مدیریت کنید. اتوماسیون کلید ساده کردن این وظایف تکراری، تضمین ثبات و کاهش احتمال خطا است. در این مقاله، ما یک اسکریپت bash را بررسی خواهیم کرد که ایجاد کاربران و گروهها را خودکار میکند، فهرستهای اصلی را تنظیم میکند، رمزهای عبور تصادفی ایجاد میکند و همه اقدامات را ثبت میکند.
ما در هر مرحله از اسکریپت قدم می زنیم، منطق پشت کد را توضیح می دهیم، و پیوندهایی به برنامه کارآموزی HNG ارائه می کنیم، که فرصتی عالی برای توسعه دهندگان نوپا است تا مهارت های خود را افزایش دهند.
چرا مدیریت کاربر را خودکار کنیم؟
قبل از فرو رفتن در اسکریپت، بیایید درک کنیم که چرا خودکارسازی مدیریت کاربر سودمند است:
- ثبات: اتوماسیون تضمین می کند که کاربران با تنظیمات مشابه ایجاد می شوند و خطر خطاهای پیکربندی را کاهش می دهد.
- بهره وری: پردازش دسته ای حساب های کاربری باعث صرفه جویی در زمان نسبت به ورود دستی می شود.
- امنیت: تنظیم خودکار رمزهای عبور ایمن و مجوزهای مناسب امنیت را افزایش می دهد.
- ورود به سیستم: نگه داشتن گزارش از تمام اقدامات به حسابرسی و عیب یابی کمک می کند.
اسکریپت
در زیر اسکریپت 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 مراجعه کنید و نحوه استخدام استعدادهای برتر را بررسی کنید.