برنامه نویسی

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

Summarize this content to 400 words in Persian Lang

معرفی

این مقاله یک اسکریپت bash (GitHub Repo) را توضیح می‌دهد که برای ایجاد خودکار حساب کاربری لینوکس از یک فایل متنی حاوی کاربران مذکور و همچنین فهرستی از گروه(های) تکمیلی طراحی شده است. این اسکریپت باید کاربران و گروه هایی را همانطور که در بخش پیش نیاز مشخص شده است ایجاد کند، دایرکتوری های خانگی را با مجوزها و مالکیت مناسب راه اندازی کند، رمزهای عبور تصادفی را برای کاربران ایجاد کند و همه اقدامات را در یک فایل ثبت کند. علاوه بر این، اسکریپت باید رمزهای عبور ایجاد شده را به صورت ایمن در یک فایل متنی ذخیره کند.

پیش نیازها

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

برای اجرا یا استفاده از اسکریپت به نکات زیر توجه کنید:

اطمینان حاصل کنید که از امتیازات sudo برخوردار هستید زیرا مدیریت کاربر و گروه معمولاً به دسترسی ریشه نیاز دارد، یعنی اسکریپت را با sudo یا به صورت روت اجرا کنید.
این اسکریپت برای توزیع اوبونتو نوشته شده است، اما همچنان برای سایر نسخه های لینوکس کار می کند.
هر خط در فایل متنی که به عنوان آرگومان به اسکریپت ارسال می شود باید به صورت فرمت شود user; list of groups با کاما از هم جدا می شوند.
نمونه ساختار فایل:

light; sudo,dev,www-data
idimma; sudo
mayowa; dev,www-data

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

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

توضیح اسکریپت

در حالی که خانه داری از راه دور است، در زیر به تفکیک فیلمنامه آمده است.

اعتبار سنجی فایل ورودی

اسکریپت با بررسی اینکه یک فایل ورودی به عنوان آرگومان به اسکریپت ارسال شده و مسیر فایل مذکور معتبر است (فایل وجود دارد) شروع می شود. برای هر دو بررسی، از if شرطی در ترکیب با عملگر AND منطقی استفاده کردم.&&’، که فقط عبارت دوم را ارزیابی می کند اگر و فقط اگر گزاره اول درست باشد. اگر عبارت اول به درستی ارزیابی شود، اسکریپت بلافاصله خارج می شود خروج 1.

توابع کمکی

دو تابع کمکی برای تولید رمز عبور تصادفی و ثبت نام تعریف شده است. تابع تولید رمز عبور تصادفی – password_gen() از bash داخلی استفاده می کند تصادفی $ متغیری که به طور پیش فرض عدد صحیح تصادفی را تولید می کند. این تصادفی $ متغیر به لوله کشی می شود پایه 64 ماژول برای ایجاد رمز عبور الفبایی.تابع ورود به سیستم – متمرکز ساز() هنگامی که با یک آرگومان فراخوانی می شود، تاریخ و زمان فعلی را همراه با عملکرد یک فایل اعلام شده به عنوان تکرار می کند $LOG_FILE.

فایل رمز عبور را ایمن کنید

دایرکتوری /var/secure در صورتی ایجاد می شود که وجود نداشته باشد و فقط کاربر مجوزهای دایرکتوری را داشته باشد.

کار با فایل ورودی

فایل ورودی ابتدا خط به خط خوانده می شود (خطوط $) و هر خط (خط $ – با یک کاراکتر خط جدید مشخص شده است) در یک حلقه for تکرار می شود. این خط $ سپس به یک آرایه در جداکننده تقسیم می شود.;”با یک فضای خالی دنباله دار (“_؛ _’). به یاد داشته باشید که هر خط از فایل ورودی به این صورت قالب بندی شده است – user; list of groups. اولین برش (رشته قبل از جداکننده/جداکننده میدان ‘*; *’) به نام کاربری $ متغیر و برش دیگر به گروه های $ متغیر.

ایجاد کاربر

سپس اسکریپت بررسی می کند که آیا کاربری با نام کاربری $ از قبل وجود دارد و اگر درست باشد، به تکرار بعدی می‌رود. در غیر این صورت، یاور password_gen() تابع فراخوانی می شود و مقدار به a اختصاص می یابد رمز عبور $ متغیر. این useradd سپس ابزار با پرچم های زیر فراخوانی می شود متر، U و جی (به صفحه useradd man مراجعه کنید) تا کاربر را ایجاد کنید.برای رمز عبور کاربر استفاده می کنیم chpasswd ابزار تنظیم رمز عبور با رمز عبور $ تولید شده است. علاوه بر این، رمز عبور به آدرس هدایت می شود $PASSWORD_FILE و مجوزهای مناسب روی فایل تنظیم شده است (فقط کاربر مجوز دارد – rw).

ایمن سازی دایرکتوری صفحه اصلی کاربر

در نهایت، مجوزهای مناسب در فهرست اصلی کاربر تنظیم می شود تا فقط کاربر از آن برخوردار باشد بخوان، بنویس و اجرا کردن مجوزهای موجود در دایرکتوری

اجرای اسکریپت

اسکریپت را قابل اجرا کنید: chmod +x /path/to/script. ممکن است مجبور شوید این دستور را به عنوان اجرا کنید سودو

اسکریپت را با فایل ورودی به عنوان آرگومان اجرا کنید: sudo ./path/to/script /path/to/inputfile.txt.
می‌توانید با اجرای موارد زیر تأیید کنید که اسکریپت با موفقیت اجرا شده است:

# View the $LOG_FILE
sudo cat /var/log/user_management.log
# View the $PASSWORD_FILE
sudo cat /var/secure/user_passwords.txt
# View the system accounts file
sudo cat /etc/passwd

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

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

نتیجه

به عنوان یک مهندس Sysops/DevOps، اتوماسیون مدیریت حساب کاربری با استفاده از اسکریپت های bash می تواند کارایی و دقت را به طور قابل توجهی افزایش دهد. توجه داشته باشید که با استفاده از منطق و ساختار متفاوت می توان به نتیجه دلخواه رسید. برای یک راه حل ساده تر، باید قسمت اصلی اسکریپت را به توابع کوچکتر تبدیل کرد.این وظیفه بخشی از برنامه کارآموزی HNG این یک کارآموزی 2 ماهه متحول کننده ارائه می دهد، که در آن شرکت کنندگان می توانند مهارت های خود را تقویت کنند، شبکه ها را در حین کار بر روی پروژه های زندگی واقعی مانند این تقویت کنند. می توانید با مراجعه به وب سایت HNG Internship در HNG Internship اطلاعات بیشتری در مورد این برنامه کسب کنید. شما همچنین می توانید بپیوندید شبکه پریمیوم HNG جایی که می‌توانید با فن‌آوران برتر ارتباط برقرار کنید، با آنها همکاری کنید و شغل خود را رشد دهید. برای کسب اطلاعات بیشتر در مورد شبکه HNG Premium، به HNG Premium مراجعه کنید.

معرفی

این مقاله یک اسکریپت bash (GitHub Repo) را توضیح می‌دهد که برای ایجاد خودکار حساب کاربری لینوکس از یک فایل متنی حاوی کاربران مذکور و همچنین فهرستی از گروه(های) تکمیلی طراحی شده است. این اسکریپت باید کاربران و گروه هایی را همانطور که در بخش پیش نیاز مشخص شده است ایجاد کند، دایرکتوری های خانگی را با مجوزها و مالکیت مناسب راه اندازی کند، رمزهای عبور تصادفی را برای کاربران ایجاد کند و همه اقدامات را در یک فایل ثبت کند. علاوه بر این، اسکریپت باید رمزهای عبور ایجاد شده را به صورت ایمن در یک فایل متنی ذخیره کند.

پیش نیازها

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

برای اجرا یا استفاده از اسکریپت به نکات زیر توجه کنید:

  • اطمینان حاصل کنید که از امتیازات sudo برخوردار هستید زیرا مدیریت کاربر و گروه معمولاً به دسترسی ریشه نیاز دارد، یعنی اسکریپت را با sudo یا به صورت روت اجرا کنید.
  • این اسکریپت برای توزیع اوبونتو نوشته شده است، اما همچنان برای سایر نسخه های لینوکس کار می کند.
  • هر خط در فایل متنی که به عنوان آرگومان به اسکریپت ارسال می شود باید به صورت فرمت شود user; list of groups با کاما از هم جدا می شوند.
    نمونه ساختار فایل:
light; sudo,dev,www-data
idimma; sudo
mayowa; dev,www-data

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

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

توضیح اسکریپت

در حالی که خانه داری از راه دور است، در زیر به تفکیک فیلمنامه آمده است.

اعتبار سنجی فایل ورودی

اسکریپت با بررسی اینکه یک فایل ورودی به عنوان آرگومان به اسکریپت ارسال شده و مسیر فایل مذکور معتبر است (فایل وجود دارد) شروع می شود.
برای هر دو بررسی، از if شرطی در ترکیب با عملگر AND منطقی استفاده کردم.&&‘، که فقط عبارت دوم را ارزیابی می کند اگر و فقط اگر گزاره اول درست باشد. اگر عبارت اول به درستی ارزیابی شود، اسکریپت بلافاصله خارج می شود خروج 1.
اعتبار سنجی فایل ورودی

توابع کمکی

