أسرع طريقة لتحديد أذونات المستخدم في / إلخ / Sudoer

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

سؤال

سيتم الوصول إلى المستخدمين عن بعد *** الآلات القائمة على NIX عبر SSH وأحتاج إلى تحديد أسرع طريقة للتحقق مما إذا كان اسم المستخدم الذي يستخدمونه حاليا يحتويون على الوصول NOPASSWD في ملف / إلخ / Sudoers.

خيارات ممكنة:

  • GREP لاسم المستخدم في / etc / sudoers، تحليل إخراج موجه الأمر لتحديد ما إذا كان لديه NOPASSWD، إن لم يكن، قم بإزالة السطر ثم إلحاق الأذونات الجديدة
  • ما عليك سوى إلحاق سلسلة إذن بالملف بغض النظر (فكرة سيئة).
  • محاولة لسودو في ملف محمي ومعرفة ما إذا كان ذلك يطالبني بكلمة مرور.

آمل أن يكون هناك شيء أسهل، لكن Google-Fu لم يأت بأي إجابات.

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

المحلول

إذا sudo -v ينجح، وقد أذن المستخدم للاستخدام sudo; ؛ إذا فشل ذلك، فلن يتم استخدام المستخدم للاستخدام sudo.

# su user -c 'setid sudo

بدون سطر, sudo سيحاول طلب كلمة المرور بشكل تفاعلي حتى إذا تمت إعادة توجيه Stdin / Stdout / Stderr. إذا لم يكن لديك محطة مراقبة، فلا حاجة إلى ذلك، ولكن ربما ستحتاج إلى شيء آخر غير su لتغيير أذونات المستخدم، مثل شوكة+setreuid..

نصائح أخرى

إذا كنت بحاجة بالفعل " أسرع الطريقة "، أعتقد أنك تقوم ببناء خادم الويب الذي من شأنه التعامل مع العديد من الطلبات المتزامنة.

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

بناء عملية مستقلة صغيرة للتعامل مع المهمة. يجب أن يكون لها واجهة ضئيلة ستتلقى طلبات من العملاء، وتحديثات /etc/sudoer ملف. شيء مثل has_NOPASSWD_access() و set_NOPASSWD_access(). وبعد يجب أن تقرأ الملف فقط عندما يحتاج إلى كتابته، لذلك ستخفض وقت الإدخال / الإخراج إلى حد كبير لتقديم الطلب.

الايجابيات -

  • سريع: لا I / O اللازم فقط لقراءة الملف، لأنه يتم تخزينه في المخزن المؤقت منذ القراءة الأولية
  • خيط آمن: خادم واحد فقط يكتب ويقرأ ملف sudoer
  • خيار واحد مبدأ - فقط هذه العملية تتعامل مع ملف sudoer
  • أنيقة (آمل) :-)

سلبيات - - سردها في التعليقات، وسأضيف.

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