Su ব্যবহারকারীর জন্য 'কোনও প্রোটোকল নির্দিষ্ট নেই' কীভাবে সমাধান করবেন


15

আমি আমার সিস্টেমে গ্রাফিকাল সফ্টওয়্যার চালানোর জন্য একটি বিকল্প ব্যবহারকারী (নন-অ্যাডমিন) ব্যবহার করার চেষ্টা করছি। এই বিকল্প ব্যবহারকারীর নামকরণ করা হয়েছে এবং একই নামের একটি রিমোট সিস্টেম ব্যবহারকারীর সাথে মেলে একটি ইউআইডি এবং জিআইডি দেওয়া হয়েছে। ইউআইডি 500 হয় তাই আমি বিশ্বাস করি যে ব্যবহারকারীকে 'অ-লগইন' ব্যবহারকারী করে তোলে।

উবুন্টু থেকে আমার মূল অ্যাকাউন্টে লগইন করে, আমি একটি টার্মিনাল এবং suবিকল্প ব্যবহারকারীর জন্য খুলি । আমি তখন অ্যাপ্লিকেশনটি শুরু করতে এবং 'কোনও প্রোটোকল নির্দিষ্ট করা হয়নি' পাওয়ার জন্য আদেশটি কার্যকর করার চেষ্টা করি।

এটি কি ইউআইডি <1000 এর suকারণে, না ব্যবহারকারীর প্রশাসনিক বা প্রশাসনিক প্রশাসনের কারণে? আমি কীভাবে এই ব্যবহারকারীকে একটি জিইউআই দিয়ে অ্যাপ্লিকেশনটি কার্যকর করতে পারি?

উত্তর:


15

ব্যবহারকারীর ইউআইডি থাকায় সমস্যা দেখা দিচ্ছে না । ইউআইডি হিসাবে 500 টি ঠিক আছে, এবং কিছু ইউএসআইডি পরিচালকের ডিফল্ট সেটিংসের চোখ বাদে ইউআইডি এটিকে 'লগ-ইন' না করে তোলে।

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

এক্স 11 কুকিটি অন্য অ্যাকাউন্টে অনুলিপি করতে আপনার আসল ব্যবহারকারী হিসাবে চালিয়ে চেষ্টা করুন:

su - <otheruser> -c "unset XAUTHORITY; xauth add $(xauth list)"

তারপরে আপনার অ্যাপ্লিকেশনটি চালান। XAUTHORITYআপনারও সেই শেলটিতে আনসেট করার প্রয়োজন হতে পারে। এই কমান্ডটি xauth listআপনার প্রধান ব্যবহারকারীর কাছ থেকে ম্যাজিক কুকি ( ) বের করে এবং এটি ( xauth add) যুক্ত করে যেখানে অন্য ব্যবহারকারী এটি পেতে পারে।


উদ্ভট, আপনার উদ্ধৃত কমান্ডটি ব্যবহার করে 'su: অবশ্যই টার্মিনাল থেকে চালানো উচিত'। কিন্তু এটা হয় টার্মিনালে ...
জে কলিন্স

@ জ্যাকলিন্স চেষ্টা করুন xauth list >/tmp/xa.$$; su - <otheruser> -c "unset XAUTHORITY; xargs xauth add </tmp/xa.$$"; rm -f /tmp/xa.$$কিন্তু সচেতন থাকুন সেখানে একটি ভয়ঙ্কর রেসের অবস্থা আছে।
রোয়াইমা

@ জ্যাকলিনস ওফ, হ্যাঁ, suপাসওয়ার্ড চাইলে সমস্যা হবে । এই নতুন কমান্ড চেষ্টা করুন।
সেলেদা

@ ক্যালাডা, সোনার একটি ট্রিট কাজ করেছে। আপনি কি সেই আদেশটি কী করছেন এবং কীভাবে বিশদ জানাতে পারেন? এবং সম্ভবত ব্যাখ্যা করে আসল অবতার কেন হয়নি?
জে কলিন্স

