কেন sudo -i লক্ষ্য ব্যবহারকারীর জন্য XDG_RUNTIME_DIR সেট করে না?


14

XDG_RUNTIME_DIRsystemctl --userকাজ করার জন্য প্রয়োজনীয় ।

আমি সিস্টেমযুক্ত ব্যবহারকারী সেশনগুলি চালানোর জন্য ওবুন্টু সার্ভার 16.04 সেট আপ করেছি। এখন, এগুলি পরিচালনা করার চেষ্টা করার সময়, আমি দেখতে পাচ্ছি যে যখন কোনও ব্যবহারকারীকে sudo -u $user -iবা তার মাধ্যমেও পরিবর্তন করা হয় তখন su - $userপরিবেশটি XDG_RUNTIME_DIRসেট করে না , systemctl --userকাজ করা থেকে বিরত থাকে । যাইহোক, আমি যখন sshসরাসরি সেই ব্যবহারকারীটিতে প্রবেশ করি তখন এটি সঠিকভাবে সেট করা থাকে।

আমি যদি ডকুমেন্টেশনটি সঠিকভাবে বুঝতে পারি তবে libpam-systemdএটি ব্যবহারকারীর সেশন তৈরি করার সময় সেট করা উচিত । ব্যবহারকারীর স্লাইসটি সঠিকভাবে শুরু করা হয়েছে, যে ডিরেক্টরিটি XDG_RUNTIME_DIRনির্দেশ করতে হবে ( /run/users/$uid) এর উপস্থিত থাকা উচিত । আমি এটিকে কেবল হার্ডকোড করতে দ্বিধা বোধ করছি, বলুন, .bash_profileকারণ এটি হ্যাকি মনে হচ্ছে (যদিও কাজ করা হচ্ছে), যখন পামের যত্ন নেওয়া উচিত।

আমি, অবশ্যই, যোগ করতে পারেন XDG_RUNTIME_DIRকরার env_keepমধ্যে sudoers, কিন্তু যে মাত্র sudoing ব্যবহারকারীর পরিবেশ সংরক্ষণ হবে, যা না করলে আমি কী চাই। আমি লক্ষ্য ব্যবহারকারীর পরিবেশ চাই।

আমি যা সত্যিই ভাবছি, যদিও কীভাবে আসলটি সঠিকভাবে সেট আপ করা হয় sshতবে তা দিয়ে suবা হয় না sudo -i?

উত্তর:


9

আমি এই সমস্যাটি আমার ফেডোরা 25 সিস্টেমে প্রতিলিপি করেছি।

উত্স কোডটিতে আমি একটি অত্যন্ত সন্দেহজনক অবস্থা পেয়েছি। https://github.com/systemd/systemd/blob/f97b34a/src/login/pam_systemd.c#L439 দেখে মনে হচ্ছে এটি সাধারণ মনে রেখে লেখা sudoহয়েছে তবে তা নয় sudo -u non-root-user

machinectl shell --uid=non-root-user আপনার অনুরোধ অনুযায়ী কাজ করেছেন।

systemd-run Machinectl ডকুমেন্টেশনে এর উল্লেখ থাকা সত্ত্বেও কাঙ্ক্ষিত হিসাবে কাজ করতে দেখা যায়নি।

এই মুহুর্তে আপনি সেলইনাক্স সক্ষম করে থাকলে কিছু মেশিনেক্টল কমান্ডগুলি কাজ করে না এবং এই নির্দিষ্ট আদেশগুলি আমার পক্ষে কাজ না করা অবধি কাজ করে না setenforce 0। তবে আমি সেলিনাক্সকে ছুঁড়ে ফেলার জন্য যেমন মেশিনেটেলকে কাজ করার চেষ্টা করার মাঝখানে আছি, সুতরাং আমার বেদনাগুলি সম্ভব হ'ল উদাহরণস্বরূপ machinectl shellসময়সীমার কারণ ।

সম্পাদনা: আমি মনে করি এই আলোচনার পরে এই কোডটি চালু হয়েছিল । এবং দৃশ্যত su -/ sudo -iকাজ করার জন্য তৈরি করা যেতে পারে, তবে কেউ এটি প্রয়োগ করে নি (এখনও)।


অন্য কথায়, প্যাম ডিজাইন করে সেশনের XDG_RUNTIME_DIRজন্য সেট করবে না sudo? আমার ধারণা আমি তখন এটি সেট করেছিলাম ঠিক ~/.profileতেমন হ্যাকি নয় isn't
এমকেইটো

