অন্য (রুটবিহীন) ব্যবহারকারী হিসাবে জিইউআই অ্যাপ্লিকেশন চলছে


34

আসুন বলে আমি 2 ব্যবহারকারীর অ্যাকাউন্ট রয়েছে user1এবং user2। আমি যখন লগইন করি user1এবং তারপরে user2ব্যবহারে স্যুইচ suকরি, তখন আমি কমান্ড-লাইন প্রোগ্রামগুলি কার্যকর করতে পারি, তবে জিইউআই প্রোগ্রামগুলি ব্যর্থ হয়।

উদাহরণ:

user1@laptop:~$ su - user2
user2@laptop:~$ leafpad ~/somefile.txt
No protocol specified
leafpad: Cannot open display: 

তাহলে আমি কীভাবে জিইউআই অ্যাপ্লিকেশন চালাতে পারি?


মূল কারণগুলির মধ্যে একটি, আমি খুঁজে পেয়েছি যে এটি ব্যর্থ হয়েছে কারণ $XAUTHORITYএটি এখনও ব্যবহারকারী 1 এর উপর সেট করা আছে ~/.Xauthority, যা আমার ধারণা, প্রোগ্রামটি পড়ার চেষ্টা করবে, এবং এটি ব্যর্থ হয়েছে কারণ সেই ফাইলটির সাধারণত মোড 0600 ( -rw-------) থাকে, যার অর্থ এটি অনুপলব্ধ meaning "অন্যান্য" গ্রুপের যে কারও দ্বারা পড়ার জন্য, যার মধ্যে ব্যবহারকারী 2 রয়েছে includes মানে যদি আপনি chmod o+r ~/.Xauthority(ব্যবহারকারী 1) হন তবে আপনি এই সমস্যাটি ঘুরিয়ে ফেলতে পারবেন। আমি একটি স্ক্রিপ্ট লিখেছি যা এটি প্রদর্শন করে।
ব্র্যাডেন সেরা

উত্তর:


42

সু বনাম সু -

অন্য ব্যবহারকারী হয়ে উঠলে আপনি সাধারণত ব্যবহার করতে চান su - user2। ড্যাশ ব্যবহারকারী 2-কে উত্সাহিত করতে বাধ্য করবে .bash_profile

xhost

অতিরিক্ত হিসাবে আপনি আপনার প্রদর্শন ব্যবহারকারীদের অ্যাক্সেস প্রদান করতে হবে। এটি এক্স দ্বারা নিয়ন্ত্রিত হয় You আপনি xhost +ইউজার 1 এর ডেস্কটপে GUI এর প্রদর্শন করার জন্য অন্যান্য ব্যবহারকারীদের অনুমতি দেওয়ার জন্য কমান্ডটি ব্যবহার করতে পারেন ।

দ্রষ্টব্য: দৌড়ানোর xhost +সময় আপনি ব্যবহারকারীর 1 এর শেল থাকা অবস্থায় এটি চালাতে চান।

$ DISPLAY কে

আপনি যখন ব্যবহারকারী হন 2 আপনার পরিবেশ পরিবর্তনশীল সেট করতে হতে পারে $DISPLAY

$ export DISPLAY=:0.0

1
xhost +user2এখনও আমাকে এই ত্রুটি দেয় - xhost: bad hostname "user2"। আমি কিছুটা গুগল করেছিলাম এবং মনে হচ্ছে আমার কী করা দরকার xhost +user2@laptopবা xhost +user2@localhostকোনটি নিশ্চিত তা নয়। তারপরে এটি বলে xhost +user2@localhost being added to access control list
সাশোলাম