دو تابع کمکی برای تولید رمز عبور تصادفی و ثبت نام تعریف شده است. تابع تولید رمز عبور تصادفی – password_gen() از bash داخلی استفاده می کند تصادفی $ متغیری که به طور پیش فرض عدد صحیح تصادفی را تولید می کند. این تصادفی $ متغیر به لوله کشی می شود پایه 64 ماژول برای ایجاد رمز عبور الفبایی.
توابع کمکی - تولید کننده رمزهای عبور تصادفی
تابع ورود به سیستم – متمرکز ساز() هنگامی که با یک آرگومان فراخوانی می شود، تاریخ و زمان فعلی را همراه با عملکرد یک فایل اعلام شده به عنوان تکرار می کند $LOG_FILE.
توابع کمکی - تابع ورود به سیستم

فایل رمز عبور را ایمن کنید

دایرکتوری /var/secure در صورتی ایجاد می شود که وجود نداشته باشد و فقط کاربر مجوزهای دایرکتوری را داشته باشد.
فایل رمز عبور را ایمن کنید

کار با فایل ورودی

فایل ورودی ابتدا خط به خط خوانده می شود (خطوط $) و هر خط (خط $ – با یک کاراکتر خط جدید مشخص شده است) در یک حلقه for تکرار می شود.
کار با فایل ورودی - خط خواندن
این خط $ سپس به یک آرایه در جداکننده تقسیم می شود.;“با یک فضای خالی دنباله دار (“_؛ _‘). به یاد داشته باشید که هر خط از فایل ورودی به این صورت قالب بندی شده است – user; list of groups. اولین برش (رشته قبل از جداکننده/جداکننده میدان ‘*; *‘) به نام کاربری $ متغیر و برش دیگر به گروه های $ متغیر.
کار با فایل ورودی - نام کاربری و گروه را تقسیم کنید

ایجاد کاربر

سپس اسکریپت بررسی می کند که آیا کاربری با نام کاربری $ از قبل وجود دارد و اگر درست باشد، به تکرار بعدی می‌رود. در غیر این صورت، یاور password_gen() تابع فراخوانی می شود و مقدار به a اختصاص می یابد رمز عبور $ متغیر. این useradd سپس ابزار با پرچم های زیر فراخوانی می شود متر، U و جی (به صفحه useradd man مراجعه کنید) تا کاربر را ایجاد کنید.

ایجاد کاربر - useradd
برای رمز عبور کاربر استفاده می کنیم chpasswd ابزار تنظیم رمز عبور با رمز عبور $ تولید شده است. علاوه بر این، رمز عبور به آدرس هدایت می شود $PASSWORD_FILE و مجوزهای مناسب روی فایل تنظیم شده است (فقط کاربر مجوز دارد – rw).
ایجاد کاربر - chpasswd

ایمن سازی دایرکتوری صفحه اصلی کاربر

در نهایت، مجوزهای مناسب در فهرست اصلی کاربر تنظیم می شود تا فقط کاربر از آن برخوردار باشد بخوان، بنویس و اجرا کردن مجوزهای موجود در دایرکتوری
ایمن سازی دایرکتوری صفحه اصلی کاربر

اجرای اسکریپت

  • اسکریپت را قابل اجرا کنید: chmod +x /path/to/script. ممکن است مجبور شوید این دستور را به عنوان اجرا کنید سودو
  • اسکریپت را با فایل ورودی به عنوان آرگومان اجرا کنید: sudo ./path/to/script /path/to/inputfile.txt.
  • می‌توانید با اجرای موارد زیر تأیید کنید که اسکریپت با موفقیت اجرا شده است:
# View the $LOG_FILE
sudo cat /var/log/user_management.log
# View the $PASSWORD_FILE
sudo cat /var/secure/user_passwords.txt
# View the system accounts file
sudo cat /etc/passwd
وارد حالت تمام صفحه شوید

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

نتیجه

به عنوان یک مهندس Sysops/DevOps، اتوماسیون مدیریت حساب کاربری با استفاده از اسکریپت های bash می تواند کارایی و دقت را به طور قابل توجهی افزایش دهد. توجه داشته باشید که با استفاده از منطق و ساختار متفاوت می توان به نتیجه دلخواه رسید. برای یک راه حل ساده تر، باید قسمت اصلی اسکریپت را به توابع کوچکتر تبدیل کرد.
این وظیفه بخشی از برنامه کارآموزی HNG این یک کارآموزی 2 ماهه متحول کننده ارائه می دهد، که در آن شرکت کنندگان می توانند مهارت های خود را تقویت کنند، شبکه ها را در حین کار بر روی پروژه های زندگی واقعی مانند این تقویت کنند. می توانید با مراجعه به وب سایت HNG Internship در HNG Internship اطلاعات بیشتری در مورد این برنامه کسب کنید. شما همچنین می توانید بپیوندید شبکه پریمیوم HNG جایی که می‌توانید با فن‌آوران برتر ارتباط برقرار کنید، با آنها همکاری کنید و شغل خود را رشد دهید. برای کسب اطلاعات بیشتر در مورد شبکه HNG Premium، به HNG Premium مراجعه کنید.

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

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

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

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