একটি .ডেস্কটপ ফাইলে pkexec কমান্ড


13

আমি অ্যান্ড্রোক্সাইডের ফ্ল্যাশটুলের জন্য একটি ডেস্কটপ ফাইল তৈরি করেছি (সনি এক্স্পেরিয়া ডিভাইসের জন্য ইউটিলিটি যা আমাকে তার ফোল্ডারে এক্সিকিউটেবল ফাইলের সাথে খুলতে হবে) যাতে ফাস্টবুট ইউটিলিটিগুলি ব্যবহার করার জন্য রুট সুবিধার দরকার হয়। আমি এটি দিয়ে কাজ করতে ব্যবহৃত হত gksu, তবে আমি উবুন্টু 15.04 এ আছি এবং gksu এখন বয়স্ক।

আমি execলাইনটি সংশোধন করার চেষ্টা করেছি

Exec=gksu /home/natasha/FlashTool/FlashTool
প্রতি
Exec=pkexec /home/natasha/FlashTool/FlashTool
তারপরে, আমি পেকেেক্স সম্পর্কে পড়লাম এক্স 11 অ্যাপ্লিকেশনগুলি চালানোর অনুমতি দেয় না এবং তাই আমি এইভাবে ওভাররাইড করি:

এখানে চিত্র বর্ণনা লিখুন

ইমগুর ডটকমের সম্পূর্ণ চিত্রের লিঙ্ক

এখন সমস্যাটি: এটি আমাকে পাসওয়ার্ড জিজ্ঞাসা করে তবে ফ্ল্যাশটোলের জিইউআই শুরু হয় না। তবে আমি যদি কমান্ডটি টার্মিনালে চালিত করি তবে সমস্যা ছাড়াই প্রোগ্রামটি শুরু হয়। আমি কি করতে পারি?

এখানে চিত্র বর্ণনা লিখুন

ইমগুর ডটকমের সম্পূর্ণ চিত্রের লিঙ্ক


pkexec কাজ করার জন্য একটি নীতি ফাইল প্রয়োজন, আপনার একটি এখানে কিছু তথ্য তৈরি করতে হবে - freedesktop.org/software/polkit/docs/0.105/pkexec.1.html অথবা বিদ্যমানগুলি কীভাবে করা হয়েছে তা দেখতে ব্যবহার করতে, - / usr / share / polkit-1 / কর্ম। দয়া করে মনে রাখবেন নীতি কখনও কখনও যখন একটি অ্যাপ্লিকেশন অংশ ইনস্টল করুন, (। অর্থাত ইস্যু ছাড়া কর্মস্থল) ভালো হয়, যদি আপনি একটি 'খোলা যাচ্ছে না ডিসপ্লে' ভুল পান তাহলে যেমন সমাধান নীচে উপস্থিত হয় না ubuntuforums.org/...
ডগ

উত্তর:


9

এতে একটি নতুন ফাইল তৈরি করুন /usr/share/polkit-1/actions/

sudo nano /usr/share/polkit-1/actions/FlashTool.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-FlashTool">
    <description>Run FlashTool</description>
    <message>Authentication is required to run FlashTool</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">/home/natasha/FlashTool/FlashTool</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">TRUE</annotate>
  </action>

</policyconfig>

তারপরে একটি নতুন ফাইল তৈরি করুন /home/natasha/FlashTool/

nano /home/natasha/FlashTool/flashtool-pkexec

এবং নীচের লাইনগুলি যুক্ত করুন:

#!/bin/sh
pkexec "/home/natasha/FlashTool/FlashTool" "$@"

Execআপনার desktopফাইলে নীচের লাইনটি ব্যবহার করুন:

Exec=/home/natasha/FlashTool/flashtool-pkexec

নিম্নলিখিত সিস্টেমে আমার সিস্টেমে উবুন্টু 15.04 জিনোমে পরীক্ষিত :


$ cat /usr/share/applications/gedit.root.desktop 
[Desktop Entry]
Name=Gedit as root
GenericName=Text Editor
X-GNOME-FullName=
Comment=
Exec=gedit-pkexec
Icon=gedit
Terminal=false
Type=Application
Categories=GNOME;System;Filesystem;Settings;
StartupNotify=true
X-Ubuntu-Gettext-Domain=gedit

$ cat /usr/share/polkit-1/actions/gedit.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-FlashTool">
    <description>Run FlashTool</description>
    <message>Authentication is required to run FlashTool</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">/usr/bin/gedit</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">TRUE</annotate>
  </action>

</policyconfig>

$ cat /usr/bin/gedit-pkexec 
#!/bin/sh
pkexec "gedit" "$@"

এটি কাজ করে! কেবলমাত্র আমি যা পরিবর্তন করেছি তা হ'ল Execকমান্ডটি: আমি Exec=pkexec /home/natasha/FlashTool/FlashToolআগের মতোই লিখেছিলাম , কারণ ফ্ল্যাশটোল-পেকেক্সেক .ডেস্কটপ ফাইলটিতে কাজ করে না। নীতি ফাইলটিকে ধন্যবাদ এটি একটি কবজির মতো কাজ করে। ধন্যবাদ!
nplezka

@nplezka একটি .ডেস্কটপ ফাইল থেকে শেল স্ক্রিপ্ট চালাতে, এমনকি #!আপনার Execকমান্ডটি উপস্থাপন করতে হবে /bin/sh
TheSola10

0

sudo -Hগ্রাফিকাল অ্যাপ্লিকেশনটি ব্যবহারকারীর কনফিগারেশন ফাইলগুলিতে পরিবর্তনগুলি প্রতিরোধ করার জন্য আরম্ভ করার জন্য যথেষ্ট ~/, যেহেতু এটি চলমান পরিবেশের হোম ডিরেক্টরিটি মূলের হোম ডিরেক্টরিতে সেট করে:

Exec=sudo -H /home/natasha/FlashTool/FlashTool

একটি desktopফাইল?
এবি

@ এ্যাব হ্যাঁ, কেন নয়?
কোস

@ এএবিকে এটি যে কোনও shপরিস্থিতিতে চালানো সমান (সম্ভবত কিছু পরিবেশের পরিবর্তনশীলগুলির সাথে অ্যাডহক সেট রয়েছে তবে এখানে কোনও সমস্যা নেই)।
কোস

আমি মনে করি না এটি আপনার পাসওয়ার্ড চাইতে এবং অ্যাপ্লিকেশনটি চালু করতে যাচ্ছে sudoযদি আপনার লঞ্চারে Terminal=falseলাইন থাকে .desktop(যেমন ওপি এখানে রয়েছে)। তবে সম্ভবত এটি Terminal=trueপরিবর্তে কাজ করবে ।
পোমস্কি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.