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

Summarize this content to 400 words in Persian Lang
مدیریت کاربران و گروه ها در یک سیستم لینوکس می تواند یک کار تکراری و مستعد خطا باشد، به خصوص در محیط هایی که کاربران اغلب به سیستم می پیوندند یا آن را ترک می کنند. در این مقاله، من شما را از طریق ایجاد یک اسکریپت Bash راهنمایی میکنم که مدیریت کاربر و گروه را خودکار میکند و از مدیریت امن رمز عبور و ثبت جزئیات اطمینان میدهد.
این وظیفه بخشی از کارآموزی HNG است، یک برنامه فوق العاده که به کارآموزان کمک می کند تا تجربه واقعی را کسب کنند. میتوانید در وبسایت کارآموزی HNG اطلاعات بیشتری در مورد این برنامه کسب کنید یا از طریق صفحه HNG Hire برخی از کارآموزان با استعداد آنها را استخدام کنید.کد منبع را می توان در GitHub من یافت
معرفی
مدیریت کاربر یک وظیفه حیاتی برای مدیران سیستم است. خودکارسازی این فرآیند نه تنها باعث صرفه جویی در زمان می شود، بلکه خطر بروز خطا را نیز کاهش می دهد. این اسکریپت:
ایجاد کاربران از یک فایل ورودی
کاربران را به گروه های مشخص اختصاص دهید.
ایجاد رمزهای عبور تصادفی امن
همه اقدامات را برای اهداف حسابرسی ثبت کنید.
پیش نیازها
یک سیستم لینوکس با پوسته Bash.
sudo امتیاز برای اجرای دستورات اداری
openssl برای تولید رمزهای عبور تصادفی
خرابی اسکریپت
این اسکریپت به طور کامل:
#!/bin/bash
# Check if the input file exists
if [ ! -f “$1” ]; then
echo “Error: Input file not found.”
exit 1
fi
# Ensure log and secure directories are initialized once
LOG_FILE=”/var/log/user_management.log”
PASSWORD_FILE=”/var/secure/user_passwords.csv”
# Initialize log file
if [ ! -f “$LOG_FILE” ]; then
sudo touch “$LOG_FILE”
sudo chown root:root “$LOG_FILE”
fi
# Initialize password file
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 user exists
user_exists() {
id “$1” &>/dev/null
}
# Function to check if a group exists
group_exists() {
getent group “$1” > /dev/null 2>&1
}
# Function to check if a user is in a group
user_in_group() {
id -nG “$1” | grep -qw “$2”
}
# 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.”
else
# Create user
sudo useradd -m “$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”
fi
# Ensure the user’s home directory and personal group exist
sudo mkdir -p “/home/$username”
sudo chown “$username:$username” “/home/$username”
# Split the groups string into an array
IFS=’,’ read -ra group_array “$groups”
# Check each group
for group in “${group_array[@]}”; do
if group_exists “$group”; then
echo “Group $group exists.”
else
echo “Group $group does not exist. Creating group $group.”
sudo groupadd “$group”
fi
if user_in_group “$username” “$group”; then
echo “User $username is already in group $group.”
else
echo “Adding user $username to group $group.”
sudo usermod -aG “$group” “$username”
fi
done
done “$1”
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
چگونه کار می کند
بررسی فایل ورودی: اسکریپت با بررسی وجود فایل ورودی شروع می شود. اگر نه، با یک پیغام خطا خارج می شود.
ورود به سیستم و ایمن سازی اولیه فایل: فایل های لاگ و رمز عبور را مقداردهی اولیه می کند و از داشتن مجوزهای صحیح اطمینان می دهد.
تعاریف تابع: توابع برای بررسی وجود کاربر، وجود گروه و عضویت کاربر در یک گروه تعریف شده است.
پردازش کاربر و گروه: اسکریپت فایل ورودی را خط به خط می خواند، نام کاربری و گروه را پردازش می کند، در صورت نیاز کاربران و گروه ها را ایجاد می کند و کاربران را به گروه ها اختصاص می دهد.
مدیریت رمز عبور: رمزهای عبور تصادفی ایمن تولید و به کاربران جدید اختصاص داده می شود و همه اقدامات ثبت می شوند.
اجرای اسکریپت
فایل ورودی را آماده کنید: فایلی به نام ایجاد کنید input_file.txt با فرمت زیر:
alice;developers,admins
bob;developers
charlie;admins,users
اسکریپت را اجرایی کنید:
chmod +x user_management.sh
اسکریپت را اجرا کنید:
sudo ./user_management.sh input_file.txt
نتیجه
این اسکریپت Bash مدیریت کاربر را در سیستمهای لینوکس ساده میکند، اطمینان میدهد که کاربران با گذرواژههای امن ایجاد میشوند، به گروههای مناسب اختصاص داده میشوند و همه اقدامات برای اهداف ممیزی ثبت میشوند. با خودکار کردن این وظایف، مدیران سیستم می توانند در زمان صرفه جویی کرده و خطاها را کاهش دهند.
با خیال راحت این اسکریپت را مطابق با نیازهای خاص خود سفارشی کنید. خودکارسازی مبارک!
درباره نویسنده
شرلی گواتا یک مهندس با تجربه DevOps با تجربه گسترده در خودکارسازی وظایف مدیریت سیستم است. شرلی گواتا را در GitHub برای مقالات و پروژه های روشنگرتر دنبال کنید.
این پیش نویس های جامع README و مقاله باید به شما کمک کند تا اسکریپت مدیریت کاربر خود را به طور موثر در پلتفرم های مختلف مستندسازی کرده و به اشتراک بگذارید.
مدیریت کاربران و گروه ها در یک سیستم لینوکس می تواند یک کار تکراری و مستعد خطا باشد، به خصوص در محیط هایی که کاربران اغلب به سیستم می پیوندند یا آن را ترک می کنند. در این مقاله، من شما را از طریق ایجاد یک اسکریپت Bash راهنمایی میکنم که مدیریت کاربر و گروه را خودکار میکند و از مدیریت امن رمز عبور و ثبت جزئیات اطمینان میدهد.
این وظیفه بخشی از کارآموزی HNG است، یک برنامه فوق العاده که به کارآموزان کمک می کند تا تجربه واقعی را کسب کنند. میتوانید در وبسایت کارآموزی HNG اطلاعات بیشتری در مورد این برنامه کسب کنید یا از طریق صفحه HNG Hire برخی از کارآموزان با استعداد آنها را استخدام کنید.
کد منبع را می توان در GitHub من یافت
معرفی
مدیریت کاربر یک وظیفه حیاتی برای مدیران سیستم است. خودکارسازی این فرآیند نه تنها باعث صرفه جویی در زمان می شود، بلکه خطر بروز خطا را نیز کاهش می دهد. این اسکریپت:
- ایجاد کاربران از یک فایل ورودی
- کاربران را به گروه های مشخص اختصاص دهید.
- ایجاد رمزهای عبور تصادفی امن
- همه اقدامات را برای اهداف حسابرسی ثبت کنید.
پیش نیازها
- یک سیستم لینوکس با پوسته Bash.
-
sudo
امتیاز برای اجرای دستورات اداری -
openssl
برای تولید رمزهای عبور تصادفی
خرابی اسکریپت
این اسکریپت به طور کامل:
#!/bin/bash
# Check if the input file exists
if [ ! -f "$1" ]; then
echo "Error: Input file not found."
exit 1
fi
# Ensure log and secure directories are initialized once
LOG_FILE="/var/log/user_management.log"
PASSWORD_FILE="/var/secure/user_passwords.csv"
# Initialize log file
if [ ! -f "$LOG_FILE" ]; then
sudo touch "$LOG_FILE"
sudo chown root:root "$LOG_FILE"
fi
# Initialize password file
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 user exists
user_exists() {
id "$1" &>/dev/null
}
# Function to check if a group exists
group_exists() {
getent group "$1" > /dev/null 2>&1
}
# Function to check if a user is in a group
user_in_group() {
id -nG "$1" | grep -qw "$2"
}
# 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."
else
# Create user
sudo useradd -m "$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"
fi
# Ensure the user's home directory and personal group exist
sudo mkdir -p "/home/$username"
sudo chown "$username:$username" "/home/$username"
# Split the groups string into an array
IFS=',' read -ra group_array "$groups"
# Check each group
for group in "${group_array[@]}"; do
if group_exists "$group"; then
echo "Group $group exists."
else
echo "Group $group does not exist. Creating group $group."
sudo groupadd "$group"
fi
if user_in_group "$username" "$group"; then
echo "User $username is already in group $group."
else
echo "Adding user $username to group $group."
sudo usermod -aG "$group" "$username"
fi
done
done "$1"
چگونه کار می کند
- بررسی فایل ورودی: اسکریپت با بررسی وجود فایل ورودی شروع می شود. اگر نه، با یک پیغام خطا خارج می شود.
- ورود به سیستم و ایمن سازی اولیه فایل: فایل های لاگ و رمز عبور را مقداردهی اولیه می کند و از داشتن مجوزهای صحیح اطمینان می دهد.
- تعاریف تابع: توابع برای بررسی وجود کاربر، وجود گروه و عضویت کاربر در یک گروه تعریف شده است.
- پردازش کاربر و گروه: اسکریپت فایل ورودی را خط به خط می خواند، نام کاربری و گروه را پردازش می کند، در صورت نیاز کاربران و گروه ها را ایجاد می کند و کاربران را به گروه ها اختصاص می دهد.
- مدیریت رمز عبور: رمزهای عبور تصادفی ایمن تولید و به کاربران جدید اختصاص داده می شود و همه اقدامات ثبت می شوند.
اجرای اسکریپت
-
فایل ورودی را آماده کنید: فایلی به نام ایجاد کنید
input_file.txt
با فرمت زیر:alice;developers,admins bob;developers charlie;admins,users
-
اسکریپت را اجرایی کنید:
chmod +x user_management.sh
-
اسکریپت را اجرا کنید:
sudo ./user_management.sh input_file.txt
نتیجه
این اسکریپت Bash مدیریت کاربر را در سیستمهای لینوکس ساده میکند، اطمینان میدهد که کاربران با گذرواژههای امن ایجاد میشوند، به گروههای مناسب اختصاص داده میشوند و همه اقدامات برای اهداف ممیزی ثبت میشوند. با خودکار کردن این وظایف، مدیران سیستم می توانند در زمان صرفه جویی کرده و خطاها را کاهش دهند.
با خیال راحت این اسکریپت را مطابق با نیازهای خاص خود سفارشی کنید. خودکارسازی مبارک!
درباره نویسنده
شرلی گواتا یک مهندس با تجربه DevOps با تجربه گسترده در خودکارسازی وظایف مدیریت سیستم است. شرلی گواتا را در GitHub برای مقالات و پروژه های روشنگرتر دنبال کنید.
این پیش نویس های جامع README و مقاله باید به شما کمک کند تا اسکریپت مدیریت کاربر خود را به طور موثر در پلتفرم های مختلف مستندسازی کرده و به اشتراک بگذارید.