نصب/راه اندازی NIS در CentOS

نصب/راه اندازی NIS در CentOS

 NIS که مخفف Network Information Service است توسط شرکت سان مایکروسیستم بعنوان پروتکل دایرکتوری سرویس یا Client-Server Directory Service برای توزیع کردن اطلاعات پیکربندی مانند Username/Password ها وhostname ها و  اطلاعات دیگری بروی شبکه ای از کامپیوتر ها استفاده می شوند. در معماری NIS ماشین یا ماشین هایی بعنوان سرویس دهند و دیگر ماشین ها بعنوان کلاینت در ارتباط با هم عمل می کنند و هدف اصلی NIS ایجاد محیطی Centrallize برای دسترسی هر کاربر توسط Username/Passwod خود از هر کامپیوتری عضو دامنه NIS در شبکه است. بطور کلی می توان گفت که توسط NIS و با ایجاد کردن نام دامنه مانند falearn.local و عضو کردن ماشین ها تحت نامی در این دامنه فایل ها و پایگاه داده های مرتبط با تعیین هویت کاربران مانند etc/passw/ و … امکان Authentication بصورت مرکزی و توسط یک سیستم که نگهدارنده این پایگاه داده ها است فراهم می شود. پیش از NIS سان از نام Yellow Page یا YP برای محصول خود استفاده می کرد که به دلیل تعلق این نام به یک شرکت بریتانیایی سان آنرا از Yellow Page به NIS تغییر داد. البته هنوز در ابتدای نام دستور های NIS حروف yp وجود دارند. بازهم تاکید می کنیم که NIS برای دسترسی Centrallize به اطلاعاتی همچون نام و گذرواژه کاربران آدرس های الکترونیکی و به دایرکتوری خانگی یا اشتراک کردن یک دایرکتوری برای تمامی کاربران توسط NIS+NFS استفاده می شوند و از هر ماشینی عضو دامنه و روی شبکه می توانید به این اطلاعات دسترسی داشته باشید.

معایب یا کمبود های NIS
NIS در مقابل رقیب قدرتمند خود یعنی LDAP دارای امنیت مناسبی نیست و همچنین بر خلاف دامنه های DNS ی که دارای نام های fqdn ی هستند دامنه های NIS قابلیت استفاده بر روی اینترنت را ندارند و تنها در یک شبکه LAN قابل استفاده هستند.
بعد ها سان نسخه بعدی آنرا در سال 1992 به نام +NIS  که نسبت به NIS دارای امنیت بیشتری بود معرفی کرد. همچنین دارای ویزگی های Authentication بیشتری از قبیل پشتیبانی از ساختار های ارثی که دارای انعطاف بیشتری هستند. اما با انتشار سولاریس 11.1 دیگر +NIS در سولاریس پشتیبانی نمی شود.

مفاهیم
در راه اندازی NIS دو نوع ماشین کلاینتی و سروری وجود دارند. ماشین های کلاینتی باید عضوی از دامنه باشند و تمامی تنظیمات و اطلاعات و پایگاه داده های موجود بر روی ماشین(های) سرور نصب و قرار می گیرند. حتمن یک ماشین سروری که ماشین Primary گفته می شود در سیستم وجو دارد که شامل تمامی تنظیمات و برنامه ها است. به دلایل تحمل خطا ممکن است یک یا چند ماشین دیگر که اصطلاحا Slave می گویند وجود داشته باشند که در صورت خرابی ماشین Primary سرویس دهی را بدست می گیرند. تفاوت این دو نوع ماشین در این است که ماشین های Slave بر خلاف ماشین Primary فقط قابلیت خواندن را دارند و تمامی اطلاعات روی ماشین Primary نوشته و خوانده می شوند. در صورتی که ماشین Primary از کار بیافتد ماشین های Slave امکان خواندن اطلاعات را تا زمانی که ماشین Primary راه بیافتد فراهم می کنند.

نصب در ماشین سرور

پیش از نصب بررسی کنید که آیا بسته نرم افزاری ypserv روی سیستم نصب هست یا خیر.

rpm -qa | grep ypserv

در صورتی که نصب باشد خروجی مشابه زیر داده می شود.

ypserv-2.19-22.el6.i686

و اگر نصب نبود با استفاده از دستور زیر آنرا نصب کنید.

yum install -y ypserv rpcbind

توجه داشته باشید که سرور NIS باید دارای آدرس IP ثابت یا Static باشد پس حتمن پیش از انجام گام های زیر آدرس ثابتی تعیین کنید. و همچنین در CentOS 5.x نیازی به نصب rpcbind نیست و بجای آن portmap استفاده می شود که نیازی به نصب هم ندارد.

  • پس از نصب بسته ی لازم بر روی سرور با دستور ypdomainname نام دامنه ای مانند falearn.local را ایجاد و انتخاب می کنیم.