1
তবে ব্যবহারকারীর সাথে যুক্ত করার পরেও xhostএবং নির্দিষ্ট করার পরেও export DISPLAY=:0.0চালানো leafpadআমাকে দেয় No protocol specified leafpad: Cannot open display:এবং চালাতে ব্যর্থ হয়। আমি এই লিঙ্কে পাওয়া linuxquestions.org/questions/linux-newbie-8/... , যেখানে বলা আছে কিছু জাদু কুকিজ আছে এবং যে xauth। আপনি কি পরীক্ষা করেছেন যে এই জিনিসগুলি আপনার কম্পিউটার বিটিডব্লিউতে কাজ করে? আমার কনফিগারেশনের সাথে কিছু আলাদা হতে পারে? আমি ডেবিয়ান + এলএক্সডিই-তে আছি।
সাশোলাম

1
ধন্যবাদ, xhost +কাজ, এবং অন্য কিছুই প্রয়োজন বলে মনে হচ্ছে না (সেট করার দরকার নেই $DISPLAY)। আপনি কি আপনার উত্তর আপডেট করতে পারেন, এবং আমি এটি গ্রহণ করব?
সাশোলেম

5
ওহ, কিছু খুঁজে পেয়েছি। ফেডোরার 21-এ চলমান xhostবিন্যাসে একটি তালিকা দেয় SI:localuser:USERNAME, তাই xhost SI:localuser:user2কাজ করা উচিত। ওহ এবং ব্যবহারকারীর প্রদর্শনটি ব্যবহার করে পাওয়া যাবে w
উইলফ

7
xhost +আপনার হোস্টের যে কোনও ব্যবহারকারীর সাহায্যে আপনার এক্স-সার্ভারের সাথে সংযোগ করতে পারবেন আপনার স্ক্রিন অ্যাক্সেস করতে। xhost +SI:localuser:user2ডেবিয়ান আমার জন্য কাজ করে।
রবার্টসড

9

আপনি প্রমাণীকরণ থেকে টোকেনটি ভাগ করতে হবে USER1 (অভিমানী ~এর বাড়িতে USER1 ):

cat ~/.Xauthority | sudo -u user2 -i tee .Xauthority > /dev/null

1
এটি আমার পক্ষে কাজ করা একমাত্র উত্তর (উবুন্টু 14)।
sudo

এই সমাধানটি দূরবর্তী মেশিনের (= এক্স উইন ক্লায়েন্ট) থেকে দুর্দান্তভাবে কাজ করে যখন অন্য উত্তরের xhost সমাধানগুলি স্থানীয় মেশিনে (= এক্স উইন সার্ভার) চালিত করতে হয়।
জেপসি

tee -aকোনও বিদ্যমান তথ্য ক্লোবারিং এড়ানোর  জন্য এটি ব্যবহার করা নিরাপদ হতে পারে .Xauthority
স্কট

7

আপনি এক্স 11 ফরওয়ার্ডিং ব্যবহার করতে পারেন:

ssh -XY otheruser@localhost your-gui-program-name-here

এটি একটি উজ্জ্বল সমাধান। আমি এখনও পর্যন্ত পড়া সবচেয়ে সহজ। X11 কনফিগারেশনের চেয়ে বেশি লোকেরা ssh এর সাথে পরিচিত।
অ্যালেক্সিস পানাজিওপোলোস

6

আপনি অন্য ব্যবহারকারীর কাছ থেকে অ্যাপ শুরু করতে পারেন। আমি ব্যবহারকারী 1 থেকে জিপ অ্যাপ্লিকেশনটি শুরু করব, 1 ব্যবহারকারীর সাথে লগ ইন করার সময় (জিইউআই):

$ xhost +
$ sudo su user2

(পাস প্রবেশ করান)

$ gimp

উপভোগ করুন :)


4
এটি চার বছরের পুরানো স্বীকৃত উত্তর হিসাবে একই।
জি-ম্যান

আপনি কি আরও দ্রুততর উপায় বলতে পারেন?
আন্তনি স্টাভ্রেভ

