আমি কেন 'রুট' থেকে জিইউআই অ্যাপস চালাতে পারি না: "কোনও প্রোটোকল নির্দিষ্ট করা হয়নি"?


38

আমি গত রাতে আমার মেশিনে ডিবিয়ান ইনস্টল করেছি। এখন, আমি বুঝতে পারি না যে আমি রুট হিসাবে চলতে গিয়ে কেন টার্মিনাল থেকে জিইউআই অ্যাপ্লিকেশন চালাতে পারি না।

উদাহরণ স্বরূপ:

sudo -i
glxgears

নিম্নলিখিত আউটপুট উত্পন্ন:

No protocol specified
Error: couldn't open display :0

তবে আমি যখন প্রথম টার্মিনালটি খুলি তখন আমি glxgearsব্যবহারকারীর অ্যাকাউন্ট থেকে চালাতে পারি । আমি কেবল এটির পরেই sudo -iসমস্যাটি বেড়ে যায়। আমি চালানোর চেষ্টা করি এমন কোনও জিইউআই অ্যাপ্লিকেশানের জন্য এটি ঘটে। আমি সম্ভবত এটি X11 এর সাথে সম্পর্কিত বলে মনে করি, তবে আমি নিশ্চিত নই।


1
stackoverflow.com/a/20612084 এটি আমার জন্য নিখুঁতভাবে কাজ করেছে।

ওয়েল্যান্ড সম্পর্কে, কেবলমাত্র ক্ষেত্রে: আর্ক উইকি , "গ্রাফিকাল অ্যাপস সহ সুডো ওয়েল্যান্ডল্যান্ডে কাজ করে না"
অ্যালেক্সি

উত্তর:


39

এক্স সার্ভার অ্যাক্সেস করতে দুটি জিনিস প্রয়োজন:

  • $DISPLAYপরিবর্তনশীল সঠিক প্রদর্শনে প্রতি নির্দেশ (সাধারণত :0)
  • যথাযথ প্রমাণীকরণের তথ্য

প্রমাণীকরণ তথ্য স্পষ্টভাবে মাধ্যমে নির্দিষ্ট করা যেতে পারে $XAUTHORITY, এবং ~/.Xauthorityঅন্যথায় ডিফল্ট ।

যদি $DISPLAYএবং $XAUTHORITYআপনার ব্যবহারকারীর জন্য sudoসেট করা থাকে তবে সেগুলিও নতুন শেলের জন্য সেট করে রাখবে এবং সবকিছু ঠিকঠাক কাজ করা উচিত।

যদি সেগুলি সেট না করা থাকে তবে তারা সম্ভবত ভুল মানগুলিতে ডিফল্ট হবে এবং আপনি এক্স অ্যাপ্লিকেশন শুরু করতে পারবেন না।

ডেবিয়ানে $XAUTHORITYসাধারণত স্পষ্টভাবে সেট করা হয় না। শুধু যোগ কর

export XAUTHORITY=~/.Xauthority

আপনার .bashrcবা স্পষ্টভাবে বলতে XAUTHORITY=~/.Xauthority sudo ...এবং সবকিছু কাজ করা উচিত।

xauth listযথাযথ প্রমাণীকরণের তথ্য পাওয়া যায় কিনা তা পরীক্ষা করতে আপনিও ব্যবহার করতে পারেন ।


1
xauth infoকর্তৃপক্ষের ফাইলের পথ দেখায়
টমাস টোমেসেক

1
xhost +আমার সমস্যা সমাধান করুন
বিপদ 89

3
সতর্কতা xhost +
অবলম্বন করুন

1
ডিবিয়ানদের জন্য, আমি কি XAUTHORITY রফতাকে মূল হিসাবে টাইপ করব? কারণ এটি 10 ​​তে কাজ করছে না? আমি sudo su
marinara ২

sudo -iপরিবর্তে @marinara ব্যবহার করুন sudo su -
মিচাস ২

23

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

[bar@localhost ~]$ sudo -u foo -H firefox

দুঃখজনকভাবে সেই কমান্ডটি একইরূপে ত্রুটি হিসাবে ব্যর্থ হয়েছে (যেমন কোনও প্রোটোকল নির্দিষ্ট করা এবং প্রদর্শন খুলতে পারে না)

আমার সমাধানটি হ'ল এক্স সার্ভারে অনুমোদিত অ্যাক্সেসের তালিকায় কেবলমাত্র ব্যবহারকারী foo যুক্ত করা।

xhost si:localuser:foo

