افتح /etc/selinux/config
تغيير selinux = فرض أو السماح بتعطيله.
تذكر إعادة تشغيل الخادم!
وبطبيعة الحال، تحتاج أيضا إلى تحديد الأسئلة التالية:
1. هل يتم منع المستخدم من تسجيل الدخول بواسطة vsftpd؟ على سبيل المثال، اسم المستخدم موجود في /etc/ftpusers ويتم حظره من تسجيل الدخول.
2. هل تم تشغيل خيار مصادقة pam في vsftpd.conf (غالبًا ما أرتكب أخطاء عندما أقوم بتجميعه وتثبيته بنفسي) (انظر ما إذا كان هناك pam_service_name=ftp أو vsftpd في vsftpd.conf. أيهما يعتمد على
من الموجود ضمن ملف الخدمة /etc/pam.d الخاص بوحدة PAM هو بروتوكول نقل الملفات (ftp) وتكوينه كما يلي:
#%PAM-1.0
المصادقة مطلوبة /lib/security/pam_listfile.so item=user Sen=deny file=/etc/ftpusers onerr=succeed
المصادقة مطلوبة /lib/security/pam_unix.so الظل nullok
المصادقة مطلوبة /lib/security/pam_shells.so
الحساب مطلوب /lib/security/pam_unix.so
الجلسة المطلوبة /lib/security/pam_unix.so
إذا تم رفض بعض المستخدمين في /etc/ftpusers
3. هل أذونات المجلدات ذات الصلة صحيحة؟
بخصوص مشكلة "لا يستطيع بعض المستخدمين المحليين تسجيل الدخول إلى vsftpd، لكن البعض الآخر يستطيع ذلك"،
لا يمكن لأي من الحسابات المحلية الموجودة في النظام تسجيل الدخول. تكوين الملف /etc/vsftpd/vsftpd.conf الخاص بي هو كما يلي:
local_enable=YES
write_enable=نعم
chroot_local_user=YES
pam_service_name=vsftpd
/etc/pam.d/vsftpd موجود وهو طبيعي.
رسالة الخطأ عند تسجيل الدخول هي نفسها:
500 عفوًا: لا يمكن تغيير الدليل:/home/xxxx
فشل تسجيل الدخول.
421 الخدمة غير متوفرة، لقد أغلق الخادم البعيد الاتصال
الدلائل الرئيسية الخاصة بهم كلها /home/xxxx. أذونات /home و /home/xxxx كلاهما 755.
لا يمكن تسجيل الدخول إلى أي من الحسابات المذكورة أعلاه من خلال بروتوكول نقل الملفات (ftp)، وهي شائعة الاستخدام ويمكن تسجيل الدخول إليها باستخدام shell.
لقد قمت بإنشاء حساب usr1 جديد
# اختبار useradd -G -d /tmp/usr1 usr1
يمكن تسجيل الدخول عبر بروتوكول نقل الملفات، ومنزله هو /tmp/usr1، وهو على / القسم. لقد قمت بتثبيت /home على /dev/hda9.
#جبل
/dev/hdb1 على/اكتب ext3 (rw)
/dev/hda9 على /home type ext2 (rw)
لذا، أعتقد: هل بسبب القسم/home لا يمكن "للحسابات التي يوجد دليلها الرئيسي في القسم/home" تسجيل الدخول؟
من أجل التحقق من الافتراض أعلاه، حاولت إنشاء حساب آخر
اختبار useradd -G -d /home/usr3 usr3
أذونات /home و /home/usr3 كلها 755.
فشل تسجيل الدخول إلى usr3 ftp.
500 عفوًا: لا يمكن تغيير الدليل:/home/usr3
فشل تسجيل الدخول.
421 الخدمة غير متوفرة، لقد أغلق الخادم البعيد الاتصال
في هذه المرحلة، أعتقد أنه من المؤكد أنه بسبب القسم /home، لا يمكن لـ "الحساب الذي يوجد دليله الرئيسي في القسم /home" تسجيل الدخول.
المادة المرجعية:
لقد انتهيت من الترقية الثانية إلى Fedora Core 4. لم يتم حل كل شيء بعد مع الإصدار بالطبع، ولكن هناك شيء واحد مؤكد أن الكثير قد حدث لـ RedHat الذي كنت أعرفه من قبل.
يجب أن أقول عن كل التغييرات، إن الإضافة الأفضل بالنسبة لي هي امتدادات SELinux الجديدة. للحصول على خلفية عميقة عن أسباب ونظرية SELinux، اقرأ كتاب حتمية الفشل: الافتراض المعيب للأمن في بيئات الحوسبة الحديثة.
كلما عملت مع SELinux أدركت أنني بحاجة إلى معرفة المزيد عنه، وكيف يفعل كل أشياءه بالضبط، فهو بالتأكيد يغير الأشياء المتعلقة بالمستخدمين والأدلة والوصول، وأنا متأكد من ذلك أنا أفعل الأشياء بالطريقة الصعبة :)
الفرق الرئيسي، حتى الآن بالنسبة لي، في SELinux الخاص بـ Red Hat هو الطريقة التي يتم بها التعامل مع ftp. لا يزال vsftpd هو الخادم الرائع، ومع ذلك، يبدو أنه مصمم للعمل كبرنامج خفي بدلاً من استدعائه عبر xinet.d يمكنك الحصول على نسخة عمل من ملف xinet.d لـ vsftpd، ويمكنك استدعاؤه عبر غلاف xinet.d. لقد قمت بترقية خادمي الأول بهذه الطريقة من الميزات التي يجلبها غلاف xinet.d، وربما يعود إليها.
من بين جميع المشكلات التي رأيتها بشكل ملحوظ هي إذا كنت تريد تمكين دليل chroot خارج الملف /home/xxx vsftpd العادي، فسوف تفشل هذه مع ملف
500 عفوًا: لا يمكن تغيير الدليل: /mnt/xxxxx
لقد تمكنت من استخدام بروتوكول نقل الملفات إذا قمت بتسجيل الدخول باستخدام حساب باستخدام دليل في /home، ولكن بمجرد أن قمت بتعيين حساب مستخدم ليكون لديه محرك أقراص منزلي خارج /home (في هذه الحالة على قرص ثانوي مثبت) vsftpd barfs ما سبق .
لقد وجدت معلومات في وكالة الأمن القومي تشير إلى أنه يمكنك تعطيل حماية SELinux لبرنامج ftp الخفي.
سيتسيبول -P ftpd_disable_trans 1
يبدو هذا جذريًا بعض الشيء، وهو يعمل بالتأكيد في الوقت الحالي.
أعتقد أن المشكلة تكمن في النهاية في السياسات، ولكن نظرًا لأن سياسات SELinux جديدة بالنسبة لي، فسوف يستغرق الأمر بعض الوقت قبل أن يتم حل كل شيء، وبما أنني أقضي وقتًا مع امتدادات SELinux الجديدة في Fedora Core 4، فسوف أبقيك على اطلاع بأفكاري ودروس التكوين .
حل:
#setsebool ftpd_disable_trans 1
# إعادة تشغيل خدمة vsftpd
أستخدم FC4 وجربت الطريقة في مشاركتك السابقة وتم حلها على الفور. لذلك، يمكن تحديد أن السبب يكمن في SELinux.