আমি সর্বদা এই পদ্ধতিটি ব্যবহার করেছি, তবে এটি ডেবিয়ান এবং এক্সফেসের সাথে আর কাজ করে না। ( সংশোধন : এটি কাজ করে, তবে export DISPLAYগ্রহণযোগ্য উত্তরটি যেমন বলেছে তেমন আমাকে প্রথমে করতে হবে )
giyti

আপনার অধিবেশন শেষ করার পরে এটি অক্ষম করা ভাল হবে$ xhost -
আন্তনি স্টাভ্রেভ

4

আপনি sux কমান্ড চেষ্টা করতে পারেন:

sux user2

sux আপনার জন্য $ DISPLAY স্টাফ পরিচালনা করবে। এটি আপনার সাথে এটি ইনস্টল করতে হতে পারে:

sudo apt-get install sux

ডেবিয়ান / উবুন্টু এর অধীনে।


4
suxআর দেবিয়ান বা উবুন্টু দ্বারা চালিত হয় না। আমি যে সর্বোত্তম বিকল্পটি খুঁজে পেতে পারি তা স্থায়ীভাবে অনুমতি xhost SI:localuser:rootদেওয়ার ~/.xprofileজন্য বা ব্যবহার করার জন্য (বা যে কোনও ব্যবহারকারীর) যোগ করাrunuser
স্টেফ্যান্ট

দেবিয়ান স্ট্রেচ পর্যন্ত এবং এর মধ্যেও gksu/ gksudoবিকল্প ছিল যা কার্যকর কাজ করেছিল। সিডে থাকা অবস্থায়, এটি সুরক্ষার সমস্যার জন্য বুস্টারে সরানো হয়েছে।
মাতিজা নালিস

0

বিকল্প হিসাবে sux, নিরাপদে গ্রাফিকাল কমান্ড চালাতে ( firefox-esrউদাহরণস্বরূপ নীচে) হিসাবে $AUTHUSER( guestনীচে উদাহরণস্বরূপ):

AUTHUSER=guest
AUTHSTRING=SI:localuser:${AUTHUSER}
xhost +${AUTHSTRING} > /dev/null
SUDO_ASKPASS=/usr/bin/ssh-askpass
export SUDO_ASKPASS
sudo -k --askpass -u ${AUTHUSER} /usr/bin/firefox-esr
xhost -${AUTHSTRING} > /dev/null
sudo -K

