كيفية معرفة ما إذا كان مستخدم معين لديه أذونات القراءة و/أو الكتابة لمسار معين

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

سؤال

يجب أن أبدأ بالقول إنني أعتبر نفسي مستخدمًا ماهرًا.لكن اليوم كنت بحاجة إلى أتمتة هذا الأمر وكنت في حيرة من أمري.

لنفترض أنني جذر، وعلى هذا النحو فأنا قادر على اجتياز نظام الملفات بأكمله ولكن لا يمكنني تشغيل "sudo" أو "su".

لدي مستخدم معين ومسار معين.

كيف يمكنني التحقق من خلال واجهة سطر الأوامر (CLI) مما إذا كان المستخدم سيكون قادرًا على القراءة و/أو الكتابة إلى المسار؟

أعلم أن هذا يبدو سهلاً، لكن ضع في اعتبارك ما يلي:

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

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

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

المحلول

tag me guru البرمجة النصية! giveacodicetagpre.

نصائح أخرى

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

أظن أنه لا يوجد نهج عام للتحقق من حقوق الوصول الفعال، وذلك ببساطة لأن حقوق الوصول تعتمد بشكل كبير على نظام (أنظمة) الملفات الأساسية.على سبيل المثال، يعمل التحقق من حقوق الوصول بشكل مختلف تمامًا على أنظمة الملفات التي تستخدم نظام Unix القياسي rwx الأعلام (على سبيل المثال.Linux 'ext2، ext3) مقارنة بأنظمة الملفات التي تدعم قوائم ACL (مثل XFS أو NTFS).

قد يكون هناك عدة محددة أدوات سطر الأوامر التي تفعل ما تريد القيام به لأنواع معينة من أنظمة الملفات.(التشبيه:أدوات مثل fsck, mkfs قد يكون موجودًا لكل نوع نظام ملفات.)

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

إذا قمت ببناء الحل الخاص بك لهذه المشكلة، فكر في هذه الحقيقة أولاً، ثم قرر بالضبط آلية (آليات) حق الوصول التي تريد دعمها.(لست متأكدًا، ولكن يمكنني أن أتخيل أن مواصفات Unix/POSIX تنص على rwx علامات حقوق الوصول كحد أدنى يجب أن يدعمه كل نظام Unix.)

أفضل طريقة هي التحقق من صحة المستخدم نفسه: giveacodicetagpre.

ls -l <file-name or dir-name>

لنفترض أنك تريد التحقق من أذونات دليل التحميلات. أدخل ls -l uploadsوهذا سوف ينتج مثل هذا

total 20
drwxrwxr-x 2 tomcat ec2-user 4096 Nov  5 04:21 deals
drwxrwxr-x 2 tomcat ec2-user 4096 Nov  5 04:25 gallery-images
drwxrwxr-x 3 tomcat ec2-user 4096 Nov  5 04:25 hotels
drwxrwxr-x 3 tomcat ec2-user 4096 Nov  5 04:28 rooms
drwxrwxr-x 3 tomcat ec2-user 4096 Nov  5 04:32 temp
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top