كيفية تنفيذ نظام التشغيل.* الأساليب الجذر ؟

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

  •  06-07-2019
  •  | 
  •  

سؤال

هل من الممكن أن أطلب الجذر pw دون تخزين في مخطوطتي الذاكرة لتشغيل بعض من نظام التشغيل.* الأوامر كما الجذر ؟

السيناريو

  1. بفحص بعض المجلدات و الملفات للتحقق مما إذا كان يمكن القيام بهذه المهمة
  2. يجعل بعض التغييرات في /etc/...
  3. يخلق مجلد الملفات التي يجب أن تكون مملوكة من قبل المستخدم من تشغيل البرنامج النصي

(1) يمكن القيام به كمستخدم عادي.يمكنني القيام به (2) قبل sudoing السيناريو, ولكن بعد ذلك المجلد و الملفات في (3) الجذر.

القضية هي أن أنا استخدم الكثير من نظام التشغيل.makedirs ، os.الارتباط الرمزي ، إلخ ، التي توقف لي من يجعلها runnable من قبل المستخدم العادي.

الدبابات 2 كل الاقتراحات

الحل هو حتى الآن:

# do all in sudo
os.chown(folder, int(os.getenv('SUDO_UID')), int(os.getenv('SUDO_GID')))

شكرا gnibbler عن التلميح.

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

المحلول 5

gnibbler أعطى تلميحا في os.chown.كانت المشكلة ثم معرفة هوية المستخدم وراء سودو.هذه المعلومات يتم تخزينها في متغيرات البيئة SUDO_*:

os.chown, (some_path, int(os.getenv('SUDO_UID')), int(os.getenv('SUDO_GID')))

تقسيم البرمجية في 3 ملفات يمكن أن يكون حلا ، ولكن القانون هو بالفعل مختلطة ، بحيث لا مناسبة.

نصائح أخرى

ربما يمكنك وضع (2) في نصي مستقل ، ويقول script2.py, و في الرئيسية سكربت اتصل sudo script2.py مع popen ?

بهذه الطريقة فقط (2) سيتم تنفيذها كجذر.

yourscript.py:

run_part_1()
subprocess.call(['sudo', sys.executable, 'part2.py'])
run_part_3()

part2.py:

run_part_2()

هل النظر في استخدام لينكس بام?قد ترغب في إلقاء نظرة على لينكس-بام مطوري التطبيقات دليل و بيثون API بام

يجب تنفيذ البرنامج النصي الخاص بك كما الجذرية المناسبة تغييرات على الأذونات (3) باستخدام نظام التشغيل.chmod و نظام التشغيل.chown.

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

هذه المسألة هو حول الحصول على الأذونات الصحيحة على بعض الملفات/المجلدات.أولا تمرير أو رمز القرص الثابت UID/اسم المستخدم الخاص بك المستخدم العادي.ثم استخدام نظام التشغيل.chown إلى تغيير المالك و نظام التشغيل.chmod إلى تغيير الأذونات.وهناك أيضا بديل chown/شمود الأساليب في نظام التشغيل حزمة يجب أن ننظر في: http://docs.python.org/library/os.html

ملاحظة أخيرة:كنت لا داعي للقلق حول الأذونات من روابط الرمزية.لديهم أذونات ما نقطة.

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