ایجاد خودکار کاربران از یک فایل متنی با استفاده از اسکریپت 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 مراجعه کنید) تا کاربر را ایجاد کنید.
برای رمز عبور کاربر استفاده می کنیم 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 مراجعه کنید.