1
@ জ্যাকলিনস আপনি লগ আউট এবং লগ ইন করার পরে প্রতিবার এটি আবার করতে হবে কারণ প্রতিবার একটি নতুন ম্যাজিক কুকি তৈরি হয়। এটি স্বাভাবিক, এটি সুরক্ষা মডেলের অংশ।
সেলেদা

6

আমি আমার ক্ষেত্রে নতুন ডিসপ্লে সার্ভারের waylandসমস্যা ছিল,

ঠিক xhost + local:তখনই অন্যান্য ব্যবহারকারীদের (যেমন মূল) আপনার সেশনে প্রোগ্রামগুলি চালনার অনুমতি দেওয়া হয়, তবে নেটওয়ার্ক সংযোগগুলি অনুমোদিত হবে না।

আপনি যদি কোনও হোস্ট থেকে ক্লায়েন্টকে অনুমতি দিতে চান তবে কোনও হোস্টকেxhost + নির্দিষ্ট করে নাও ব্যবহার করতে পারবেন । এটি যদিও অনিরাপদ , কেবলমাত্র যে হোস্টের জন্য আপনি আপনার সেশনে অ্যাক্সেস দিতে চান তা নির্দিষ্ট করে দেওয়া ভাল।


1
আমার ক্ষেত্রে xhost +যথেষ্ট ছিল
বিপদ 89

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

3

এরকম কিছু চেষ্টা করুন

$ export LOGIN_USER="Math"
$ su - $LOGIN_USER
$ sudo xhost local:$LOGIN_USER &>/dev/null

সূত্র

PS : গৃহীত উত্তরটি আমার পক্ষে কার্যকর হয়নি


3

ধরুন আপনি নিজের সাথে এক্সের সাথে সংযোগ পেতে জোর করে চাপিয়ে দিতে চান ...

ধরে নেওয়া যাক আপনি সার্ভারে ইতিমধ্যে আপনার কমান্ডগুলি চালাচ্ছেন (যেখানে এক্স রান করে), অন্যথায় প্রথমে এটি কাজ করুন এবং তারপরে ক্লায়েন্টের পরে 'ssh -X ব্যবহারকারী @ সার্ভার ব্যবহার করুন;)'।

Xauth কমান্ডগুলি চালনার বিভিন্ন উপায় থাকতে পারে, উদাহরণস্বরূপ, আপনি 'sudo' ব্যবহার করছেন তবে এটি পরিবেশের ভেরিয়েবলগুলি হারাতে বা পরিবর্তন করতে পারে। নিম্নলিখিত পরিবেশের ভেরিয়েবলগুলি সংরক্ষণ করা দরকার: DISPLAY এবং XAUTHORITY। যদি এটি হয় তবে আপনি যদি আপনার কমান্ডগুলি চালিত করেন ঠিক তেমনই 'প্রতিধ্বনি $ XAUTHORITY' চালাতে পারতেন তবে এটি পরীক্ষা করতে পারেন তবে নিশ্চিত হয়ে নিন যে আপনি এই আদেশগুলি চালানোর আগে আপনি পরিবেশের পরিবর্তনশীলগুলি প্রসারিত করছেন না। উদাহরণস্বরূপ, sudo bash -c '"XAUTHORITY"' প্রতিধ্বনিটি দেখুন আপনার sudo চালানোর পরে XAUTHORITY আসলে কী তা দেখার জন্য (যদি এটি অদৃশ্য হয়ে যায় তবে আপনার sudoers ফাইলে কিছু যোগ করার প্রয়োজন হতে পারে, অন্য কোথাও দেখুন)।

অবশেষে, সার্ভারে আপনি যে ব্যবহারকারীর মাধ্যমে অ্যাক্সেস পেতে চান সে হিসাবে নিম্নলিখিত কমান্ডটি চালান:

xauth info

এটি 'কর্তৃপক্ষ ফাইল' প্রদর্শন করবে যা ব্যবহার করা হবে (/root/.Xauthority ডিফল্টরূপে, মূলের জন্য, বা / home/theuser/.Xauthority এর মতো কিছু)। যদি এটি। )।

ফাইলটি সরান (এটি উপস্থিত থাকলেও):

rm /root/.Xauthority

/root/.Xauthorityআপনার ক্ষেত্রে সঠিক XAUTHORITY ফাইলটি প্রতিস্থাপন করুন ।

