كيف أجد حاليا من الدخول (بيثون تحت * NIX)
-
08-07-2019 - |
سؤال
ولست بحاجة لوضع عملية بلدي لتعمل تحت "لا أحد"، لقد وجدت 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 المكتبات الديناميكية لتحميل للحصول على المعلومات).