এবং এটি হ'ল আমি তখনই ফায়ারফক্স (এবং অন্যান্য এক্স অ্যাপ্লিকেশন) ব্যবহার করে sudoএবং ব্যবহারকারী foo চালু করতে সক্ষম হয়েছি ।

পটভূমি : এক্স উইন্ডোতে একটি ক্লায়েন্ট / সার্ভার আর্কিটেকচার রয়েছে। আপনি যখন কোনও অ্যাপ্লিকেশন চালু করেন আপনি এক্স সার্ভারের অনুমোদনের জন্য এটি প্রদর্শনের জন্য অনুরোধ করেন। ডিফল্টরূপে একবার আপনি একটি সেশন খোলার পরে (আপনি গ্রাফিকালি লগইন করুন), আপনাকে (আপনার ব্যবহারকারী) স্পষ্টতই সার্ভার এবং প্রদর্শন অ্যাপ্লিকেশনগুলির সাথে কম্যুনিকেট করার অনুমতি পাবেন। অন্যান্য ব্যবহারকারীদের যদি আপনি এটি নির্দিষ্ট না করেন তবে এই অনুমতি নেই। xhostঅনুমতিগুলির তালিকা চালিত করার একটি সরঞ্জাম। siইঙ্গিত করে যে নিয়ম সার্ভার প্রান্তের হয় এবং এটি স্থানীয় ব্যবহারকারী অনুমোদন fooপ্রদর্শন অ্যাপ্লিকেশনের জন্য। এক্স উইন্ডো এক্ষেত্রে খুব শক্তিশালী এবং আপনি স্থানীয়ভাবে দূরবর্তী অ্যাপ্লিকেশনগুলি DISPLAYপরিবেশগত পরিবর্তনশীল এবং xhost(তবে তাদের মধ্যে সীমাবদ্ধ নয়) দিয়ে খেলতে পারেন । পুরানো সময়ে, যখন লোকেরা টাইপ করেxhost + এবং নিখুঁতভাবে প্রত্যেককে তাদের এক্স সেশনটি ব্যবহার করার অনুমতি দেওয়া হয়েছিল, খালি জন্য তাদের পর্দায় অ্যাপ্লিকেশন প্রদর্শন করা সম্ভব হয়েছিল ;-) আজকাল মানুষ এক্স উইন্ডো ক্লায়েন্ট / সার্ভার আর্কিটেকচার (কমপক্ষে আমি যা পর্যবেক্ষণ করি তার জন্য কম ব্যবহার করি) গত 10 বছর)

PS: ফায়ারফক্সকে এক ধরণের "জেল" ( ভবিষ্যতে পিডিএফ.জেএসের মতো দুর্বলতা এড়াতে ) চালু করার জন্য আমি এটি করেছি । তবে আমি দ্রুত জানতে পেরেছি যে সুডোর মাধ্যমে ফায়ারফক্সকে কল করা এটি অডিও বা ভিডিও হার্ডওয়্যার অ্যাক্সেসের অনুমতি দেয় না। তবে একটি লোক আছে যা সুডোর মাধ্যমে ফায়ারফক্সকে কল করার সময় কীভাবে ভিডিও হার্ডওয়্যার ত্বরণ এবং অডিও সক্রিয় করতে হয় তা স্পষ্টভাবে ব্যাখ্যা করে । এই নির্দেশাবলী সহ ওয়াইএমএমভি, উদাহরণস্বরূপ আমার কাছে এখনও অডিও সহ অনুমতি অস্বীকার করা হয়েছে তবে ভিডিও ভাল (সেলডাক্স ওপরে ফেডোরা 22 তে পরীক্ষা করা হয়েছে)।


1
আমার ক্ষেত্রে fooছিল root, অর্থাৎ আমাকে xhost si:localuser:rootউবুন্টু 17.10 এ চালানো হয়েছিল।
কার্ল রিখটার

xhost si:localhost<user>কমান্ড যোগ করবেন কোথায় ? যদি কোনও ব্যবহারকারী লগইন হয় না, তবে কারও কাছে অনুমতি দেওয়ার জন্য কোনও এক্স সার্ভার উপলব্ধ নেই।
cbcoutinho

@cbcoutinho উপরের ব্যবহারের ক্ষেত্রে যখন কেউ লগ ইন থাকে এবং একই হোস্টের অন্য কেউ হিসাবে এক্স উইন্ডো অ্যাপ্লিকেশন চালাতে চায়। যদি আপনি আপনার ব্যবহারের কেসটি ব্যাখ্যা করেন (আপনি কী সমস্যাটি সমাধান করতে চান) তবে আমি আপনাকে সম্ভাব্যভাবে সহায়তা করতে পারি।
হিউজেন্স

