على لينكس، هو mktemp برنامج سطر الأوامر أقل أمنا من mkstemp C-وظيفة؟

StackOverflow https://stackoverflow.com/questions/499450

  •  20-08-2019
  •  | 
  •  

سؤال

وكل عمليات إنشاء ملف فارغ والعودة اسم الملف ولكن mkstemp يترك الملف مفتوحا في وضع خاص ويتيح لك التعامل معها. هل هناك فائدة سلامة إلى C-وظيفة؟ هل هذا يعني أن هناك حفرة السلامة في إصدار سطر الأوامر؟

وبوصفها جانبا، ومن المثير للاهتمام أن هناك العديد من المهام ذات الصلة في المعهد C على لينكس ومعظمهم من يقول "لا تستخدم هذه الوظيفة" (أو ما شابه) في الصفحة رجلهم.

هل كانت مفيدة؟

المحلول

وكما ترون بسهولة من التعليمات البرمجية المصدر mktemp(1)، وأساسا لا يفعل شيئا ولكن الدعوة mkstemp(3).

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

وليس هناك أمان إضافية في وظيفة C مقارنة أداة سطر الأوامر.

نصائح أخرى

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

والفرق الأكثر وضوحا بين استدعاء نظام وظيفة سطر الأوامر التي تستخدم وظائف سطر الأوامر من قبل الناس أو البرامج النصية قذيفة، في حين تتم استدعاءات النظام دائما البرامج.

وسيكون من الصعب جدا على تسليم الشخص على التعامل مع الملف.

وفيما يتعلق ب "أمان"، يجب أن نفكر في شروط السباق: عدة أمثلة على واحد mkstemp دعوة برنامج في نفس الوقت، ولكن مضمون كل واحد أن يكون ملف مؤقت فريد. إذا قصفت البرنامج من ودعا إصدار سطر الأوامر، ويهمني أن يكون من المستحيل تقريبا لضمان ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top