ممنون از همه ى دوستان و راهنمايى ها خيلى مفيدشون كه خيلى چيزا رو باعث شد ياد بگيرم . ممنون واقعاً .
بنده احساس ميكنم در كل دارم راه رو اشتباه ميرم و كار خودم رو خيلى خيلى سخت تر ميكنم و به هيچ كدوم از اين كار ها نيازى نيست . بخاطره همين مشكل رو كامل توضيح ميدم .
يكى از دوستان يك سرور دارند براى ارائه ى vps و … كه گويا امنيت براى ايشون خيلى خيلى مهمه و خوب اين سرور لينوكس نيست و بنده پيشنهاد دادم كه از OpenBSD استفاده كنند . اين كه پيشنهاد درستى بوده يا نه بماند چون به شخصه معتقدم توى سيستم عامل هايى مثل لينوكس و بى اس دى ها امنيت بيشتر به خود شخص بستگى داره و ابزارى كه استفاده ميكنه و تنظيمات فايروال و … . اين سرور هم گويا در كل سيستم عاملش لينوكسه البته و فقط به صورت مجازى OpenBSD نصب كردند براى قرار دادن ابزار خودشون كه ميخواند امنيت براش كاملاً تأمين بشه و گويا اين ابزار سيستم مديريت مشتركان يا چيزى مشابه هستش كه بنده در اطلاع نيستم به صورت كامل . در هر صورت سيستم با موڤقيت ديروز راه اندازى شد و خوب اين دوست عزيز ديروز مشكل جديدشون رو به اين صورت مطرح كردند كه بايد يك كاربر به نام admin داشته باشند كه تنها كارى كه ميتونند بكنند تغيير ip هست و بس . كه بنده به دليل خستگى يا هر چيز ديگه اى راه اشتباهى انتخاب كردم و فرايند رو بسيار طولانى تر كردم . ( رو راست بگم فكرم كار نداد … ) ابتدا به ساخت كاربر جديد فكر كردم و متوجه شدم محدود كردن اين كاربر تا اين حد براى حفظ امنيت زياد راحت نيست حداقل براى من و به همين دليل به راهه ديگه اى فكر كردم كه باز هم راه اشتباهى رو انتخاب كردم و اين بار بنظر اشتباه بزرگترى بود . بنده به اين فكر افتادم كه هاستى با فضايى خيلى اندك رو روى سرور به ايشون اختصاص بدند و ايشون ip رو درون يك فايل وارد كنند و با كدى كه اينجا درخواستشو از دوستان عزيز كرده بودم بروز شدن فايل تشخيص داده بشه و ip در فايل /etc/hostname.em0/ قرارداده بشه . در حال حاضر به اين فكر ميكنم كه يك نرم افزار از اين شخص ip رو بپرسه و درون فايل hostname.em0 وارد كنه كه گويا دوستان ميگند با sed و … ميشه اگه اشتباه نكنم اما دو مشكل هست اول اين كه چگونه اين كه درون سيستم فرد اجرا بشه ( لزومى به اين شرط نيست البته ) و درون فايل /etc/hostname.em0/ روى هاست جايگزين كنه دوم خود تشخيص دادن و جايگزين كردن ip هستش .
دروغ چرا، من از بیخ مشکل رو متوجه نشدم. ولی برای سوال دوم، فرض کن یه فایل داری که خطی که توش IP آدرس نوشته شده به این صورته:
my_ip_address="x.x.x.x"
برای این که این یک خط رو پیدا کنی و ویرایش کنی، این کار رو میتونی انجام بدی:
sed -i -r 's/my_ip_address="([0-9]{1,3}\.){3}[0-9]{1,3}"/my_ip_address="192.168.1.2"/g' /path/to/file
که این کد، تمام الگوهای IP آدرس نسخهٔ چهار که پیش از اون نوشته my_ip_address=" و بعدش هم علام " هست رو با مقدار جدید جایگزین میکنه. توی فایل (In Place) این کار رو انجام میده.
اما سوال اولت، اگر درست متوجه شده باشم اینه: چطور این کار رو یک یوزر محدود انجام بده در حالی که این فایل مشخص برای تغییرش نیاز به یک کاربر سطح بالاتر هست؟
این کاری که من میگم خیلی خطرناکه و امیدوارم بچهها نظر بهتری داشته باشن. میشه خط تغییر آیپی آدرس رو توی یک اسکریپت نوشت و به اون اسکریپت با chmod، دسترسی s رو بدی. اینطور وقتی اسکریپت رو یک یوز بدون دسترسی اجرا کنه، برای کار خاص دسترسی روت به اسکریپت داده میشه.
اما باید حوست جمع باشه که بجر روت کسی نتونه فایل رو تغییر بده، به اینجکت شدن کد به اسکریپت هم باید دقت کنی. با تمام این توضیحات، هر یوزری میتونه این اسکریپت رو اجرا کنه که اون رو هم میشه با گروهها حل کرد.