local authentication در FreeBSD

bsd_oاین اولین مطلب در مورد مطالب پایه در مورد سیستم‌عامل ارزشمند و آزاد FreeBSD میباشد. همانگونه که قول داده بودم، قرار شد دو مطلب بر مبنای مطالب پایه‌ایFreeBSD و مطالب پایه‌ای Hardening به سایت اضافه شود. این مطلب به دلیل ضرورتش اولین مطلب از مطالب پایه‌ای FreeBSD می‌باشد.
شما در هرگونه از سیستم‌عامل‌های خانواده یونیکس که بنگرید،‌ یکی از مطالب پایه‌ای آن سیستم authentication آن یا بهتر بگویم سیستم effective users و effective groups های آن می‌باشند. در‌واقع هر کاربر و گروهی که بر روی سیستم شما به صورت غیر مجازی ذخیره گردد و فایل‌های خاص etc/passwd/ و غیره را تحت الشعاع قرار دهد به آن effective users و effective groups می‌گوییم.

برای شروع بهترین راه یک تقسیم‌بندی صحیح برای درک قضیه است و مهم اینکه اینجا Gnu\Linux نیست بلکه اینجا FreeBSD است.

۱. فایل‌های پیکربندی

همانگونه که در بالا گفته شد، به دلیل عمده تغییرات FreeBSD با Gnu\Linux باید خود را با محیط و عوامل این سیستم‌عامل سازگار کنیم.
فایل etc/master.passwd/ :
این فایل اصلی‌ترین فایل در FreeBSD می‌باشد و همه فایل‌ها بر اساس آن ساخته می‌شود مواظب آن باشید. بیایید به فرمت آن سرک بکشیم:
هر خط آن مرتبط با یک کاربر می‌باشد و محتوایات مرتبط به آن درج گردیده است به عنوان مثال به خط زیر نگاه کنید:

نکته: اگر دقت کردید همانند passwd لینوکس هر فیلدی با : از یکدیگر جدا می‌شود.
فیلد‌ها به ترتیب از چپ به راست به نام‌های زیر لیست شده‌اند:

  • name

  • password

  • uid

  • gid

  • class

  • change

  • expire

  • gecos

  • home_dir

  • shell

تذکر: بله، شاید برایتان جالب باشد که فیلد‌های فایل shadow و passwd لینوکس در این فایل ترکیب شده‌اند، درست است.
بهتر است تنها ۳ گزینه class، change و expire که در passwd لینوکس وجود ندارند را توضیح دهیم.
گزینه class که پیش‌فرض آن در login.conf تعیین می‌شود همان termcap می‌باشد.
فیلد change تعداد ثانیه‌هایی می‌باشد که account تغییر یافته است. اگر صفر باشد یعنی این فیلد صرفنظر می‌شود.
فیلد expire تعداد ثانیه‌های مانده به expire شدن حساب می‌باشد و اگر صفر باشد یعنی این حساب نا محدود است.
فایل etc/passwd/ :
این فایل از روی master.passwd با دستور pwd_mkdb ساخته می‌شود و ۴ فیلد class، password ،change و expire را ندارد. یک نمونه بارز آن در زیر آمده است:

فایل etc/pwd.db/ :
این همان فایل etc/passwd/ می‌باشد که به صورت باینری می‌باشد در‌واقع دوفایل etc/passwd/ و etc/master.passwd/ به صورت باینری درمی‌آیند تا سرعت query گرفتن بالا رود.
فایل etc/spwd.db/ :
این همان باینری شده فایل etc/master.passwd/ می‌باشد.
فایل etc/group/ :
دقیقاً همانند etc/group/ لینوکس است با این تفاوت که در اینجا gshadow وجود ندارد و فیلد‌های آن به صورت زیر می‌باشند:
group
passwd
gid
members

۲. برخی از فرامین مورد نیاز یا سنتی کار با گروه‌ها و کاربران:

همانطور که در بخش قبل اشاره شد، اگر بخواهیم در etc/master.passwd/ دست ببریم باید فایل‌های باینری را دوباره ایجاد نماییم. برای ایجاد فایل‌های باینری از دستور زیر استفاده مینماییم:

در مورد پاک‌کردن/اضافه‌کردن کاربران و گروه‌ها چندین گزینه روی میز وجود دارد. اولین گزینه یک گزینه TUI می‌باشد که در FreeBSD های قدیمی از sysinstall استفاده می‌شد و با نسخه ۱۰ آن این نرم‌افزار حذف شده و به جای آن bsdconfig حضور پیدا کرده است.
اولین دستور مرتبط با Authentication فرمان passwd می‌باشد. به دستور زیر دقت نمایید:

در این فرمان به دلیل به کار بردن گزینه l- به passwd می‌گوییم که این کاربر باید در Kerberos database
هم update شود. ولی اگر بدون l- به کار رود، فقط به صورت local و بر روی همان ماشین update می‌شود.
فرمان adduser و در مقابل آن rmuser از دو فرمان‌های قدیمی FreeBSD هستند که در هر نسخه پیشرفته‌تر می‌شوند. به مثال adduser زیر دقت ننمایید که چندین نکته در آن نهفته است:

تذکر: همانند سایر یونیکس‌ها به دلایل امنیتی شما باید برای کاربر خود یک گروه اختصاصی داشته باشید.
تذکر: اگر می‌خواهید با su تغییر کاربری دهید حتماً باید عضو گروه wheel باشید.
تذکر: این فرمان باینری فایل‌ها را به روز می‌کند.
بقیه موارد که مانند روز روشن است.
اگر به rmuser زیر دقت شود نیز سوال‌های آن جالب توجه می‌باشد:

تذکر: این یک امتحان بود ولی همیشه در دنیای واقعی دایرکتوری home را نگه می‌دارند. تا کل اطلاعات پاک نشود. البته منوط به موارد امنیتی همه چیز را پاک می‌کنند.
یکی دیگر از فرامین سنتی FreeBSD که هنوز کاربرد دارد دستور chpass می‌باشد. این فرمان می‌تواند تمام فیلد‌های etc/master.passwd/ را تغییر دهید. به مثال زیر دقت نمایید:

با این فرمان شل مربوط به کاربر test را به csh تغییر دادیم.
تذکر: به یاد داشته باشید که نام کاربر در این فرمان آخرین گزینه است.
دو فرمان groups و id تقریباً یک کار انجام می‌دهند ولی وسعت کار id خیلی بیشتر است.
به خروجی فرمان زیر دقت نماید:

به ما نشان داد که کاربر mohsen در چه گروه‌هایی عضو است.
تذکر: اگر آن را بدون پارامتر به کار ببریم کاربر جاری را به عنوان پارامتر قبول می‌کند.
این دستور معادل فرمان زیر می‌باشد:

۳. فرمان مدرن pw

به فرمان زیر دقت نمایید:

دقیقاً می‌توان همانند دستور ip لینوکس از آن help گرفت:

مثال زیر گروه test را پاک می‌کند:

تذکر: در تمام فرامین بالا قسمت اول می‌تواند به قسمت دوم برای راحتی بچسبد:

و این عمل زمان را بهینه می‌کند. از ای به بعد به صورت بهینه شده عمل می‌کنیم.
با دستور زیر کاربر test را به گروه wheel اضافه می‌کنیم:

با فرمان زیر کاربر test را lock می‌نماییم:

تذکر: در به کار بردن فرمان pw باید به خاطر داشته باشید که کلی option وجود دارد و هر option برای یک فرمان است. به عنوان مثال option های user با group فرق دارند، البته ممکن است مشترکاتی داشته باشند.
در نهایت کافیست به مفاهیم effective users و effective groups ها مسلط باشید، آنگاه در هر یونیکسی موفق خواهید بود.

یک دیدگاه در “local authentication در FreeBSD”

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

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