سؤال لماذا "chmod -R 777 /" مدمرة؟


هذا ال السؤال الكنسي حول ملف إذن و لماذا ا 777 هو "مدمرة".

أنا لا أسأل كيف لإصلاح هذه المشكلة ، حيث هناك الكثير من المراجع من ذلك بالفعل على خادم خطأ (إعادة تثبيت نظام التشغيل). لماذا يفعل أي شيء مدمر على الإطلاق؟

إذا كنت قد شغلت هذا الأمر ، فأنت تدمر نظام التشغيل الخاص بك. ليس من الواضح لماذا أثرت إزالة القيود على العمليات الحالية. على سبيل المثال ، إذا لم يكن لدي حق الوصول إلى شيء ما ، وبعد خطأ سريع في المحطة فجأة أصبح بإمكاني الوصول بشكل جيد ... لماذا يتسبب ذلك في كسر نظام لينكس؟


247
2018-02-28 21:25


الأصل


لقد حافظت على أنفاسي عندما رأيت هذا السؤال. - Alireza Savand


الأجوبة:


أولا وقبل كل شيء المصطلحات الصغرى المصطلحات: chmod لا إزالة الأذونات. هذا التغيرات معهم.


الآن اللحم المشكلة - الوضع 777 يعني "يمكن لأي شخص قراءة هذا الملف أو كتابته أو تنفيذه" - لديك إذن معين لأي شخص أن يفعل (على نحو فعال) أيا كان ما يريدونه.