এটি পুনরুদ্ধার করুন, তবে খালি (এটি অনেক কমান্ডের জন্য প্রয়োজন):

touch /root/.Xauthority

এই মুহুর্তে আপনি কোনও প্রোটোকল নির্দিষ্ট ত্রুটি পাবেন, এমনকি যদি আপনি আগে অবৈধ এমআইটি-ম্যাজিক-কুকি -১ পেয়েছিলেন । এক্স সার্ভারটি এই মুহুর্তে যে কর্তৃপক্ষ ফাইলটি ব্যবহার করছে তা সন্ধান করুন:

ps aux | grep Xorg

এটি এমন কিছু দেখাতে হবে:

root 1153 0.0 1.0 149560 44464 tty7 Ss+ dec02 0:00 /usr/lib/xorg/Xorg -nolisten tcp -auth /var/run/sddm/{ef18c483-7891-4e82-80ef-2c8f9bd79711} -background none -noreset -displayfd 17 vt7

-authপরবর্তী কমান্ডে আপনার প্রয়োজনীয় ফাইলের নাম । এটি রুট হিসাবে চালান:

sudo xauth -f '/var/run/sddm/{ef18c483-7891-4e82-80ef-2c8f9bd79711}' list

এটি একটি 32 ডিজিটের হেক্সাডেসিমাল কী তালিকাভুক্ত করে। উদাহরণস্বরূপ আউটপুট হতে পারে:

hostname/unix:0 MIT-MAGIC-COOKIE-1 c0eaf749aa252101a0f57d5087089db7

আপনার .Xauthority ফাইল তৈরি করতে এটি ব্যবহার করুন (ব্যবহারকারী হিসাবে যাকে আবার লগইন করতে হবে):

xauth add $DISPLAY MIT-MAGIC-COOKIE-1 c0eaf749aa252101a0f57d5087089db7

'c0eaf749aa252101a0f57d5087089db7' প্রতিস্থাপন করুন যা আপনার জন্য তালিকা আদেশ দ্বারা ফিরে এসেছে। এখন আপনার .Xauthority এর আকার 51 বাইট হওয়া উচিত এবং আপনি এক্স সার্ভারের সাথে (আবার) সংযোগ করতে পারেন।


কোনও থ্রেড নেই, এটি একটি প্রশ্নোত্তর সাইট, কোনও ফোরাম নয়
অ্যান্থন

1

যখন আমি একটি আপস্টার্ট স্ক্রিপ্ট থেকে সেলেনিয়াম ৩.৩.১ এর উদাহরণ শুরু করেছি এবং তারপরে সেলেনিয়ামে ক্রোম ড্রাইভারটি ব্যবহার করেছি তখন আমার এই ত্রুটিটি "কোনও প্রোটোকল নির্দিষ্ট নেই" ছিল had সেলেনিয়াম এক্স 11 হিসাবে একই ব্যবহারকারীর মতো দৌড়েছিল এবং DISPLAY শেল পরিবেশ পরিবর্তনশীলটি সঠিকভাবে সেট করা হয়েছিল। মজার বিষয় হ'ল আমি যখন ফায়ারফক্স ড্রাইভার ব্যবহার করি তখন এই ত্রুটিটি ঘটেনি। সক্রিয় X11 ব্যবহারকারীর $ XAUTHORITY এর মান নির্দেশ করতে আপস্টার্ট স্ক্রিপ্টের ভিতরে XAUTHORITY শেল পরিবেশ পরিবর্তনশীল সেট করা ক্রোম ড্রাইভারের জন্য ত্রুটিটি স্থির করে।