কোডটি করে:

  1. দেয় guestআপনার বর্তমান ব্যবহারকারীর ব্যবহারকারীর অ্যাক্সেস $DISPLAYমাধ্যমেxhost +SI:localuser:guest
  2. ব্যবহারসমূহ ssh-askpassগ্রাফিক্যালি অবশ্যই পাসওয়ার্ড আপনি জিজ্ঞাসা করতে (, আপনি ব্যবহার করতে পারে sudoers(5) NOPASSWD:আপনার নিরাপত্তা নীতি মনে করে যদি এটি ঠিক আছে এটি এড়াতে,। অথবা আপনি অন্যান্য ব্যবহার করতে পারে askpassকনফিগ ফাইলে প্রোগ্রাম, বা নির্দিষ্ট তাদের (দেখুন sudo(8)বিস্তারিত --askpass)
  3. যদি পাসওয়ার্ডটি ঠিক থাকে (এবং আপনার এতে অনুমতি রয়েছে sudoers(5)) এটি /usr/bin/firefox-esrঅন্য ব্যবহারকারী হিসাবে কমান্ডটি চালায় ( guest)
  4. প্রোগ্রামটি সম্পূর্ণ হওয়ার পরে, guestআপনার অ্যাক্সেসের জন্য অন্য ব্যবহারকারীর ( ) $DISPLAYএর অনুমতি বাতিল হয়ে যায়xhost -SI:localuser:guest
  5. পরিশেষে, sudo -Kক্যাশেড পাসওয়ার্ড সরিয়ে দেয়, সুতরাং পরবর্তী ssh-askpassঅনুরোধ আপনাকে আবার পাসওয়ার্ড চাইবে (ক্যাশেড পাসওয়ার্ড ব্যবহার না করে)

    এটি যা gksu(8)বা কী চেয়ে কিছুটা বেশি কাজ করা হয়েছে sux(8), এটি স্ক্রিপ্ট করা যেতে পারে এবং এটি এর থেকে অনেক বেশি সুরক্ষিত:

    • xhost + (যে কোনও ব্যবহারকারীর গ্রাফিকাল ডিসপ্লেটিতে এটি কার্যকর থাকবে যতক্ষণ না তার অ্যাক্সেস থাকবে)
    • অন্যান্য ব্যবহারকারীদের দ্বারা পঠনযোগ্য ~ / .xauth (আপনার প্রদর্শনে সেই ব্যবহারকারীর দ্বারা অনির্দিষ্ট অ্যাক্সেস)
    • কী gksu/ কী sux(অস্থায়ী অনুলিপি ~/.Xauthority, যা নির্দিষ্ট ব্যবহারকারীকে আপনার অনুলিপি তৈরি করতে MIT-MAGIC-COOKIE-1এবং gksu / sux শেষ হওয়ার পরেও আপনার প্রদর্শনটি ব্যবহার চালিয়ে যাওয়ার অনুমতি দেয় (যতক্ষণ না আপনি মেশিনটি শাটডাউন করেন নি বা প্রদর্শিত না হয়ে লক আউট করেছেন - স্ক্রীনসেভার, হাইবারনেট ইত্যাদি যাদু পরিবর্তন করে না কুকি)।

যেহেতু এটি কেবলমাত্র একজন স্থানীয় ব্যবহারকারীকে আপনার প্রদর্শনে অ্যাক্সেসের অনুমতি দেবে এবং তারপরে কেবল কমান্ডটি চালানো হবে (যখন কমান্ড শেষ $AUTHUSERহবে , কোনওভাবেই আপনার প্রদর্শন অ্যাক্সেস করতে সক্ষম হবে না)।

আরেকটি নিরাপদ বিকল্প নেই ssh -X(ছাড়া -Yযা আসলে আপনি কম নিরাপদ করে তোলে! দেখতে ForwardX11Trustedমধ্যে ssh_config(5)বিস্তারিত জানার জন্য), কারণ যে আপনি এটা scripting নেই সহজে ব্যবহারযোগ্য করতে, কিন্তু এটা additinal ওভারহেড সংঘটিত (যেমন। এটা ধীর হয়) এবং কিছু প্রোগ্রাম সঠিকভাবে কাজ নাও করতে পারে ছাড়া অনিরাপদ -Y


-1

আপনি যত ইনস্টলেশন UI 'তে লোড করতে হবে USER2

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

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

sudo su

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

xclock

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

xhost

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

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

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

xhost +SI:localuser:user2

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


(1) এই প্রশ্নে এমন কোনও কিছুই নেই যা মূল হিসাবে চালানো দরকার, বা যেখানে রুট হিসাবে চালানো উপকারী। (1 খ) যদি কিছু হয় তবে মূল হিসাবে চালানো কেবল বিষয়গুলিকে বিভ্রান্ত করতে পারে। (২) ব্যবহারের খুব কম কারণেই (যদি কখনও থাকে) sudo su। ব্যবহার  sudoবা  su; একটা তোল. (3) প্রশ্ন পরিপ্রেক্ষিতে লেখা আছে  user1এবং  user2। দয়া করে পরিপ্রেক্ষিতে আপনার উত্তর লিখতে  user1এবং  user2। (করবেন বা করবেন না, নেই  tri)) (৪) আপনার উত্তরটি এর ব্যাখ্যা সহ অন্তর্ভুক্ত থাকলে আরও ভাল  SI:localuser। ………………… দয়া করে মন্তব্যে সাড়া দিবেন না;  আপনার উত্তরটি আরও পরিষ্কার এবং আরও পরিপূর্ণ করতে সম্পাদনা করুন।
স্কট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.