الآن ، لماذا هذا سيئ؟

  1. لقد سمحت للجميع بقراءة / تعديل كل ملف على نظامك.
    • قبلة أمان كلمة السر وداعا (يمكن لأي شخص قراءة ملف الظل وكراك كلمات المرور الخاصة بك ، ولكن لماذا تهتم؟ مجرد تغيير كلمة المرور! انها أسهل بكثير!).
    • قبلة الأمان للثنائيات الخاصة بك وداعا (يمكن للشخص أن يكتب فقط جديد login البرنامج الذي يسمح لهم في كل مرة).
    • تقبيل ملفاتك وداعًا: يخطئ مستخدم واحد في التوجيه rm -r / وانتهى الأمر كله. قيل لنظام التشغيل للسماح لهم بفعل ما يريدون!
  2. لقد غضبت كل برنامج يقوم بفحص الأذونات على الملفات قبل البدء.
    sudo، sendmail، ومجموعة من الآخرين ببساطة لن تبدأ بعد الآن. سيفحصون أذونات الملفات الرئيسية ، ويرون أنهم ليسوا ما يفترض أن يكونوا ، ويرفضون رسالة خطأ.
    وبالمثل ssh سوف ينكسر بشكل فظيع (يجب أن يكون للملفات الرئيسية أذونات محددة ، وإلا فإنها "غير آمنة" ، ومن المفترض أن يرفض SSH استخدامها.)
  3. لقد قمت بمسح بت setuid / setgid على البرامج التي كانت لهم.
    المزاج 777 هو في الواقع 0777. من بين الأشياء في هذا الرقم الرئيسي هي setuid و setgid بت.
    معظم البرامج التي هي setuid / setgid لها مجموعة معينة لأنها يجب أن تعمل مع امتيازات معينة. انهم كسرها الآن.
  4. لقد كسرت /tmp و /var/tmp الشيء الآخر في ذلك الرقم الثماني الرئيسي الذي حصل على الصفر هو sticky bit - ما يحمي الملفات في /tmp (و /var/tmp) من الحذف من قبل الأشخاص الذين لا يمتلكونها.
    هناك (لسوء الحظ) الكثير من البرامج النصية سيئة التصرف هناك أن "تنظيف" عن طريق القيام rm -r /tmp/*، وبدون تعيين لزجة على /tmp  يمكنك تقبيل جميع الملفات في هذا الدليل وداعا.
    وجود ملفات خدش تختفي يمكن أن يزعج حقا بعض البرامج المكتوبة بشكل سيء ...
  5. لقد تسببت في الفوضى /dev  /proc وأنظمة الملفات المشابهة
    هذا هو أكثر من قضية على أنظمة يونكس القديمة حيث /devهو نظام ملفات حقيقي ، والأشياء التي يحتوي عليها هي ملفات خاصة تم إنشاؤها باستخدام mknod، حيث سيتم الحفاظ على تغيير الأذونات عبر عمليات إعادة التشغيل ، ولكن على أي نظام يتسبب في تغيير أذونات الجهاز الخاص بك يمكن أن يسبب مشاكل كبيرة ، من المخاطر الأمنية الواضحة (يمكن لأي شخص قراءة كل TTY) إلى الأسباب المحتملة الأقل وضوحًا للذعر النواة.
    Credit to @Tonny for pointing out this possibility
  6. قد تنكسر المقابس والأنابيب ، أو تعاني من مشاكل أخرى قد تنكسر المقابس والأنابيب تمامًا ، أو تتعرض لحقن ضار كنتيجة لتصنيعها عالميًا.
    Credit to @Tonny for pointing out this possibility
  7. لقد جعلت كل ملف على النظام الخاص بك قابل للتنفيذ
    الكثير من الناس لديهم . في حياتهم PATH متغير البيئة (لا ينبغي لك!) - قد يتسبب ذلك في حدوث مفاجأة غير سارة حيث يمكن لأي شخص الآن إسقاط ملف يحمل اسمًا مناسبًا مثل الأمر (على سبيل المثال make أو ls، ولديك لقطة في الحصول على تشغيل شيفراتهم الضارة.
    Credit to @RichHomolka for pointing out this possibility
  8. على بعض النظم chmod سيعيد ضبط قوائم التحكم في الوصول (ACL)
    هذا يعني أنه قد ينتهي بك الأمر إلى إعادة إنشاء كل قوائم ACL الخاصة بك بالإضافة إلى إصلاح الأذونات في كل مكان (وهو مثال فعلي للأمر المدمر).
    Credit to @JamesYoungman for pointing out this possibility

هل ستستمر أجزاء النظام التي تعمل بالفعل في العمل؟ ربما ، لفترة من الوقت على الأقل.
ولكن في المرة القادمة التي تحتاج فيها إلى إطلاق برنامج ، أو إعادة تشغيل الخدمة ، أو لا سمح الله ، قم بتجريد الصندوق الموجود في عالم من الأذى ، حيث أن # 2 و 3 أعلاه سوف يرأسان رؤوسهم القبيحة.


335
2018-02-28 21:46



على الأقل على بعض الأنظمة /tmp سيتم إصلاحه بعد إعادة التشغيل. على الرغم من كل شيء يبدو أن الكثير من الأشياء الأخرى مكسورة. على الأقل في VM أنا فقط اختبارها يبدو إعادة تمهيد ثابتة /tmp الأذونات. يجب أن يكون هناك شيء في البرنامج النصي لبدء التشغيل في مكان ما. - Zoredache
Zoredache الأنظمة التي تستخدم tmpfs عادة إصلاح نفسها ، تلك التي لديها / تمة على القرص قد (يعتمد على البرامج النصية لبدء التشغيل) - voretaq7
+1 للإشارة إلى أنه سيتم القضاء على setuid و Setgid. هذا هو جانب مدمر بشكل كبير. حاول الجري find / -perms -4000 -type f و find / -perms -2000 -type f لمشاهدة الثنائيات المختلفة التي تعتمد على هذه الأعلام. - Kyle Smith
لن تؤدي كتابة شيء مثل "أقل foo.txt" إلى تنفيذ ملف يسمى less.txt التمرير بغض النظر عن تعيين بت للتنفيذ. ستحتاج إلى أن يكون المجلد less.txt موجودًا في المسار وسيتوجب عليك كتابة "less.txt foo.txt" - وليس فعلًا شيء غير مقصود هناك. حتى لو كنت تستخدم عملية إكمال shell ، فستتوقف عند أقل ، وسيتعين عليك إضافة .txt. لاستدعاء ملف نص عشوائي مع مجموعة بت قابلة للتنفيذ ، يجب عليك ./nameoffile.txt. - The Real Bill
Deji everyone يتم تعريفه على أنه اتحاد المجموعة بما في ذلك المستخدم الذي يمتلك الملف ، والمستخدمون في المجموعة التي تملك الملف ، والمستخدمين الذين لا يستوفون أي من هذين المعيارين (حرفيا ثلاثة أرقام إذن الثماني: User، Groupو Other). بعبارات أخرى أي مستخدم لديه إمكانية الوصول إلى النظام. (قد يكون "Access" في هذا السياق بمثابة حساب shell ، وهو الطريقة التي سأتصدى بها عادةً ، ولكنه يشمل أيضًا الوصول عبر نموذج ويب / CGI الذي يكتب البيانات إلى القرص: www يمكن للمستخدم الآن الكتابة إلى أي ملف على النظام ، مما يعني أنه يمكن للزوار العشوائيين أيضًا.) - voretaq7


شيء واحد رئيسي هو أن هناك العديد من الأدوات مثل ssh / sudo التي تحقق من أذونات نظام الملفات لملفات التكوين الرئيسية. إذا كانت الأذونات خاطئة ، فقد تم تصميم هذه الأدوات للفشل ، لأن ذلك قد يشير إلى وجود مشكلة أمان خطيرة. على نظام اختبار ديبيان الخاص بي وربما على الآخرين ، فشل القدرة على تسجيل الدخول ، ربما لأن تسجيل الدخول الثنائي أو شيء ما في PAM لديه شيكات إذن.

لذلك ليس حقا أن يتم تدمير النظام - هو أن العديد من الأدوات مصممة للفشل على الفور عندما تكون الأذونات خاطئة.

إذا قمت بإعادة تمهيد نظام بعد القيام به chmod 777 -R / ستقوم بالتمهيد ، ويمكنك بدء العمليات التي ليس لديها شيكات أذونات صريحة. لذلك النظام ليس ميتًا ، ولكنه غير قابل للاستخدام إلى حد ما من تصمبم.


100
2018-02-28 21:33