পার্শ্ব নোটে, "কোনও প্রোটোকল নির্দিষ্ট নেই" ত্রুটিটি Chrome / Chrome ড্রাইভার দ্বারা পুঙ্খানুপুঙ্খভাবে দাফন করা হয়েছিল এবং এটি কোনওভাবেই খুঁজে পাওয়া সহজ ছিল না। আমি লক্ষ্য করেছি যে ক্রোম সেই ধরণের ডিরেক্টরিতে ডিরেক্টরি তৈরি করে রেখেছিল /tmp/.org.chromium.Chromium.*তবে তারা দ্রুত অদৃশ্য হয়ে গেছে। আমি লক্ষ্য করতে সক্ষম হয়েছি যে এগুলিতে একটি ফাইল রয়েছে chrome_debug.logযাতে "ডিসপ্লে খুলতে পারে না" বার্তা ছিল। আমি বুঝতে পেরেছিলাম যে এটি অদ্ভুত ছিল, যেহেতু আমি যাচাই করেছি যে সেলেনিয়াম প্রক্রিয়াটি সঠিকভাবে /proc/$pid/environনির্ধারণ straceকরেছে এবং সেলেনিয়াম প্রক্রিয়াটি আরও পুঙ্খানুপুঙ্খভাবে পরীক্ষা করেছে, যা প্রকাশিত "কোনও প্রোটোকল নির্দিষ্ট করা হয়নি" অবশেষে আমাকে এই প্রশ্নের দিকে নিয়ে যায়।

এই ত্রুটিটি XAUTHORITY সেট না করে এবং কিছু এক্স 11 ক্লায়েন্ট চালানোর চেষ্টা করে পুনরুত্পাদন করা যেতে পারে। উদাহরণ স্বরূপ:

$ XAUTHORITY= xeyes
No protocol specified
Error: Can't open display: :0.0

0

এটা সহজ ছিল। সমস্যা ঘটে যখন আপনি রুট সম্পূর্ণ পরিতৃপ্ত করা রয়েছে এবং ব্যবহার করতে চান gksu শুধু থেকে প্রস্থান রুট রাষ্ট্র এবং আবার চেষ্টা করুন


0

আপনার টার্মিনালে xhost +SI:localuser:rootএটি টাইপ করুন export DISPLAY=:0.0তারপরে আপনি টাইপ করুন তারপরে আবার চেষ্টা করুন


0

গৃহীত উত্তরে ক্লু ব্যবহার করে, আমি সমস্যাটি অন্যভাবে সমাধান করতে সক্ষম হয়েছি:

  1. কাজ করে এমন অ্যাকাউন্টে জাওথ ফাইলটি সন্ধান করুন (Xauth1)
  2. যে অ্যাকাউন্টে নেই সেগুলিতে জাওথ ফাইলটি সন্ধান করুন (Xauth2)
  3. Xauth1 এ Xauth1 অনুলিপি করুন
  4. Xauth2 এর অনুমতিগুলি পরিবর্তন করুন

কোডে:

root@45c4933a8f1a:~# xauth info
Authority file:       /headless/.Xauthority
<snip>
root@45c4933a8f1a:~# su OtherUser
OtherUser@45c4933a8f1a:/headless$ xauth info
Authority file:       /home/OtherUser/.Xauthority
<snip>
OtherUser@45c4933a8f1a:/headless$ exit
exit
root@45c4933a8f1a:~# cp /headless/.Xauthority /home/OtherUser/.Xauthority 
root@45c4933a8f1a:~# chown OtherUser:OtherUser /home/OtherUser/.Xauthority
root@45c4933a8f1a:~# su OtherUser

0

আপনাকে যেমন গুই এক্সেস চেষ্টা বলছেন USER2 ( সাধারণ ব্যবহারকারী ), তারপর আপনি হিসাবে ইনস্টলেশন UI 'তে লোড করতে হবে USER2

এটি অনুসরণ করার চেষ্টা করুন:

রুট হিসাবে লগইন করুন :

sudo su

এক্স সার্ভারটি পরীক্ষা করুন:

xclock

আপনি যদি একটি ঘড়ি চলমান দেখতে পান, তবে এটি ভাল, এখন এটি চালানোর চেষ্টা করুন:

xhost

ফলাফলটি এটি পছন্দ করে:

xhost SI:localuser:tri
# tri is my user name

এখন ব্যবহারকারীর জন্য এক্স হোস্ট অ্যাক্সেস করুন

xhost +SI:localuser:user2

এখন আবার ইউজার 2 এ লগইন করার চেষ্টা করুন এবং জিইউআই প্রোগ্রামের যে কোনওটি খোলার চেষ্টা করুন।

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