المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : حل مشكلة حذف مجلد ال virtfs الخاص بحسابات المواقع التي كانت تملك حساب shell



salima
11-02-2013, بتوقيت غرينيتش 01:21 AM
السلام عليكم ...

احيانا يقوم البعض متعمدا او بالخطأ بإنشاء حساب لموقع ومعه صلاحيات jail shell .. عند دخول هذا الشخص بالحساب الخاص به سيجد انه يمكن ان يصل لاي ملف يريد .. مثل

رمز PHP:

<code style="white-space:nowrap"> <code> cat /etc/passwd
</code> </code>

ولكنه سيتفاجىء بان الملف بداخله فقط اليوزر الخاص به .. وسيجد ان في مجلد ال home لايوجد سوى الموقع الخاص به ..

الفكرة في ال virtfs هو انشاء بيئه وهمية للمستخدم .. ولكن فعلا هي ايضا خطيرة اذا لم خبيرا في نظام التشغيل وتستطيع تحديد الأوامر التي يمكن للمستخدم تنفيذها ..

المشكلة انك لو حذفت خاصية ال ssh عن المستخدم ..

ستجد ان مجلد ال /home/virtfs موجود بالكامل .. وبداخله مجلد خاص لكل يوزر .. اليوزر في حالتنا مثلا usershell ..

لو حاولنا حذف هذا الملف .. إعلم انك حذفت ملفات السيرفر SERVER ^_^ والأوامر وووو و ... وبالتالي انك تحتاج لعمل ريلوود حتى يعمل السيرفر SERVER ..

ما هو السبب في ذلك .. السبب ان ال virtfs تنشىء كما قلنا بيئه وهمية وتستخدم ال hard link لمجلدات النظام ومنها /lib , /tmp , /bin / home / , var

طيب ما هو الحل لهذه المشكلة ؟؟؟ الحل بإذن الله موجود .. أولا لنفهم طريقه العمل وما هي المجلد المرتبطه


نفذ الأمر التالي
رمز PHP:

<code style="white-space:nowrap"> <code> cat /proc/mounts
</code> </code>

الناتج سيكون مقارب للتالي ...
رمز PHP:

<code style="white-space:nowrap"> <code> /dev/root /home/virtfs/usershell/lib ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/opt ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/lib64 ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/usr/lib ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/usr/lib64 ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/usr/sbin ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/usr/share ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/usr/bin ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/usr/man ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/usr/X11R6 ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/usr/kerberos ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/usr/libexec ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/usr/local/bin ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/usr/local/share ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/usr/local/Zend ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/usr/local/IonCube ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/usr/include ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/usr/local/lib ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/var/spool ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/var/lib ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/var/cpanel ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/usr/local/cpanel/Cpanel ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/var/run ext3 rw,data=ordered,usrquota 0 0
/dev/root /home/virtfs/usershell/var/log ext3 rw,data=ordered,usrquota 0 0
/dev/sda6 /home/virtfs/usershell/tmp ext3 rw,nosuid,noexec,data=ordered 0 0
/dev/root /home/virtfs/usershell/bin ext3 rw,data=ordered,usrquota 0 0
/dev /home/virtfs/usershell/dev tmpfs rw 0 0
/proc /home/virtfs/usershell/proc proc rw 0 0
/dev/root /home/virtfs/usershell/home/usershell ext3 rw,data=ordered,usrquota 0 0
</code> </code>

الحل بإذن الله هو ان نقوم بعمل umount لكل قسم قام ال virtfs بعمل mount له ..

مثلا ...




رمز PHP:

<code style="white-space:nowrap"> <code> umount /home/virtfs/user/usr/bin
</code> </code>

ولكن هل يعقل ان نقوم بذلك لكل المواقع او لكل المجلدات ؟؟؟

بالطبع لا ..

الحل النهائي واتوقع انه واضح جدا ..
رمز PHP:

<code style="white-space:nowrap"> <code> for i in `cat /proc/mounts | grep /home/virtfs | cut -d ' ' -f 2 ` ; do umount $i ; done
</code> </code>


بعد حل المشكلة وجدت ان الCPANEL قامت بإنشاء scripts يقوم بهذا الامر بالتاكيد بعد ورود اكثر من شكوى على الأمر .. والأمر هو

رمز PHP:

<code style="white-space:nowrap"> <code> /scripts/clear_orphaned_virtfs_mounts
</code> </code>

ويمكن استخدام اي منهم المهم في الموضوع هو الفهم للفكرة وكيفيه عملها وبعدها يمكنك معرفه الحل سواء قام احد بعمل سكربت مثل السي بنل ما عملت .. او بنفسك كمدير نظام ذكي وفاهم لما تقوم به ..

المصدر ...

رمز PHP:

<code style="white-space:nowrap"> <code> http://controlpanelblog.com/cpanel/cpanel-jailshell-unmount-and-clean-virtfs.html
http://docs.cpanel.net/twiki/bin/view/AllDocumentation/WHMDocs/VirtFS
</code> </code>


دعواتكم http://www.dzbatna.com/images/smilies/icon31.gif
سلام عليكم




https://fbcdn-sphotos-d-a.akamaihd.net/hphotos-ak-ash4/482113_236967293114455_1193518507_n.png (http://www.dzbatna.com)
©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى (http://www.dzbatna.com)©

استعمل مربع البحث في الاسفل لمزيد من المواضيع


سريع للبحث عن مواضيع في المنتدى