@ হুইজেনস আমার কাছে জিপিইউতে সজ্জিত তরল অনুকরণের জন্য একটি ওয়ার্কস্টেশন রয়েছে। আমি সাধারণত একটি ওয়ার্কস্টেশন নিজেই উপর ParaViewনির্মিত একটি প্রোগ্রাম, সঙ্গে ভিজ্যুয়ালাইজেশন রেন্ডার vtkParaViewএছাড়াও এসএসএসের মাধ্যমে সুরক্ষিত হেডলেস ক্লায়েন্ট / সার্ভার রেন্ডারিং মডেল সরবরাহ করে, যা আমি ভিএনসি ব্যবহার না করে দূরবর্তী থেকে সুবিধা নিতে চাই। ওয়ার্কস্টেশনটিতে লগইন এবং সম্পাদন xhostনা করে, আমি জিপিইউ ব্যবহার করতে পারি না। এর অর্থ হল যে আমি মেশিনটিকে দূর থেকে রিবুট করতে পারি না এবং এখনও জিপিইউতে অ্যাক্সেস পাই।
cbcoutinho

1
@cbcoutinho এক্স উইন্ডো একটি ক্লায়েন্ট সার্ভার আর্কিটেকচার। আপনি যখন ssh এর মাধ্যমে সংযুক্ত হন, আপনার স্থানীয় ওয়ার্কস্টেশনটি ক্লায়েন্ট এক্স উইন্ডোতে পরিণত হয়। আপনি xhost rlogin এর মতো অনিরাপদ প্রোটোকল সহ ব্যবহার করতে পারেন তবে ssh নয়। আপনার জন্য এটি করার জন্য আপনাকে ssh নির্দেশনা দিতে হবে। হয় ssh এ -Xবা (আরও ভাল?) -Yপতাকা ব্যবহার করুন এটি সঠিক পুনঃনির্দেশটি করবে। অবশ্যই আপনার তখন একটি স্থানীয় সি সার্ভার দরকার। তবে জিপিইউ এবং ওপেনজিএল দিয়ে, আমি নিশ্চিত নই যে রেন্ডারিং / গুনটি কোথায় ঘটে তা সম্ভবত এটি ক্লায়েন্টের পক্ষে, সার্ভারের নয়। কৌতুকপূর্ণ হতে পারে।
হিউজেনস

10

অপরপক্ষে তুমি

যোগ করে কমান্ড লাইনে প্রদর্শিত হবে প্রদর্শনটি নির্দিষ্ট করুন -display :0.0

অথবা

রুটের লগইন স্ক্রিপ্টে পরিবেশের পরিবর্তনশীল সেট আপ করুন (.bashrc, .প্রফাইল, .বাশ_প্রফিলার মধ্যে একটি ...)।

export DISPLAY=:0.0

এটি সেট করা আছে কিনা তা আপনি পরীক্ষা করতে পারেন,

$ env |grep DISPLAY
DISPLAY=:0.0

আপনার সাধারণ ব্যবহারকারী হিসাবে সমস্ত হোস্টের সমস্ত ব্যবহারকারীর জন্য আপনার ডিসপ্লেটি খুলতে আপনি এটি করতে পারেন:

xhost +


1
xhost + sudo হিসাবে যাবার আগে অস্থায়ী ব্যবস্থা হিসাবে কাজ করে
অক্টোপাস

1
xhost +খুবই আমার জন্য কাজ, শুধুমাত্র যে, তারা আমরা অনুমোদিত করার ব্যবহারকারীর টার্মিনাল, না থেকে একটি টার্মিনাল অধীনে থেকে এটা চালানো উচিত উল্লেখ করতে ভুলে গেছি sudo su
nyxee

1
বুমের মতো নিখুঁত কাজ
আদিআইই 26'18

3

আপনি দেবিয়ানে রয়েছেন এমনটি দেওয়া, সহজ এবং সমর্থিত সমাধান হ'ল sudoআপনার এক্স 11 অনুমোদনের শংসাপত্রগুলি অনুলিপি করার ব্যবস্থা করা । ঠিক এই উদ্দেশ্যে প্যাকেজ pam_xauthঅন্তর্ভুক্ত করা হয় libpam-modules; এটি ব্যবহার করতে, আপনাকে কেবল যুক্ত করতে হবে

session  optional  pam_xauth.so

আপনার /etc/pam.d/sudoফাইল আপনি এটিকে যুক্ত করতেও বেছে নিতে পারেন su। সম্পূর্ণ তথ্যের pam_xauthজন্য অবশ্যই ম্যান পেজটি দেখুন।


2

