सवाल Unmrivileged उपयोगकर्ता के रूप में nmcli चलाएं


मैंने नेटवर्क मैनेजर डीबीस इंटरफ़ेस के माध्यम से वाईफाई कनेक्शन स्विच करने के लिए एक पायथन प्रोग्राम लिखा, जो (मुझे विश्वास है) मूल रूप से nmcli कमांड-लाइन टूल के बराबर है। मेरे डेस्कटॉप उबंटू पर एक अप्रतिबंधित उपयोगकर्ता द्वारा चलाए जाने पर स्क्रिप्ट (और nmcli) ठीक से काम करता है। मैं यह पता लगाने की कोशिश कर रहा हूं कि अनुमतियों को सेट करने की अनुमति कैसे दी गई थी।

मैं पूछ रहा हूं क्योंकि वही आदेश रास्पियन पर काम नहीं करते हैं, इसलिए मैं ट्रैक करना चाहता हूं कि अनुमतियां अलग हैं। रास्पियन पर, जब मैं अपनी स्क्रिप्ट को एक अप्रतिबंधित उपयोगकर्ता के रूप में चलाता हूं, तो मुझे यह त्रुटि मिलती है जब मैं dbus के माध्यम से NetworkManager डेटा को पढ़ने का प्रयास करता हूं:

dbus.exceptions.DBusException: org.freedesktop.NetworkManager.Settings.PermissionDenied: No session found for uid 1000 (unknown)

और, समकक्ष, जब मैं दौड़ता हूं nmcli c रास्पियन पर एक अप्रतिबंधित उपयोगकर्ता के रूप में, यह कनेक्शन को प्रदर्शित नहीं करता है जैसा कि इसे करना चाहिए। दोनों ठीक से काम करते हैं sudo

अब तक मेरे प्रयास

मुझे कुछ पुरानी उबंटू पोस्ट मिलीं जो बताती हैं कि पॉलिसीकिट पैकेज शामिल है, और मुझे एक फाइल बनाना चाहिए /etc/polkit-1/localauthority/50-local.d/org.freedesktop.NetworkManager.pkla इन सामग्रियों के साथ:

[Enable NetworkManager]
Identity=unix-group:netdev
Action=org.freedesktop.NetworkManager.*
ResultAny=yes
ResultInactive=yes
ResultActive=yes

हालांकि कुछ भी नहीं बदला। (नोट्स: अन्य सभी /etc/polkit-1/localauthority उपफोल्डर्स खाली हैं, और उपयोगकर्ता netdev समूह का हिस्सा है। मुझे यकीन नहीं है कि और क्या जांचना है।)

मैं dbus और NetworkManager के लिए बहुत नया हूं, इसलिए मैं किसी भी मदद की सराहना करता हूं कि डीबीस सिग्नल भेजने की अनुमति कैसे दी जाती है, और मैं लापता NetworkManager अनुमति का निवारण कैसे कर सकता हूं।


5
2018-03-07 13:20


मूल


आपके द्वारा बनाई गई पोल्किट भरें, क्या इसमें पीकेला एक्सटेंशन है? - muru
No session found for uid 1000 किसी अनुमति समस्या से कुछ अधिक मौलिक की तरह लगता है - आप स्क्रिप्ट को वास्तव में कैसे निष्पादित कर रहे हैं, विशेष रूप से एक चल रहे डेस्कटॉप सत्र के साथ चल रहे उपयोगकर्ता के लिए वैध DBUS_SESSION_BUS_ADDRESS के साथ चल रहा है? - steeldriver
लॉग इन उन सत्रों के प्रबंधन के लिए ज़िम्मेदार है जिनके बारे में नेटवर्क मैनेजर शिकायत कर रहा है। शायद जांचें कि सेवा चल रही है। यह देखने के लिए कि क्या यह किसी सत्र को सूचीबद्ध करता है, loginctl चलाने का प्रयास करें। - bwduncan
धन्यवाद दोस्तों; फ़ाइल में पीकेला एक्सटेंशन है (बस इसे जोड़ने के लिए मेरे प्रश्न को संपादित किया गया है)। bwduncan और steeldriver, मुझे लगता है कि आप लोग कुछ पर हो सकता है। मैं एसएसएच के माध्यम से या स्टार्टअप पर पर्यवेक्षक के साथ स्क्रिप्ट चला रहा हूं (सिस्टम रोबोट के लिए है इसलिए इसमें ग्राफिकल डेस्कटॉप स्थापित नहीं है)। loginctl कहते हैं '0 सत्र सूचीबद्ध'। क्या यह पॉलिसीकिट को काम करने से रोकता है? यदि हां, तो क्या कोई कामकाज है? - Luke
इसके अलावा, ps aux दिखाता है /lib/systemd/systemd-logind रूट के रूप में चल रहा है। यद्यपि निश्चित रूप से कोई व्यवस्थित उपयोगकर्ता सत्र नहीं हैं। मुझे यह पता लगाने में परेशानी हो रही है कि एक को कैसे जोड़ना है, क्योंकि सभी दस्तावेज़ जो मुझे मिल सकते हैं, वे कह सकते हैं कि वे मौजूद होना चाहिए। - Luke


जवाब: