سؤال

ولست بحاجة لوضع عملية بلدي لتعمل تحت "لا أحد"، لقد وجدت os.setuid ()، ولكن كيف أجد uid إذا كان لدي login؟

ولقد وجدت أن uids هي في / etc / باسود، ولكن ربما هناك طريقة أكثر pythonic من المسح / الخ / باسود. أي شخص؟

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

المحلول

وقد ترغب في إلقاء نظرة على الأشخاص ذوي الإعاقة حدة في stdlib الثعبان، على سبيل المثال:

import pwd
pw = pwd.getpwnam("nobody")
uid = pw.pw_uid

ويستخدم / الخ / باسود (حسنا، من الناحية الفنية فإنه يستخدم API POSIX C، لذلك أعتقد أنه قد عمل على نظام التشغيل إذا لم تستخدم / الخ / باسود ولكن تعرض الوظائف المطلوبة) ولكن هو أنظف من تحليل يدويا

نصائح أخرى

و/etc/passwd أبدا تفحص مباشرة.

وعلى سبيل المثال، على نظام لينكس أدير، حسابات المستخدمين ليست على /etc/passwd، ولكن في الخادم LDAP.

والطريقة الصحيحة لاستخدام getpwent / getgrent وظائف C ذات الصلة (كما هو الحال في @ TFKyle في الجواب)، والتي سوف تحصل على معلومات عن الطريقة الصحيحة لكل نظام (على لينكس سي العمومية، فإنه يقرأ /etc/nsswitch.conf لمعرفة أي NSS المكتبات الديناميكية لتحميل للحصول على المعلومات).

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