আমাকে কী সাহায্য করেছিল:

  1. আপনি করতে পারেন xauth generate :0 . trustedউপর userদিকে, যা একটি নতুন জেনারেট করবেMIT-MAGIC-COOKIE-1
  2. xauth list' asব্যবহারকারীর andরুট (they should be the same if yourxAuthority` ভেরিয়েবলের সাহায্যে সদ্য নির্মিত কীটি একই ফাইলটির দিকে নির্দেশ করছে Check

  3. ভয়েলা, টার্মিনাল থেকে rootযে কোনওটি অ্যাক্সেস করতে পারে X-Appতবে কেবল অস্থায়ীভাবে।

এটিকে স্থায়ী করতে, @ হুইজেন্সের উত্তর দেখুন!


1

বিকল্প সমাধান :

রুটের নীচে চলমান ক্রোনের মতো পরিষেবাদির বর্তমান এক্স ব্যবহারকারী রুট না হলে প্রদর্শন করার অ্যাক্সেস নেই।

আমাদের কেবল এক্সে রুট ব্যবহারকারী যুক্ত করা দরকার, আপনি একটি স্টার্টআপ স্ক্রিপ্ট দিয়ে লগইন সময়ে এটি করতে পারেন

xhost local:root

পরীক্ষার উদ্দেশ্যে আমরা কেবলমাত্র বর্তমান ব্যবহারকারীর অধীনে কমান্ড না দিয়ে চালাতে পারি এবং মূল স্ক্রিপ্ট / কাজ / পরিষেবা / পুনরায় চালু করতে পারি ...


শুধু কৌতূহল, আপনি কেন ক্রোন দিয়ে গুঁই অ্যাপ্লিকেশন চালাবেন?
অক্টোপাস

আমার ডিস্ট্রোতে আমার একটি মূল ক্রোন জব (এমসিএসি) রয়েছে যা সিস্টেম সুরক্ষা স্বাস্থ্য পরীক্ষা করে এবং একটি প্রতিবেদন তৈরি করে ... সুতরাং সেই প্রতিবেদনটি পরীক্ষা করার জন্য লগ এ যাওয়ার পরিবর্তে আমি যখন কাজটি চালিত হয় তখন প্রতিবেদনের সাথে পপআপ গুই রাখা পছন্দ করি
ইনটিকা

এটি আমার জন্য কাজ করেছে
মার্কাস ভিনিসিয়াস পম্পেইউ

0

sudoকমান্ড একটি সুইচ বিভিন্ন পরিবেশের সংরক্ষণ করা হয়েছে।

 -E, --preserve-env            preserve user environment when running command

যাতে আপনি -E সুইচ দিয়ে কমান্ডটি চালাতে পারেন। উদাহরণ:

sudo -E wireshark

আপনার যদি ওয়েব ব্রাউজারগুলির মতো গোপনীয়তার সমালোচনা অ্যাপ্লিকেশন চালানোর প্রয়োজন না হয় তবে আপনি sudo সহ ই-সুইচ যুক্ত করা ভাল better আমরা কেবল -E সুইচ যুক্ত করে ক্রোম বা ফায়ারফক্স চালাতে পারি না । কারণ অনেক ব্রাউজার ব্যবহারকারীর স্থান লঙ্ঘনের বিরুদ্ধে সুরক্ষা কার্যকর করেছে। @ হুইজেনসের উত্তরের বিষয়ে এই বিষয়ে অন্তর্দৃষ্টি থাকতে পারে।

দ্রষ্টব্য: আপনার ব্যবহারকারীর পরিবেশ না থাকলে DISPLAY এবং XAUTHORITY ইতিমধ্যে সঠিকভাবে সেট করা থাকলে -E স্যুইচ যুক্ত করা কার্যকর হবে না


-1

এই কমান্ডটি ব্যবহার করুন এবং এটি কার্যকর হবে

sudo cp /home/user/.Xauthority .Xauthority

2
এটি আমার cp: cannot stat ‘/home/user/.Xauthority’: No such file or directoryকাছে যে 10+ ডেবিয়ান ভিত্তিক মেশিন অ্যাক্সেস রয়েছে তা দেয়।
অ্যান্থন

এটি সামান্য প্রসঙ্গ দেয় (উদাহরণস্বরূপ, আপনি নিঃশব্দে কিছু বর্তমান ডিরেক্টরি প্রত্যাশা করেছেন) এবং একাধিক এক্স 11 দৃষ্টান্তে এমন করার সময় আপনি সমস্যার মতো পার্শ্ব প্রতিক্রিয়া উল্লেখ করেন না। আমি মনে করি এই উপায়টি কিছুটা হ্যাকি।
v6ak
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.