برنامه نویسی

ایجاد و مدیریت کاربران و گروه ها در لینوکس با اسکریپت های Bash: راهنمای کارآمد 🚀🐧

Summarize this content to 400 words in Persian Lang
به مدیریت کاربر لینوکس خوش آمدید! در یک سازمان در حال رشد، مدیریت دستی حساب های کاربری و گروه ها می تواند به سرعت خسته کننده و مستعد خطا شود. برای ساده‌سازی این فرآیند و حفظ امنیت و بهره‌وری، اتوماسیون کلیدی است. 🛠️💪

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

در این مقاله، ما به شما نشان خواهیم داد که چگونه یک اسکریپت برای خودکارسازی فرآیند ایجاد کاربر و گروه ایجاد کنید – یک کار رایج برای هر مهندس SysOps. بیایید وارد شویم و گردش کار شما را ساده کنیم! 🌟

پیش نیازها

لینوکس یا اوبونتو در حال اجرا در VM (جعبه مجازی)، Docker، AWS Ec2.
دانش اولیه دستورات لینوکس و برنامه نویسی Bash.
امتیازات ریشه برای اجرای اسکریپت.
درک اولیه از اسکریپت نویسی پوسته و مدیریت کاربر در لینوکس

مرحله 1: ایجاد فایل کاربری یک فایل txt. ایجاد کنید که در آن کاربران شما لیست شوند و گروه هایی که باید به آنها اضافه شوند. یک فایل ساده و آسان برای خواندن توصیه می شود. برای این مقاله، یک فایل نمونه user.txt ایجاد شده است و به صورت user;groups قالب بندی می شود

مثال

Adeshile;sudo,dev,www-data
Mayowa;sudo
Kunle;dev,www-data

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

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

خط اول در مثال بالا Adeshile کاربر و گروه ها هستند sudo, dev, www-data.

مرحله 2: فایل اسکریپت را ایجاد کنید ویرایشگر کد خود را باز کنید و یک فایل به عنوان مثال ایجاد کنید create_users.sh، این را می توان با استفاده از ترمینال خود با اجرای زیر در دایرکتوری ریشه خود ایجاد کرد:

touch create_users.sh

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

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

نکته: فایل اسکریپت ایجاد شده منطق کاربر و گروه را کنترل می کند مرحله 1

مرحله 3: پیاده سازی اسکریپتابتدا باید امتیاز مدیریتی کاربر اسکریپت را بررسی کنیم.

بررسی کنید که آیا اولین آرگومان ارسال شده است:

اسکریپت با یک خط shebang و بررسی امتیازات ریشه شروع می شود تا از مجوزهای لازم برای مدیریت کاربر و گروه اطمینان حاصل شود.

if (( “$UID != 0” ))
then
echo “Error: script requires root privilege”
fi
exit 1

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

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

