আমি কি পাইথেক্স ব্যবহার করতে পারি পাইথন স্ক্রিপ্ট বা একটি .ডেস্কটপ ফাইল?


8

নিম্নলিখিত প্রশ্ন থেকে

আমরা দেখতে পাই যে gksu দীর্ঘমেয়াদে আর সমর্থিত হবে না, এবং এটি> = 13.04 থেকে ডিফল্টরূপে ইনস্টল করা হবে না। পরিবর্তে আমাদের পেকেক্সেক ব্যবহার করা উচিত যা গ্রাফিকাল অ্যাপ্লিকেশনগুলির জন্য কাজ ঠিক করে তবে জিইউআইতে অ্যাপলিকেশনগুলির জন্য নয়:

pkexec gedit

একটি .ডেস্কটপ ফাইলটিতে gksu প্রতিস্থাপন করার সময়

EXEC=pkexec /usr/bin/gedit

বা যখন আমি মূল অনুমতি সহ গ্রাফিকাল অ্যাপ্লিকেশন চালানোর জন্য পাইথন স্ক্রিপ্টটি চালিত করি তখন আমি নিম্নলিখিত ত্রুটিটি পাই:

>>>subprocess.Popen(['pkexec','gedit'])
** (gedit:3203): WARNING **: Could not open X display

কোনও প্রমাণীকরণ ডায়ালগ সমর্থন করার জন্য আমার স্ক্রিপ্টগুলি বা আমার .ডেস্কটপ ফাইলগুলিকে কীভাবে পুনরায় লিখতে হবে এবং যদি অ্যাপ্লিকেশনটি gksu এর উপর নির্ভর না করে থাকে তবে রুট হিসাবে অ্যাপ্লিকেশনটি চালাতে পারি?


sudoআমি দেখেছি এমন আপডেটগুলির মধ্যে একটিতে gksu এর জন্য সুডোতে সমর্থনকে সংহত করার বিষয়ে কিছু বলেছিল। আরেকটি বিষয় দেখতে হবে sudo -Aযা ম্যান পৃষ্ঠা অনুসারে একটি (সম্ভবত) গ্রাফিকাল লগইন চালু করে।
j0h

উত্তর:


6

প্রথমে একটি .policyঅ্যাকশন ফাইল তৈরি করুন /usr/share/polkit-1/actions/। এটা যেমন একটি "বিক্রেতা হায়ারারকিকাল" ভাবে কর্ম ফাইল, নাম প্রচলিত আছে com.ubuntu.pkexec.gparted.policyবাorg.debian.apt.policy

তারপরে নিম্নলিখিত সামগ্রীটি পেস্ট করুন:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
 "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">

<policyconfig>

  <action id="org.freedesktop.policykit.pkexec.run-[Short Program Name]">
    <description>Run [Full Program Name]</description>
    <message>Authentication is required to run [Full Program Name]</message>
    <defaults>
      <allow_any>no</allow_any>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">[Full Program Path]</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">TRUE</annotate>
  </action>

</policyconfig>

[Short/Full Program Name/Path]উপযুক্ত মান সহ প্রতিস্থাপন করুন , উদাহরণস্বরূপ gedit, gedit Text Editorএবং /usr/bin/gedit<action id>মানটি বাছাই করা ফাইলের সাথে মিলানোর প্রয়োজন নেই (এবং একক ফাইলে একাধিক ক্রিয়াকলাপ থাকতে পারে), তবে প্রচলিতভাবে ফাইলের নামটি তার সমস্ত ক্রিয়াকলাপের উপসর্গ।

ফাইলটি সংরক্ষণের পরে নির্দিষ্ট প্রোগ্রামটি এক্স এবং জিইউআই এবং এর সাথে চলবে।

আরেকটি সমাধান বলে মনে হচ্ছে: /etc/pam.d/polkit-1 এ নিম্নলিখিত লাইনটি যুক্ত করুন:

সেশন alচ্ছিক pam_xauth.so


1

ব্যবহারকারীর স্ক্রিপ্টগুলির জন্য আরও একটি সমাধান: আপনার স্ক্রিপ্টের মধ্যে উপযুক্ত পরিবেশের ভেরিয়েবলগুলি নির্ধারণ করুন।

এটি করার জন্য আপনি নীচের মতো একটি স্নিপেট ব্যবহার করতে পারেন:

getXuser() {
        user=`pinky -fw | awk '{ if ($2 == ":'$displaynum'" || $(NF) == ":'$displaynum'" ) { print $1; exit; } }'`
        if [ x"$user" = x"" ]; then
                startx=`pgrep -n startx`
                if [ x"$startx" != x"" ]; then
                        user=`ps -o user --no-headers $startx`
                fi
        fi
        if [ x"$user" = x"" ]; then
               user=$(pinky -fw | awk '{ print $1; exit; }')
        fi
        if [ x"$user" != x"" ]; then
                userhome=`getent passwd $user | cut -d: -f6`
                export XAUTHORITY=$userhome/.Xauthority
        else
                export XAUTHORITY=""
        fi
        export XUSER=$user
}


for x in /tmp/.X11-unix/*; do
   displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
   getXuser;
      if [ x"$XAUTHORITY" != x"" ]; then
        export DISPLAY=":$displaynum"
      fi
done

(এসিপিআই getXuserফাংশনের উপর ভিত্তি করে )

আপনি যদি নিজের .desktopফাইলটি এখনও কাজ না করে দেখতে পান তবে pkexec commandlineআপনি একটি shস্নিপেটে মোড়ানোর চেষ্টা করতে পারেন , যেমন:

Exec=sh -c "pkexec --user root script_that_needs_root.sh"

শেষ সমস্যাটি একটি পরিচিত বাগ, স্পষ্টত:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=690339

https://bugzilla.xfce.org/show_bug.cgi?id=9373

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=650038

https://bugzilla.gnome.org/show_bug.cgi?id=686059

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