3
আমি "ডিজাইনের মাধ্যমে" বলতে চাই না কারণ নকশাটি কী তা আমি কাজ করতে পারি না। পুনরায় স্যুডো খুঁজছি, আমি দেখতে পাচ্ছি কমপক্ষে কিছু বিল্ড / বিতরণ পর্যাপ্ত পরিবেশের ভেরিয়েবল সংরক্ষণ করে, যে প্রোগ্রামগুলি মূল হিসাবে চালিত হয় তা মূল ব্যবহারকারীর অনুমোদনের সমস্যাগুলি শেষ করতে পারে। তবে এটি লক্ষ্য ব্যবহারকারীর সাথে সম্পর্কিত XDG_RUNTIME_DIR সেট না করার কোনও কারণ নয় ।
সোর্সজেদি

1
সম্পর্কিত সম্পর্কিত প্রশ্নোত্তরটি হল ইউনিক্স.স্ট্যাকেক্সেঞ্জাওয়েড / প্রশ্নগুলি / ৪৩৩6363২
জেডিবিপি

3

আমি যা সত্যিই ভাবছি, এটি কীভাবে ssh দিয়ে সেশনটি সঠিকভাবে সেট আপ করা হবে, তবে su বা sudo -i দিয়ে নয়?

https://github.com/systemd/systemd/issues/7451#issuecomment-346787237

দুঃখিত, তবে "su" ব্যবহারকারীর পরিচয় এবং সাময়িকভাবে খুব কম অন্যান্য প্রক্রিয়া শংসাপত্রগুলি পরিবর্তনের জন্য একটি সরঞ্জাম। এটি সম্পূর্ণ নতুন লগইন সেশন খোলার কোনও সরঞ্জাম নয়। একটি নতুন লগইন অধিবেশন একটি খুব সুস্পষ্টভাবে সংজ্ঞায়িত, মূল সেটআপ রয়েছে, অন্য কোনও অধিবেশন থেকে কিছু উত্তরাধিকার সূত্রে প্রাপ্ত নয়, তবে "সু" ইউআইডি পরিবর্তনের ক্ষেত্রে এটি সত্যিকার অর্থে নয়: বেশিরভাগ মৃত্যুদন্ডের পরিবেশ উত্তরাধিকার সূত্রে প্রাপ্ত, অসংখ্য এবং স্পষ্টতই নয় উপায়গুলি, যেমন ম্যাক প্রসঙ্গ, নিরীক্ষণ প্রসঙ্গ, সিগ্রুপ প্রসঙ্গ, নেমস্পেস প্রসঙ্গ, সময়সূচি, টাইমার গ্রানুলারিটি,…

যদি আপনি একটি সম্পূর্ণ নতুন অধিবেশন চান, তবে "মেশিনেক্টল লগইন" বা "মেশিনেকটেল শেল" এর মতো কিছু ব্যবহার করুন, যা আসলে আপনার সম্পূর্ণ পরিষ্কার, স্বতন্ত্র, বিচ্ছিন্ন পরিবেশ পাবে, যেখানে কোনও আড়াল প্রক্রিয়াকরণের বৈশিষ্ট্যাবলী ফাঁস হবে না সেখান থেকে it

লগইন্ড সেশনগুলি বেশিরভাগই নিরীক্ষণ অধিবেশন ধারণার সাথে আবদ্ধ থাকে এবং "সু" দ্বারা অডিট সেশনগুলি প্রভাবিত হয় না, আসলে এগুলি "সিলড অফ" হিসাবে সংজ্ঞায়িত করা হয়, অর্থাত্ কোনও উপায়ে যদি কোনও প্রক্রিয়া একবার সেশনে প্রবেশ করে তবে তা সর্বদা স্থায়ী থাকবে এটির সাথে এবং তেমনিভাবে তার শিশুরাও হবে, যেমন নতুন সেশন পাওয়ার একমাত্র উপায় হ'ল পিআইডি 1 (বা অনুরূপ কিছু) বন্ধ করে দেওয়া যা কোনও সেশনের অংশ হয় নি।

বা এটি অন্যভাবে বলতে গেলে: "su" এর মাধ্যমে আপনি যে স্টাফটি চাচ্ছেন সেটি "লগইনমেন্টএল" -তে ঠিকঠাক প্রদর্শিত হবে, তবে এটি আপনার মূল সেশনের অংশ হয়ে দাঁড়িয়েছে, আপনি মূলত লগ ইন করেছেন। আপনি আসল সেশনের আইডিতে "লগইনটন স্ট্যাটাস" চাওয়ার মাধ্যমে যাচাই করতে পারেন (যা আপনি প্রতিধ্বনি $ XDG_SESSION_ID এর মাধ্যমে দেখতে পারেন)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.