ypdomainname falearn.local

  • سپس فایل network در دایرکتوری etc/sysconfig/ را با اضافه کردن اطلاعات زیر ویرایش کنید.

vi /etc/sysconfig/network

خطوط زیر را وارد کنید و سپس ذخیره کنید.

 NETWORKING=yes

HOSTNAME=nissrv.falearn.local

NISDOMAIN=falearn.local

  • پس از ویرایش فایل بالا باید فایل Makefile در دایرکتوری var/yp/ را ویرایش کنیم. برای آنکه شماره خطوط توسط vi نشان داده شوند بصورت زیر استفاده کنید. و همچنین برای ورود به مد ویرایش فایل ها توسط vi کلید i را بزنید تا وارد مد Insert شوید و برای خروج و ذخیره سازی ابتدا کلید Esc و سپس کلید : و در نهایت x (کوچیک) را بزنید. و اگر می خواهید تغییرات ذخیره نشوند پس از Esc و : باید q را بزنید.

vi  +number /var/yp/Makefile

در این فایل باید خطوطی را ویرایش کنیم. برای شروع خط 42 که MERGE_PASSWD است را مقدار false می دهیم.

line 42 in Makefile

vi +42 /var/yp/Makefile

MERGE_PASSWD=false

و در خط 46 مقدار MERGE_GROUP را نیز false قرار می دهیم.

line 46 in Makefile

vi +46 /var/yp/Makefile

MERGE_GROUP=false

همچنین در خط 117 خط زیر را اضافه کنید.

line 117 in Makefile

vi +117 /var/yp/Makefile

Add this line

all:  passwd group hosts rpc services netid protocols mail

ویرایش فایل Makefile بخاطر فراهم کردن امنیت بیشتر بر روی NIS است. در سیستم های بزرگ NIS معمولن فایل های حاوی نام کاربری و گذرواژه ها در دایرکتوری etc/yp/ ذخیره می وند. اگر این چنین باشد نیاز به استفاده از دستور هایی به غیر از دستور های نرمال برای مدیریت کاربران مانند chfn,passwd,adduser دارید. NIS از فرمت درونی خودش برای پردازش اطلاعات استفاده می کند ولی کاربر این فایل ها را بصورت یک فایل متنی ساده می بیند و فایل Makefile شامل دستور هایی برای بروز کردن پایگاه داده پس از تغییر فایل هاست. دستور هایی مانند yppasswd , ypchsh و …

دستور ypserv برای کار بروی ماشین Primary و دستور ypxfrd برای انتقال نگاشت ها از ماشین Primary به ماشین Slave با سرعت بالاتر استفاده می شود. فایلی که دو دستور (Daemin) به نام های ypserv و ypxfrd با آن کار می کنند فایل etc/ypserv.conf/ است که شامل گزینه های پیکربندی در حین اجرای (Runtime) است که option lines ها نامیده می شوند و مورد استفاده ypserv هستند. همچنین شامل access rule ها که اطلاعات دسترسی هاست یا Host access information ها و مورد استفاده ypserv و ypxfrd هستند. تنظیمات پیش فرض آن که در شکل زیر مشاهده می کنید برای NIS Server مناسب است.

cat /etc/ypserv.conf

با هر بار اجرا یا خاتمه ypserv و ypxfrd این فایل خوانده می شود و هر خط آن شامل یک option است که شکل کلی آنها بصورت زیر است.

[option:[yse/no

در پستی مجزا به بررسی دقیقتر این فایل پرداخته می شود. (این پست فقط بحث نصب و راه اندازی اولیه است)

  • گام بعدی در راه اندازی سرور NIS ویرایش فایل securenets در زیر دایرکتوری var/yp/ است. اگر که فایل securenets خالی باشد یا اصلن وجود نداشته باشد NIS بر تمامی کارت های شبکه ماشین سرور برای پاسخ به در خواست ها گوش خواهد داد. در این فایل تعیین می کنیم که ypserv روی کدام کارت گوش دهد. (در اصل روی کدام شبکه گوش دهد)

شکل کلی هر خط آن بصورت زیر است و با توجه به آدرس 192.168.3.1 و Subnet mask 255.255.255.0 آنرا ویرایش می کنیم. (شما باید آدرس شبکه سرور خودتان را وارد کنید.)

SUBNET_MASK IP_ADDRESS

192.168.3.1 255.255.255.0

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

vi /var/yp/securenets

  • سپس می توانید آدرس و نام ماشین سرور nis که قبلن تنظیم کردیم را در فایل hosts وارد کنید.

vi /etc/hosts

پس از انجام گام های بالا باید با دستور های زیر سرویس ها را فعال کنید.

etc/init.d/rpcbind start/

etc/init.d/ypserv start/

etc/init.d/yppasswdd start/

chkconfig rpcbind on

chkconfig ypserv on

chkconfig yppasswdd on

اگر از CentOS 5.x استفاده می کنید باید سرویس portmap را پیش از ypserv  و بجای rpcbind فعال کنید.

etc/init.d/portmap start/

chkconfig portmap on

  • پس از تمامی گام های بالا باید لیستی از هاست هایی که سرویس NIS را اجرا می کنند بسازیم. در مثالی که من استفاده کردم nissrv جزئی از این لیست است(توجه کنید نام هاست nissrv و نام دامنه falearn.local). در اجرای دستور زیر در هر خط نام یک ماشین که NIS را اجرا می کند قرار می گیرد. زمانی که تمامی ماشین ها را وارد کردید از کلید های Ctrl+D برای اتمام فرایند استفاده کنید.

usr/lib/yp/ypinit -m/

توجه داشته باشید اگر توزیع شما 64 بیتی است بجای lib در بالا از lib64 استفاده کنید.

توجه کنید که سیستم خودش nissrv را شناسایی کرده سات. پس Ctrl+D را بزنید و سپس سوالی با پیام Is this correct?  [y/n: y] از شما پرسیده می شود که باید y را برای تایید وارد کنید. و در نهایت خود برنامه خروجی هایی را که نشان از پیکربندی نهایی است در خط فرمان نشان می دهد.

  • لازم است با دستور زیر پایگاه داده NIS را در صورت افزوده شدن یک کاربر جدید به محیط NIS بروز کنید.

cd  /var/yp && make

نصب و پیکربندی در کلاینت ها

مانند ماشین سرور نیاز به نصب بسته هایی داریم. برای کلاینت ها بسته های rpcbind و ypbind باید نصب شوند.

yum install -y ypbind rpcbind

  • مانند سرور باید فایل network در دایرکتوری etc/sysconfig/ را بصورت را ویرایش کنیم. HOSTNAME نام ماشین کلاینت به همراه نام دامنه و NISDOMAIN نام دامنه ای که کلاینت عضو آن است.

NETWORKING=yes

HOSTNAME=client1.falearn.local

NISDOMAIN=falearn.local

  • ویرایش فایل authconfig در دایرکتوری etc/sysconfig/ و تغییر مقدار گزینه USENIS به yes. با تغییر فایل و yes کردن USENIS امکان دسترسی سرارسی توسط تمامی کاربرن ماشین های عضو دامنه به منابع را از طریق این ماشین فراهم می کنید.

vi /etc/sysconfig/authconfig

USENIS=yes

  • ویرایش فایل yp.conf در دایرکتوری etc/ و وارد کردن خط زیر در انتهای فایل. توجه کنید که بجای قسمت های قرمز رنگ باید مقادیری که قبلن ایجاد کردید را وارد کنید. در این پست نام دامنه ما falearn.local و نام سرور اصلی nissrv.falearn.local به آدرس 192.168.3.1  بود.

vi /etc/yp.conf

domain falearn.local server 192.168.3.1

  • سپس فایل nsswitch.conf در دایرکتوری etc/ و افزودن nis به انتهای عبارت های زیر. در واقع این فایل چگونگی Resolve کردن نام ها و آدرس های  IP یا تعیین هویت را بصورت اولویت بندی تعیین می کند. بطور مثال خطی از آن بصورت زیر است :

passwd:        files nis

خط بالا تعیین می کند برای تعیین هویت روی این ماشین نخست فایل etc/passwd/ و بعد آن اولویت با NIS است. به هر حال باید خطوط زیر را در فایل خود در صورت نیاز تغییر دهید.

passwd:        files nis
shadow:        files nis
group:        files nis
hosts:        files dns nis

  • سپس یک فایل به نام system-auth و توسط ویرایشگر vi در زیر دایرکتوری etc/pam.d/ ایجاد کنید:

vi /etc/pam.d/system-auth

و خط زیر را به آن اضافه کنید.

session     optional      pam_mkhomedir.so skel=/etc/skel umask=077

  • سپس نوبت به فعال کردن دو سرویس rpcbind و ypbind در سطوح اجرایی است.

etc/init.d/rpcbind start/

etc/init.d/ypbind start/

chkconfig rpcbind on

chkconfig ypbind on

پس از اجرای دستور های بالا سیستم را Restart کنید.

shutdown -r now