شبانگ (#!/bin/bash): نشان می دهد که اسکریپت باید در پوسته Bash اجرا شود.امتیازات ریشه را بررسی کنید: بررسی می کند که آیا اسکریپت توسط کاربر root اجرا شده است. اگر نه، خطا را چاپ می کند و خارج می شود.

سپس، اسکریپت آرگومان های ورودی را پردازش می کند و وجود و نوع فایل را بررسی می کند (text/plain) حاوی داده های کاربر

# Save all arguments in an array
ARGS=(“$@”)

# Check whether no arguments are supplied
if [ “$#” -eq 0 ]; then
echo “No arguments supplied”
exit 1
fi

# Define a variable for the file
FILE=${ARGS[0]}

# Check if the file exists
if [ ! -f “$FILE” ]; then
echo “Error: File $FILE does not exist.”
exit 1
fi

# Get the MIME type and check if it is text/plain
file_type=$(file -b –mime-type “$FILE”)
if [[ “$file_type” != “text/plain” ]]; then
echo “Error: required file type is not text/plain”
exit 1
fi

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

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

رسیدگی به استدلال: آرگومان های اسکریپت را ضبط می کند و وجود آن را بررسی می کند.بررسی وجود فایل: بررسی می کند که آیا فایل مشخص شده وجود دارد.بررسی نوع MIME: مطمئن می شود که فایل یک فایل متنی ساده است.

توابع ثبت و نوشتن داده هامن از این تابع در زیر استفاده کردم تا با وارد کردن تمام اقدامات کاربر، همه اقدامات را وارد کنم /var/log/user_management.log

# Logging and writing data
log() {
sudo printf “$*\n” >> $log_path
}

# Function to save user data
user_data() {
sudo printf “$1,$2\n” >> $3
}

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

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

ایجاد رمزهای عبور تصادفیgenpasswd تابع برای ایجاد یک رمز عبور تصادفی امن با طول مشخص (پیش‌فرض 16 کاراکتر) برای کاربر استفاده می‌شود.

genpasswd() {
local l=$1
[ “$l” == “” ] && l=16
tr -dc A-Za-z0-9_

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

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

پردازش هر خط در فایل users.txt: بلوک کد زیر هر خط را می خواند users.txt فایل و دریافت کنید username و user groups.

# Create user function
create_user() {
username=”$1″
password=$(genpasswd)
if ! id -u “$username” >/dev/null 2>&1; then
sudo useradd -m -s /bin/bash $username
echo “$username:$password” | sudo chpasswd
msg=”User ‘$username’ created with the password ‘$password'”
echo $msg
log $msg
dir=/home/$username/$user_pass
create_file_directory $dir
user_data $username $password $dir
sudo chgrp $username $dir
sudo chmod 640 $dir
fi
}

# Create group function
create_group() {
if ! getent group “$1″ >/dev/null; then
sudo groupadd $1
msg=”Group created ‘$1′”
echo $msg
log $msg
fi
}

# Add user to group function
add_user_to_group() {
sudo usermod -aG $2 $1
msg=”‘$1’ added to ‘$2′”
echo $msg
log $msg
}

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

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

بلوک کد بالا شامل توابع زیر است: create_user Function: یک کاربر با فهرست اصلی ایجاد می کند و رمز عبور را تنظیم می کند.create_group Function: اگر گروهی از قبل وجود نداشته باشد، ایجاد می کند.add_user_to_group Function: کاربر را به یک گروه مشخص اضافه می کند.

کاربر و رمز عبور ایجاد می شود و سپس جزئیات با استفاده از مسیر زیر در فهرست کاربری ذخیره می شود: user home directory]/var/secure/user_passwords.txt

داده های کاربر فایل را می خواند و کاربران و گروه ها را بر اساس آن ایجاد می کند.

# Read the FILE
while IFS= read -r line || [ -n “$line” ]; do
username=$(printf “%s” “$line” | cut -d ‘;’ -f 1)
echo “—– Process started for: ‘$username’ —–”
create_user $username
usergroups=$(printf “%s” “$line” | cut -d ‘;’ -f 2)
for group in ${usergroups//,/ } ; do
create_group $group
add_user_to_group $username $group
done
echo “—– Process Done with ‘$username’ —–”
done

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

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

مرحله 4: فایل اسکریپت را اجرا کنید

وقت آن است که اسکریپت خود را آزمایش کنیم تا مطمئن شویم کد ما کار می کند.

را اجرا کنید .txt با استفاده از دستور زیر در ترمینال خود فایل کنید.

bash create_users.sh users.txt

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

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

نتیجه زیر باید نمایش داده شود:

root@32cb601ed360:~# bash create_users.sh users.txt
File and path created: /var/log/user_management.log
—– Process started for: ‘Adeshile’ —–
‘Adeshile’ added to ‘sudo’
‘Adeshile’ added to ‘dev’
‘Adeshile’ added to ‘www-data’
—– Process Done with ‘Adeshile’ —–
—– Process started for: ‘Mayowa’ —–
‘Mayowa’ added to ‘sudo’
—– Process Done with ‘Mayowa’ —–
—– Process started for: ‘Kunle’ —–
‘Kunle’ added to ‘dev’
‘Kunle’ added to ‘www-data’
—– Process Done with ‘Kunle’ —–

User ‘Adeshile’ created with the password ‘mx8XszQDRbm1Rqp5’
‘Adeshile’ added to ‘sudo’
‘Adeshile’ added to ‘dev’
‘Adeshile’ added to ‘www-data’
User ‘Mayowa’ created with the password ‘ucBhqg4j0B69byEn’
‘Mayowa’ added to ‘sudo’
User ‘Kunle’ created with the password ‘YSM99v3iRQb6dFwh’
‘Kunle’ added to ‘dev’
‘Kunle’ added to ‘www-data’
‘Adeshile’ added to ‘sudo’
‘Adeshile’ added to ‘dev’
‘Adeshile’ added to ‘www-data

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

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

برای دیدن همه گروه های ایجاد شده اجرا کنید:

sudo cat /etc/group

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

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

برای دیدن همه کاربران و گروه هایی که به آنها تعلق دارند اجرا کنید:

sudo cat /etc/passwd

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

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

اجرای کامل کد من را می توان در Github: Creating and Managing Users پیدا کرد

کارآموزی HNGبرای اطلاعات بیشتر در مورد کارآموزی HNG، به[HNGInternship(https://hngtech/internship)مراجعهکنیدواگرمی‌خواهیدفریلنسرهاوتوسعه‌دهندگانکلاسجهانیرااستخدامکنید،HNGHireرابررسیکنید[HNGInternship(https://hngtech/internship)andifyouwanttohireworldclassfreelancersanddeveloperscheck:HNGHire

از اینکه مطالعه کردید متشکریم، لطفاً حتماً بازخورد بگذارید تا در خدمت خواننده من باشم

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

به مدیریت کاربر لینوکس خوش آمدید! در یک سازمان در حال رشد، مدیریت دستی حساب های کاربری و گروه ها می تواند به سرعت خسته کننده و مستعد خطا شود. برای ساده‌سازی این فرآیند و حفظ امنیت و بهره‌وری، اتوماسیون کلیدی است. 🛠️💪

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

در این مقاله، ما به شما نشان خواهیم داد که چگونه یک اسکریپت برای خودکارسازی فرآیند ایجاد کاربر و گروه ایجاد کنید – یک کار رایج برای هر مهندس SysOps. بیایید وارد شویم و گردش کار شما را ساده کنیم! 🌟

پیش نیازها

  1. لینوکس یا اوبونتو در حال اجرا در VM (جعبه مجازی)، Docker، AWS Ec2.
  2. دانش اولیه دستورات لینوکس و برنامه نویسی Bash.
  3. امتیازات ریشه برای اجرای اسکریپت.
  4. درک اولیه از اسکریپت نویسی پوسته و مدیریت کاربر در لینوکس

مرحله 1: ایجاد فایل کاربری
یک فایل txt. ایجاد کنید که در آن کاربران شما لیست شوند و گروه هایی که باید به آنها اضافه شوند. یک فایل ساده و آسان برای خواندن توصیه می شود. برای این مقاله، یک فایل نمونه user.txt ایجاد شده است و به صورت user;groups قالب بندی می شود

مثال

Adeshile;sudo,dev,www-data
Mayowa;sudo
Kunle;dev,www-data
وارد حالت تمام صفحه شوید

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

خط اول در مثال بالا Adeshile کاربر و گروه ها هستند sudo, dev, www-data.

مرحله 2: فایل اسکریپت را ایجاد کنید
ویرایشگر کد خود را باز کنید و یک فایل به عنوان مثال ایجاد کنید create_users.sh، این را می توان با استفاده از ترمینال خود با اجرای زیر در دایرکتوری ریشه خود ایجاد کرد:

touch create_users.sh 
وارد حالت تمام صفحه شوید

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

نکته: فایل اسکریپت ایجاد شده منطق کاربر و گروه را کنترل می کند مرحله 1

مرحله 3: پیاده سازی اسکریپت
ابتدا باید امتیاز مدیریتی کاربر اسکریپت را بررسی کنیم.

بررسی کنید که آیا اولین آرگومان ارسال شده است:

  • اسکریپت با یک خط shebang و بررسی امتیازات ریشه شروع می شود تا از مجوزهای لازم برای مدیریت کاربر و گروه اطمینان حاصل شود.
 if (( "$UID != 0" ))
then
    echo "Error: script requires root privilege"
fi
exit 1
وارد حالت تمام صفحه شوید

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

شبانگ (#!/bin/bash): نشان می دهد که اسکریپت باید در پوسته Bash اجرا شود.
امتیازات ریشه را بررسی کنید: بررسی می کند که آیا اسکریپت توسط کاربر root اجرا شده است. اگر نه، خطا را چاپ می کند و خارج می شود.

سپس، اسکریپت آرگومان های ورودی را پردازش می کند و وجود و نوع فایل را بررسی می کند (text/plain) حاوی داده های کاربر

# Save all arguments in an array
ARGS=("$@")

# Check whether no arguments are supplied
if [ "$#" -eq 0 ]; then
    echo "No arguments supplied"
    exit 1
fi

# Define a variable for the file
FILE=${ARGS[0]}

# Check if the file exists
if [ ! -f "$FILE" ]; then
    echo "Error: File $FILE does not exist."
    exit 1
fi

# Get the MIME type and check if it is text/plain
file_type=$(file -b --mime-type "$FILE")
if [[ "$file_type" != "text/plain" ]]; then
    echo "Error: required file type is not text/plain"
    exit 1 
fi

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

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

رسیدگی به استدلال: آرگومان های اسکریپت را ضبط می کند و وجود آن را بررسی می کند.
بررسی وجود فایل: بررسی می کند که آیا فایل مشخص شده وجود دارد.
بررسی نوع MIME: مطمئن می شود که فایل یک فایل متنی ساده است.

توابع ثبت و نوشتن داده ها
من از این تابع در زیر استفاده کردم تا با وارد کردن تمام اقدامات کاربر، همه اقدامات را وارد کنم /var/log/user_management.log

# Logging and writing data
log() {
    sudo printf "$*\n" >> $log_path
}

# Function to save user data
user_data() {
    sudo printf "$1,$2\n" >> $3
}

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

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

ایجاد رمزهای عبور تصادفی
genpasswd تابع برای ایجاد یک رمز عبور تصادفی امن با طول مشخص (پیش‌فرض 16 کاراکتر) برای کاربر استفاده می‌شود.

genpasswd() { 
    local l=$1
        [ "$l" == "" ] && l=16
        tr -dc A-Za-z0-9_ 
وارد حالت تمام صفحه شوید

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

پردازش هر خط در فایل users.txt:
بلوک کد زیر هر خط را می خواند users.txt فایل و دریافت کنید username و user groups.

# Create user function
create_user() {
    username="$1"
    password=$(genpasswd)
    if ! id -u "$username" >/dev/null 2>&1; then
        sudo useradd -m -s /bin/bash $username
        echo "$username:$password" | sudo chpasswd
        msg="User '$username' created with the password '$password'"
        echo $msg
        log $msg
        dir=/home/$username/$user_pass
        create_file_directory $dir
        user_data $username $password $dir
        sudo chgrp $username $dir
        sudo chmod 640 $dir
    fi
}

# Create group function
create_group() {
    if ! getent group "$1" >/dev/null; then
        sudo groupadd $1
        msg="Group created '$1'"
        echo $msg
        log $msg
    fi
}

# Add user to group function
add_user_to_group() {
    sudo usermod -aG $2 $1
    msg="'$1' added to '$2'"
    echo $msg
    log $msg
}

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

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

بلوک کد بالا شامل توابع زیر است:
create_user Function: یک کاربر با فهرست اصلی ایجاد می کند و رمز عبور را تنظیم می کند.
create_group Function: اگر گروهی از قبل وجود نداشته باشد، ایجاد می کند.
add_user_to_group Function: کاربر را به یک گروه مشخص اضافه می کند.

کاربر و رمز عبور ایجاد می شود و سپس جزئیات با استفاده از مسیر زیر در فهرست کاربری ذخیره می شود:
user home directory]/var/secure/user_passwords.txt

داده های کاربر فایل را می خواند و کاربران و گروه ها را بر اساس آن ایجاد می کند.

# Read the FILE
while IFS= read -r line || [ -n "$line" ]; do
    username=$(printf "%s" "$line" | cut -d ';' -f 1)
    echo "----- Process started for: '$username' -----"
    create_user $username
    usergroups=$(printf "%s" "$line" | cut -d ';' -f 2)
    for group in ${usergroups//,/ } ; do 
        create_group $group
        add_user_to_group $username $group
    done
    echo "----- Process Done with '$username' -----"
done 
وارد حالت تمام صفحه شوید

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

مرحله 4: فایل اسکریپت را اجرا کنید

وقت آن است که اسکریپت خود را آزمایش کنیم تا مطمئن شویم کد ما کار می کند.

را اجرا کنید .txt با استفاده از دستور زیر در ترمینال خود فایل کنید.

bash create_users.sh users.txt
وارد حالت تمام صفحه شوید

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

نتیجه زیر باید نمایش داده شود:

root@32cb601ed360:~# bash create_users.sh users.txt
File and path created: /var/log/user_management.log
----- Process started for: 'Adeshile' -----
'Adeshile' added to 'sudo'
'Adeshile' added to 'dev'
'Adeshile' added to 'www-data'
----- Process Done with 'Adeshile' -----
----- Process started for: 'Mayowa' -----
'Mayowa' added to 'sudo'
----- Process Done with 'Mayowa' -----
----- Process started for: 'Kunle' -----
'Kunle' added to 'dev'
'Kunle' added to 'www-data'
----- Process Done with 'Kunle' -----

User 'Adeshile' created with the password 'mx8XszQDRbm1Rqp5'
'Adeshile' added to 'sudo'
'Adeshile' added to 'dev'
'Adeshile' added to 'www-data'
User 'Mayowa' created with the password 'ucBhqg4j0B69byEn'
'Mayowa' added to 'sudo'
User 'Kunle' created with the password 'YSM99v3iRQb6dFwh'
'Kunle' added to 'dev'
'Kunle' added to 'www-data'
'Adeshile' added to 'sudo'
'Adeshile' added to 'dev'
'Adeshile' added to 'www-data
وارد حالت تمام صفحه شوید

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

برای دیدن همه گروه های ایجاد شده اجرا کنید:

sudo cat /etc/group
وارد حالت تمام صفحه شوید

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

برای دیدن همه کاربران و گروه هایی که به آنها تعلق دارند اجرا کنید:

sudo cat /etc/passwd 
وارد حالت تمام صفحه شوید

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

اجرای کامل کد من را می توان در Github: Creating and Managing Users پیدا کرد

کارآموزی HNG
برای اطلاعات بیشتر در مورد کارآموزی HNG، به[HNGInternship(https://hngtech/internship)مراجعهکنیدواگرمی‌خواهیدفریلنسرهاوتوسعه‌دهندگانکلاسجهانیرااستخدامکنید،HNGHireرابررسیکنید[HNGInternship(https://hngtech/internship)andifyouwanttohireworldclassfreelancersanddeveloperscheck:HNGHire

از اینکه مطالعه کردید متشکریم، لطفاً حتماً بازخورد بگذارید تا در خدمت خواننده من باشم

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

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

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

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

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