خودکارسازی مدیریت کاربر و گروه با Bash: راهنمای جامع

معرفی
مدیریت حسابهای کاربری و گروهها برای مهندسان SysOps، به ویژه در محیطی با بسیاری از توسعهدهندگان جدید، یک وظیفه حیاتی است. این مقاله یک اسکریپت Bash را معرفی میکند که برای خودکارسازی این وظایف، تضمین کارایی، ثبات و امنیت طراحی شده است. اسکریپت از یک فایل متنی خوانده میشود، کاربران و گروههایی را که مشخص شده است ایجاد میکند، دایرکتوریهای خانگی را راهاندازی میکند، رمزهای عبور تصادفی تولید میکند، فعالیتها را ثبت میکند و رمزهای عبور را به صورت ایمن ذخیره میکند.
چرا مدیریت کاربر و گروه را خودکار کنیم؟
اتوماسیون در مدیریت کاربر چندین مزیت دارد:
- بهره وری: زمان صرف شده برای کارهای تکراری را کاهش می دهد.
- ثبات: یکنواختی را در تنظیمات کاربر در سراسر سازمان تضمین می کند.
- امنیت: به طور خودکار رمزهای عبور امن تولید می کند و مجوزهای مناسب را تنظیم می کند.
- قابلیت حسابرسی: گزارش دقیقی از اقدامات برای پاسخگویی را حفظ می کند.
اسکریپت Bash: create_users.sh
در اینجا به تفکیک گام به گام اسکریپت آمده است:
#!/bin/bash
# Check if the input file exists
if [ ! -f "$1" ]; then
echo "Error: Input file not found."
exit 1
fi
# Define log and password file locations
LOG_FILE="/var/log/user_management.log"
PASSWORD_FILE="/var/secure/user_passwords.csv"
# Initialize log file if it doesn't exist
if [ ! -f "$LOG_FILE" ]; then
sudo touch "$LOG_FILE"
sudo chown root:root "$LOG_FILE"
sudo chmod 600 "$LOG_FILE"
fi
# Initialize password file if it doesn't exist
if [ ! -f "$PASSWORD_FILE" ]; then
sudo mkdir -p /var/secure
sudo touch "$PASSWORD_FILE"
sudo chown root:root "$PASSWORD_FILE"
sudo chmod 600 "$PASSWORD_FILE"
fi
# Redirect stdout and stderr to the log file
exec > >(sudo tee -a "$LOG_FILE") 2>&1
# Function to check if a user exists
user_exists() {
id "$1" &>/dev/null
}
# Read each line from the input file
while IFS=';' read -r username groups; do
# Trim whitespace
username=$(echo "$username" | tr -d '[:space:]')
groups=$(echo "$groups" | tr -d '[:space:]')
# Check if the user already exists
if user_exists "$username"; then
echo "User $username already exists."
continue
fi
# Create user
sudo useradd -m "$username"
# Create personal group (same as username)
sudo groupadd "$username"
# Add user to personal group
sudo usermod -aG "$username" "$username"
# Create home directory
sudo mkdir -p "/home/$username"
sudo chown "$username:$username" "/home/$username"
# Generate random password
password=$(openssl rand -base64 12)
# Set password for user
echo "$username:$password" | sudo chpasswd
# Log actions
echo "User $username created. Password: $password"
# Store passwords securely
echo "$username,$password" | sudo tee -a "$PASSWORD_FILE"
# Add user to specified groups
if [ -n "$groups" ]; then
IFS=',' read -ra group_list "$groups"
for group in "${group_list[@]}"; do
sudo usermod -aG "$group" "$username"
echo "Added $username to group $group"
done
fi
done "$1"
نحوه استفاده از اسکریپت
-
فایل ورودی را آماده کنید:
یک فایل متنی ایجاد کنید که در آن هر خط از فرمت پیروی کندuser;groups
، با نام های کاربری که با یک نقطه ویرگول از گروه های خود و گروه ها با کاما جدا شده اند.
مثال:
light; sudo,dev,www-data
idimma; sudo
mayowa; dev,www-data
-
اسکریپت را اجرا کنید:
اسکریپت را با فایل ورودی به عنوان آرگومان اجرا کنید:
bash create_users.sh
-
بررسی خروجی:
-
ورود به سیستم فایل: بررسی
/var/log/user_management.log
برای گزارش دقیق اقدامات انجام شده -
فایل رمز عبور: رمزهای عبور به طور ایمن در آن ذخیره می شوند
/var/secure/user_passwords.csv
.
-
ورود به سیستم فایل: بررسی
مزایای اسکریپت
- اتوماسیون: با ایجاد خودکار کاربر باعث صرفه جویی در زمان و کاهش خطای انسانی می شود.
- امنیت: رمزهای عبور امن تولید می کند و مجوزهای مناسب را تنظیم می کند.
- ورود به سیستم: گزارش دقیقی برای ممیزی و عیب یابی ارائه می دهد.
با کارآموزی HNG بیشتر بیاموزید
علاقه مند به تقویت مهارت های خود و کار بر روی پروژه های دنیای واقعی هستید؟ برنامه کارآموزی HNG را بررسی کنید تا از کارشناسان صنعت یاد بگیرید و تجربه ارزشمندی کسب کنید. همچنین میتوانید فرصتهایی را برای استخدام استعدادهای برتر از جامعه HNG کشف کنید.
نتیجه
مدیریت خودکار کاربر با اسکریپت Bash می تواند کارایی و امنیت عملیات IT شما را به میزان قابل توجهی بهبود بخشد. این اسکریپت راهحلی قوی برای مدیریت حسابهای کاربری ارائه میکند و از راهاندازی سازگار و ایمن برای توسعهدهندگان جدید اطمینان میدهد. با استفاده از اتوماسیون، میتوانید بر روی وظایف استراتژیکتر تمرکز کنید، مطمئن باشید که توسعهدهندگان جدید بهطور کارآمد و ایمن نصب میشوند.
برای اسکریپت کامل و جزئیات بیشتر، از مخزن GitHub دیدن کنید.
با خیال راحت نظرات یا سوالات خود را در زیر بنویسید و از خودکارسازی خوشحال شوید!