আমি ডি-বাসে দূরবর্তী অ্যাক্সেস সেট আপ করার চেষ্টা করছি এবং প্রমাণীকরণ এবং অনুমোদন কীভাবে কাজ করছে না (তা নয়) আমি বুঝতে পারি না।
আমি একটি বিমূর্ত সকেটে একটি ডি-বাস সার্ভার শুনছি।
$ echo $DBUS_SESSION_BUS_ADDRESS
unix:abstract=/tmp/dbus-g5sxxvDlmz,guid=49bd93b893fe40d83604952155190c31
আমি দৌড়ে dbus-monitor
যাচ্ছি তা কি চলছে। আমার পরীক্ষার কেসটি notify-send hello
, যা স্থানীয় মেশিন থেকে মৃত্যুদন্ড কার্যকর করার সময় কাজ করে।
একই মেশিনের অন্য অ্যাকাউন্ট থেকে, আমি সেই বাসের সাথে সংযোগ করতে পারি না।
otheraccount$ DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-g5sxxvDlmz,guid=49bd93b893fe40d83604952155190c31 dbus-monitor
Failed to open connection to session bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
otheraccount$ DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-g5sxxvDlmz,guid=49bd93b893fe40d83604952155190c31 notify-send hello
ডি-বাস স্পেসিফিকেশন ব্রাউজ করার পরে , আমি ~/.dbus-keyrings/org_freedesktop_general
অন্য অ্যাকাউন্টে অনুলিপি করেছি , তবে এটি কোনও লাভ করে না।
আমি ফরওয়ার্ডিং TCP উপর ডিকপ সকেট দ্বারা অনুপ্রাণিত চেষ্টা schedar এর অ্যাক্সেস ডিকপ দূরবর্তী অবস্থান থেকে socat ব্যবহার ।
socat TCP-LISTEN:8004,reuseaddr,fork,range=127.0.0.1/32 ABSTRACT-CONNECT:/tmp/dbus-g5sxxvDlmz
আমি আমার অ্যাকাউন্ট থেকে টিসিপি সকেটে সংযোগ করতে পারি।
DBUS_SESSION_BUS_ADDRESS=tcp:host=127.0.0.1,port=8004 notify-send hello
তবে অন্য অ্যাকাউন্ট থেকে নয়, সাথেও ছিল dbus-monitor
না বা নেইও notify-send
। dbus-monitor
বিমূর্ত সকেটের সাথে উপরে হিসাবে একই ত্রুটি বার্তা ; notify-send
এখন একটি ট্রেস প্রকাশ করে:
otheraccount$ DBUS_SESSION_BUS_ADDRESS=tcp:host=127.0.0.1,port=8004 notify-send hello
** (notify-send:2952): WARNING **: The connection is closed
স্ট্রাকিং থেকে প্রকাশিত হয় যে এই সংস্করণটি notify-send
কুকি ফাইলটি পড়ার চেষ্টা করে না, তাই আমি কেন এটি সংযোগ করতে সক্ষম হব তা আমি বুঝতে পারি।
আমি অন্য মেশিনে এসএসএইচিং চেষ্টা করে টিসিপি সংযোগটি ফরোয়ার্ড করেছি।
ssh -R 8004:localhost:8004 remotehost
আশ্চর্যজনকভাবে, dbus-monitor
কোনও কুকি ফাইল ছাড়াই কাজ করে! আমি দূরবর্তী হোস্ট থেকে ডি-বাস ট্র্যাফিক দেখতে পারি। আমি আমার স্থানীয় dbus-monitor
উদাহরণে শ্রুতিমধুরতা সম্পর্কে একটি বিজ্ঞপ্তি দেখতে পাচ্ছি ।
remotehost$ DBUS_SESSION_BUS_ADDRESS=tcp:host=127.0.0.1,port=8004 dbus-monitor
signal sender=org.freedesktop.DBus -> dest=:1.58 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
string ":1.58"
method call sender=:1.58 -> dest=org.freedesktop.DBus serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
string "eavesdrop=true"
আমি যদি notify-send
লোকাল মেশিনে চালিত করি dbus-monitor
তবে রিমোট হোস্টে বিজ্ঞপ্তিটি দেখতে পাওয়া যায়। এটি অবশ্যই অ্যাক্সেসের এমন একটি স্তরে পৌঁছেছে যাতে প্রমাণীকরণের প্রয়োজন হয়।
notify-send
একটি কুকি না পাওয়া সম্পর্কে অভিযোগ। কুকি ফাইলটি অনুলিপি করার পরে, notify-send
রিমোট মেশিন থেকে কাজ করে।
লোকাল মেশিনটি দেবিয়ান হুইজি চালায়। রিমোট মেশিনটি ফ্রিবিএসডি 10.1 চালায়।
আমি বুঝতে পারি না ডি-বাস প্রমাণীকরণ এবং অনুমোদন কীভাবে কাজ করে।
- রিমোট মেশিনের শংসাপত্র না রেখে কেন আমি যতদূর বলতে পারি শ্রবণশক্তি? আমি যখন টিসিপি সংযোগে ডি-বাস ফরোয়ার্ড করি তখন আমি কী প্রকাশ করব? কেন অনুমোদনের জন্য
dbus-monitor
এবংnotify-send
পৃথক হয়? - আমি কেন একই মেশিনের অন্য অ্যাকাউন্ট থেকে ছদ্মবেশটি পারি না, বিমূর্ত সকেটের উপর দিয়ে বা টিসিপি সংযোগের উপরে কেন?
- আমি লক্ষ্য করেছি যে কুকি ফাইলটি প্রতি কয়েক মিনিটে পরিবর্তিত হয় (এটি নিয়মিত বিরতিতে হয় কিনা তা আমি বুঝতে পারি না)। কেন?
(আমি জানি যে আমি একটি ডিসি-বাস ডেমন চালু করতে পারি যা টিসিপিতে শুনবে That's এটি আমার প্রশ্নের উদ্দেশ্য নয়, আমি বুঝতে চাই যে আমি কী করেছিলাম এবং কী করে কাজ করে নি))
SCM_CREDENTIALS
বিশেষভাবে ব্যবহার করে না । লিনাক্সে এটিSO_PEERCRED
পরিবর্তে সকেট বিকল্প ব্যবহার করে।