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

Summarize this content to 400 words in Persian Lang
معرفی
مدیریت کاربران و گروهها در یک سیستمعامل شبه یونیکس میتواند کار خستهکنندهای باشد، بهویژه زمانی که با چندین کاربر سروکار دارید. برای سادهسازی این فرآیند، میتوانیم از یک اسکریپت Bash برای ایجاد خودکار کاربران و گروهها، راهاندازی فهرستهای راهنما، تولید رمزهای عبور تصادفی و ثبت همه اقدامات استفاده کنیم. این پست وبلاگ شما را از طریق یک اسکریپت جامع Bash راهنمایی می کند که این وظایف را انجام می دهد.
نمای کلی اسکریپت
اسکریپتی که می خواهیم در مورد آن صحبت کنیم عملکردهای زیر را انجام می دهد:
Create Users and Groups: فایلی حاوی نام کاربری و نام گروه را می خواند، کاربران و گروه ها را در صورت عدم وجود آنها ایجاد می کند و کاربران را به گروه های مشخص شده اختصاص می دهد.
راهاندازی فهرستهای اصلی: فهرستهای خانگی را با مجوزها و مالکیت مناسب برای هر کاربر تنظیم میکند.
Generate Random Passwords: رمزهای عبور تصادفی را برای کاربران ایجاد می کند و آنها را به صورت ایمن ذخیره می کند.
Log Actions: تمام اقدامات را برای بررسی و عیب یابی به /var/log/user_management.log ثبت می کند.
ذخیره رمزهای عبور امن: رمزهای عبور ایجاد شده را در /var/secure/user_passwords.csv با دسترسی محدود ذخیره می کند.
اسکریپت
این اسکریپت کامل Bash است:
#!/bin/bash
LOG_FILE=”/var/log/user_management.log”
PASSWORD_FILE=”/var/secure/user_passwords.csv”
# Ensure /var/secure exists and has the correct permissions
mkdir -p /var/secure
chmod 700 /var/secure
touch “$PASSWORD_FILE”
chmod 600 “$PASSWORD_FILE”
# Function to log messages
log_message() {
echo “$(date ‘+%Y-%m-%d %H:%M:%S’) – $1” | tee -a “$LOG_FILE”
}
# Function to generate random passwords
generate_password() {
local password_length=12
tr -dc A-Za-z0-9 /urandom | head -c $password_length
}
# Function to add users, groups and set up home directories
setup_user() {
local username=$1
local groups=$2
# Create the user
if ! id -u “$username” &>/dev/null; then
password=$(generate_password)
useradd -m -s /bin/bash “$username”
echo “$username:$password” | chpasswd
log_message “User $username created.”
# Store the username and password
echo “$username,$password” >> “$PASSWORD_FILE”
log_message “Password for $username stored.”
else
log_message “User $username already exists.”
fi
# Create groups and add user to groups
IFS=’,’ read -ra group_array /dev/null; then
groupadd “$group”
log_message “Group $group created.”
fi
usermod -aG “$group” “$username”
log_message “Added $username to $group.”
done
# Set up the home directory
local home_dir=”/home/$username”
chown “$username”:”$username” “$home_dir”
chmod 700 “$home_dir”
log_message “Home directory for $username set up with appropriate permissions.”
}
# Main script
if [ $# -eq 0 ]; then
log_message “Usage: $0 ”
exit 1
fi
input_file=$1
log_message “Starting users and groups script.”
# Read the input file and process each line
while IFS=’;’ read -r username groups; do
setup_user “$username” “$groups”
done
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
توضیح
راه اندازی فایل ورود به سیستم و رمز عبور: اسکریپت تضمین می کند که پوشه /var/secure با مجوزهای مناسب وجود دارد. فایل رمز عبور /var/secure/user_passwords.csv را ایجاد می کند و تنظیم می کند
مجوزها تا فقط مالک فایل بتواند آن را بخواند.عملکرد Logging: تابع log_message پیامها را با یک مهر زمانی به /var/log/user_management.log ثبت میکند و یک دنباله ممیزی از اقدامات انجام شده توسط اسکریپت ارائه میکند.
تابع تولید رمز عبور: تابع generate_password یک رمز عبور تصادفی از 12 کاراکتر، متشکل از حروف و ارقام بزرگ و کوچک ایجاد می کند.
تابع Setup User: تابع setup_user یک کاربر را در صورتی که قبلا وجود نداشته باشد ایجاد می کند، برای آنها رمز عبور ایجاد و تنظیم می کند، در صورت لزوم گروه ایجاد می کند، کاربر را به گروه های مشخص شده اضافه می کند و فهرست اصلی خود را با مجوزهای مناسب تنظیم می کند.
اسکریپت اصلی: بخش اصلی اسکریپت یک فایل ورودی حاوی نام کاربری را می خواند؛ ورودی ها را گروه بندی می کند، هر خط را پردازش می کند و تابع setup_user را برای هر کاربر فراخوانی می کند.
استفاده
فایل ورودی را آماده کنید: یک فایل متنی (مثلا input.txt) با فرمت زیر ایجاد کنید، که در آن هر خط شامل یک نام کاربری و لیستی از گروههایی است که با یک نقطه ویرگول از هم جدا شدهاند:
user1;group1,group2
user2;group3,group4
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
اسکریپت را اجرا کنید: اسکریپت را در یک فایل ذخیره کنید (مثلا create_user.sh)، کاربر را به root sudo -s تغییر دهید، آن را قابل اجرا کنید و آن را با مسیر فایل ورودی خود به عنوان آرگومان اجرا کنید:
sudo -s
chmod +x create_user.sh
./create_user.sh input.txt
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
توجه داشته باشید که اجرای اسکریپت بهعنوان کاربر ریشه برای اطمینان از داشتن مجوزهای لازم برای ایجاد کاربران، تغییر گروهها و نوشتن در فایلهای گزارش و رمز عبور ضروری است.
اسکریپت را تایید کنید
~ cd /var/log/
~ ls
~ user_management.log
~ cd /var/secure/
~ ls
~ user_passwords.csv
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
نتیجه
این اسکریپت Bash مدیریت کاربر را با ایجاد خودکار کاربران و گروهها، راهاندازی دایرکتوریهای خانگی، تولید گذرواژههای تصادفی و ثبت تمام اقدامات سادهتر میکند. با دنبال کردن مراحل ذکر شده در بالا، می توانید به طور موثر حساب های کاربری را در سیستم خود مدیریت کنید و در عین حال امنیت و یک مسیر حسابرسی واضح را حفظ کنید.
برای استعدادها
کارآموزی HNGاستعدادهای درخشان را استخدام کنید
معرفی
مدیریت کاربران و گروهها در یک سیستمعامل شبه یونیکس میتواند کار خستهکنندهای باشد، بهویژه زمانی که با چندین کاربر سروکار دارید. برای سادهسازی این فرآیند، میتوانیم از یک اسکریپت Bash برای ایجاد خودکار کاربران و گروهها، راهاندازی فهرستهای راهنما، تولید رمزهای عبور تصادفی و ثبت همه اقدامات استفاده کنیم. این پست وبلاگ شما را از طریق یک اسکریپت جامع Bash راهنمایی می کند که این وظایف را انجام می دهد.
نمای کلی اسکریپت
اسکریپتی که می خواهیم در مورد آن صحبت کنیم عملکردهای زیر را انجام می دهد:
-
Create Users and Groups: فایلی حاوی نام کاربری و نام گروه را می خواند، کاربران و گروه ها را در صورت عدم وجود آنها ایجاد می کند و کاربران را به گروه های مشخص شده اختصاص می دهد.
-
راهاندازی فهرستهای اصلی: فهرستهای خانگی را با مجوزها و مالکیت مناسب برای هر کاربر تنظیم میکند.
-
Generate Random Passwords: رمزهای عبور تصادفی را برای کاربران ایجاد می کند و آنها را به صورت ایمن ذخیره می کند.
-
Log Actions: تمام اقدامات را برای بررسی و عیب یابی به /var/log/user_management.log ثبت می کند.
-
ذخیره رمزهای عبور امن: رمزهای عبور ایجاد شده را در /var/secure/user_passwords.csv با دسترسی محدود ذخیره می کند.
اسکریپت
این اسکریپت کامل Bash است:
#!/bin/bash
LOG_FILE="/var/log/user_management.log"
PASSWORD_FILE="/var/secure/user_passwords.csv"
# Ensure /var/secure exists and has the correct permissions
mkdir -p /var/secure
chmod 700 /var/secure
touch "$PASSWORD_FILE"
chmod 600 "$PASSWORD_FILE"
# Function to log messages
log_message() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE"
}
# Function to generate random passwords
generate_password() {
local password_length=12
tr -dc A-Za-z0-9 /urandom | head -c $password_length
}
# Function to add users, groups and set up home directories
setup_user() {
local username=$1
local groups=$2
# Create the user
if ! id -u "$username" &>/dev/null; then
password=$(generate_password)
useradd -m -s /bin/bash "$username"
echo "$username:$password" | chpasswd
log_message "User $username created."
# Store the username and password
echo "$username,$password" >> "$PASSWORD_FILE"
log_message "Password for $username stored."
else
log_message "User $username already exists."
fi
# Create groups and add user to groups
IFS=',' read -ra group_array /dev/null; then
groupadd "$group"
log_message "Group $group created."
fi
usermod -aG "$group" "$username"
log_message "Added $username to $group."
done
# Set up the home directory
local home_dir="/home/$username"
chown "$username":"$username" "$home_dir"
chmod 700 "$home_dir"
log_message "Home directory for $username set up with appropriate permissions."
}
# Main script
if [ $# -eq 0 ]; then
log_message "Usage: $0 "
exit 1
fi
input_file=$1
log_message "Starting users and groups script."
# Read the input file and process each line
while IFS=';' read -r username groups; do
setup_user "$username" "$groups"
done
توضیح
-
راه اندازی فایل ورود به سیستم و رمز عبور: اسکریپت تضمین می کند که پوشه /var/secure با مجوزهای مناسب وجود دارد. فایل رمز عبور /var/secure/user_passwords.csv را ایجاد می کند و تنظیم می کند
-
مجوزها تا فقط مالک فایل بتواند آن را بخواند.
عملکرد Logging: تابع log_message پیامها را با یک مهر زمانی به /var/log/user_management.log ثبت میکند و یک دنباله ممیزی از اقدامات انجام شده توسط اسکریپت ارائه میکند. -
تابع تولید رمز عبور: تابع generate_password یک رمز عبور تصادفی از 12 کاراکتر، متشکل از حروف و ارقام بزرگ و کوچک ایجاد می کند.
-
تابع Setup User: تابع setup_user یک کاربر را در صورتی که قبلا وجود نداشته باشد ایجاد می کند، برای آنها رمز عبور ایجاد و تنظیم می کند، در صورت لزوم گروه ایجاد می کند، کاربر را به گروه های مشخص شده اضافه می کند و فهرست اصلی خود را با مجوزهای مناسب تنظیم می کند.
-
اسکریپت اصلی: بخش اصلی اسکریپت یک فایل ورودی حاوی نام کاربری را می خواند؛ ورودی ها را گروه بندی می کند، هر خط را پردازش می کند و تابع setup_user را برای هر کاربر فراخوانی می کند.
استفاده
فایل ورودی را آماده کنید: یک فایل متنی (مثلا input.txt) با فرمت زیر ایجاد کنید، که در آن هر خط شامل یک نام کاربری و لیستی از گروههایی است که با یک نقطه ویرگول از هم جدا شدهاند:
user1;group1,group2
user2;group3,group4
اسکریپت را اجرا کنید: اسکریپت را در یک فایل ذخیره کنید (مثلا create_user.sh)، کاربر را به root sudo -s تغییر دهید، آن را قابل اجرا کنید و آن را با مسیر فایل ورودی خود به عنوان آرگومان اجرا کنید:
sudo -s
chmod +x create_user.sh
./create_user.sh input.txt
توجه داشته باشید که اجرای اسکریپت بهعنوان کاربر ریشه برای اطمینان از داشتن مجوزهای لازم برای ایجاد کاربران، تغییر گروهها و نوشتن در فایلهای گزارش و رمز عبور ضروری است.
اسکریپت را تایید کنید
~ cd /var/log/
~ ls
~ user_management.log
~ cd /var/secure/
~ ls
~ user_passwords.csv
نتیجه
این اسکریپت Bash مدیریت کاربر را با ایجاد خودکار کاربران و گروهها، راهاندازی دایرکتوریهای خانگی، تولید گذرواژههای تصادفی و ثبت تمام اقدامات سادهتر میکند. با دنبال کردن مراحل ذکر شده در بالا، می توانید به طور موثر حساب های کاربری را در سیستم خود مدیریت کنید و در عین حال امنیت و یک مسیر حسابرسی واضح را حفظ کنید.
برای استعدادها
کارآموزی HNG
استعدادهای درخشان را استخدام کنید