أسرع طريقة لتحديد أذونات المستخدم في / إلخ / Sudoer
-
16-09-2019 - |
سؤال
سيتم الوصول إلى المستخدمين عن بعد *** الآلات القائمة على 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
- أنيقة (آمل) :-)
سلبيات - - سردها في التعليقات، وسأضيف.