लिनक्स पर अन्य उपयोगकर्ता के माध्यम से चित्रमय अनुप्रयोग को चलाने के लिए xauth का उपयोग कैसे करें


48

मेरा नियमित उपयोगकर्ता खाता है, चलो कहते हैं, उपयोगकर्ता 1। मैंने कुछ एक्स एप्लीकेशन के लिए अलग से यूजर 2 बनाया जिसे मैं यूजर 1 के रूप में एक्स में लॉग इन करते हुए चलाना चाहता हूं लेकिन एक तरह से इसे यूजर 1 डेटा तक पढ़ने / लिखने से रोक देगा। मुझे लगा कि मैं इस एप्लिकेशन को चलाने के लिए user1 से user2 से xauth और sudo / su का उपयोग कर सकता हूं। मैं यह कैसे करु? मुझे यकीन नहीं है कि xauth को कैसे कॉन्फ़िगर किया जाए।

जवाबों:


32

उपयोगकर्ता 1 रन के रूप में xauth चुनिंदा रूप से उपयोग करने के लिए :

xauth list|grep `uname -n`

यह आपके लिए हेक्सकी प्राधिकरण प्रविष्टियों को प्रिंट करता है। आप उन मेजबानों के साथ भी अलग-अलग प्रदर्शन कर सकते हैं।

जैसे ही user2 ने आपके डिस्प्ले को सेट किया (डिफ़ॉल्ट केस मानकर):

DISPLAY=:0; export DISPLAY

तो भागो:

xauth add $DISPLAY . hexkey

$ DISPLAY के बाद और हेक्सकी से पहले डॉट पर ध्यान दें।

जब पहुंच की आवश्यकता नहीं होती है, तो उपयोगकर्ता 2 के रूप में आप चला सकते हैं:

xauth remove $DISPLAY

समस्या 1: user2 के पास .Xauthorityuser2 के घर निर्देशिका में कोई फ़ाइल नहीं है । समस्या 2: किसी भी तरह और किसी कारण से मुझे समझ में नहीं आता है, के बाद su, XAUTHORITY filepath को user1's में रखती है। लेकिन वह फाइल user2 द्वारा पढ़ने योग्य नहीं है।
ओथियस

लगता है, आप unset XAUTHORITY
सॉकेटपेयर

है hexkeyमें xauth addसे रूप में एक ही आदेश xauth listया मैं एक यादृच्छिक नया बनाने के लिए है?
बोनान्ज़ा

बोनान्ज़ा: यह xauth सूची से एक आउटपुट है।
जॉन ईकेनबेरी

1
ऐसा करने का एक और तरीका कुछ इस तरह होगा ... "xauth extract - $ DISPLAY | sudo -iu भाप xauth मर्ज -"। इस मामले में मेरे पास XAUTHORITY सेट इन .profile है, इसलिए 'sudo -i' से वह सेट सही हो जाता है।
जॉन एकेनबेरी

12

मैंने अपनी .zshrcलाइन में लगा दिया export XAUTHORITY=~/.Xauthorityऔर अब मैं निष्पादित करने में सक्षम हूं sudo -E xcommand। बहुत सारे गुगली करने के बाद, मेरे लिए यह सबसे आसान तरीका था।


1
ध्यान दें कि इस प्रक्रिया के लिए आपको सामान्य रूप से उपयोग करने की आवश्यकता नहीं होगी sudo -E(और उपयोग -Eकरना अधिकांश डिफ़ॉल्ट इंस्टॉलों पर अक्षम है) क्योंकि आम तौर पर डिफ़ॉल्ट sudoersकॉन्फ़िगरेशन XAUTHORITYपर्यावरण चर को सूडो को पारित करने की अनुमति देगा ।
Guss

@ यह आवश्यकता नहीं है-E । यह एक चर के रूप में सेट किया जा सकता है जिसे पारित किया जा सकता है, और या तो Red Hat या डेबियन इसे सुझाता है।
डैनियल सी। सोबरल

@ DanielC.Sobral - यह है कि क्या मैंने कहा :-)
Guss

@ गुस ओह, सॉरी। मैंने किसी भी तरह आपके लिखे हर वाक्य को उल्टा कर दिया। :-)
डैनियल सी। सोबरल

फिर भी मेरे लिए काम नहीं किया, मैक ओएस एक्स पर zsh के साथ
श्रीधर सरनोबत

9

डेबियन या ubuntu मानकर (Red Hat / SUSE पर समान होना चाहिए)।

sudo apt-get install sux
sux user -c 'command'

+1 अच्छा जवाब, पहिए को फिर से लगाने का कोई मतलब नहीं। संयोग से, sux ज्यादातर वही करता है जो ऊपर मेरा उत्तर बताता है। यह पाठ्यक्रम के उपयोग के लिए अधिक शक्तिशाली और आसान है।
sleske

आप ध्यान दें, कि 'सक्स' वास्तव में एक सरल शेल स्क्रिप्ट है, ..
मार्टिन मचलर

5
suxअचिन्त्य है (और डेबियन / उबंटू के रिपॉजिटरी से हटा दिया गया है): package.qa.debian.org/s/sux/news/20140101T172633Z.html
Rob W

9

पहला: उपयोग न करें xhost +, यह असुरक्षित है (कंबल की अनुमति / इनकार)।

बल्कि X- कुकी तंत्र का उपयोग करें:

su user2
cp /home/user1/.Xauthority /home/user2/.Xauthority 
export DISPLAY=:0

वैकल्पिक रूप से, यदि आपने suxस्थापित किया है, तो उस का उपयोग करें (ईमपेल का उत्तर देखें)।

दोनों मामलों में उपयोगकर्ता 2 एक्स सर्वर के लिए अधिकृत करने के लिए .Xauthority में गुप्त कुकी का उपयोग करेगा, और किसी और के पास इसका उपयोग नहीं होगा।

टिप्पणियाँ:

  • आपकी फ़ाइल अनुमतियों के आधार पर, आपको किसी अन्य तरीके से .Xauthority की प्रतिलिपि बनानी पड़ सकती है।
  • कॉपी करने के बजाय .Xauthority, आप xauthप्राधिकरण कुंजी को निकालने और कॉपी करने के लिए भी उपयोग कर सकते हैं (देखें रान्डेल का उत्तर)। यदि आपके पास .Xauthorityफ़ाइल में कई कुंजियाँ हैं, तो यह अधिक चयनात्मक है; अन्यथा यह स्वाद की बात है।

हाँ, मैं उस मशीन पर रूट एक्सेस कर रहा हूँ
फिल

यह सिर्फ xauth कुकीज़ को रूट एक्सेस के जरिए कॉपी करना है। यह xauth का उपयोग करने से अलग नहीं है क्योंकि रान्डेल (वर्तमान) शीर्ष उत्तर में बताते हैं, सिवाय इसके कि हर कुकी को कॉपी करता है कि 'xauth सूची' दिखाएगा। तो यह शीर्ष xauth उत्तर की तुलना में कम सुरक्षित है जो केवल आपके द्वारा चुने गए कुकीज़ को जोड़ देगा।
जॉन इकेनबेरी

@ जॉनीकेनबेरी: सच है, यह इंगित करने के लिए धन्यवाद। मैंने अपना उत्तर अपडेट कर दिया।
sleske

7

यह सभी उपयोगकर्ताओं के लिए समस्या को ठीक करेगा:

cat <<EOF > /etc/profile.d/xauth.sh
#!/sbin/bash
export XAUTHORITY=~/.Xauthority
EOF

यह मूल रूप से मैंने क्या किया है और यह महान काम करता है, धन्यवाद!
Guss

3

जड़ के रूप में:

xhost local:yourusername

जहाँ आपका नाम आपका उपयोगकर्ता नाम है :)

xclockयदि आपके उपयोगकर्ता को काम करना चाहिए तो इसे स्थापित करें


2

ये सिर्फ हैक हैं:

  • xauth + (असुरक्षित)
  • ssh -X user2 @ localhost (बदसूरत)

ऊपर sleske है, मुझे लगता है, उचित समाधान।


ssh -Xएक बहुत ही सरल और सुरुचिपूर्ण समाधान है, जो किसी भी वंचित / अचयनित gtk / kde सामान पर निर्भर नहीं करता है (जिसमें SUID बिट के साथ अधिक बायनेरी स्थापित करने की आवश्यकता होती है ...)।
स्टेफेन

2

मुझे कुछ ऐसा मिला जो मेरे लिए केडीई पर बहुत अच्छा काम करता है

kdesu -u username /path/to/program

की डेबियन ओर से kde-cli-tools, और नहीं में $PATHलेकिन में /usr/lib/x86_64-linux-gnu/libexec/kf5/kdesu(स्पष्ट रूप से वास्तुकला के आधार पर)।
स्टेफान

0

इस तरह से suse / openuse में बनाया गया है: http://www.novell.com/support/kb/doc.php?id=7003743

बस /etc/pam.d/su को संशोधित करके, विकल्प (बोल्ड) जोड़ना:

सत्र वैकल्पिक pam_xauth.so systemuser = 1

तब आप सु के साथ स्विच कर सकते हैं -:

सु उपयोगकर्ता २

और एप्लिकेशन को ग्राफ़िक रूप से चलाएं।


-1

GNOME (और बिना किसी डेस्कटॉप वातावरण के वास्तव में, मैं इसे केवल icewm के साथ उपयोग करता हूँ) gksu:

gksu -u username program

"gksu को वर्षों के लिए पदावनत कर दिया गया है": bugs.debian.org/cgi-bin/bugreport.cgi?bug=867236
स्टीफन

ध्यान दें @Stefan इस डेबियन बग आधार के बारे में है कि कि ऊपर उठाने के लिए विशेषाधिकार पूरे कार्यक्रम बुरा विचार है, और कार्यक्रम के बजाय सिर्फ ऊंचा विशेषाधिकारों के बजाय (PolicyKit का प्रयोग करके) के साथ कम से कम सहायकों निष्पादित करने के लिए संशोधित किया जाना चाहिए कि। यह प्रश्न (और मेरा उत्तर) विशेषाधिकारों को कम करने के बारे में है , जो पूरी तरह से एक और बात है और वास्तव में अच्छा विचार (उदाहरण के लिए, यादृच्छिक ब्राउज़िंग के लिए मेरे पास शॉर्टकट है जो कुछ कम विशेषाधिकार प्राप्त खाते के तहत फ़ायरफ़ॉक्स निष्पादित करता है कि मेरा डिफ़ॉल्ट एक है, इसलिए वहां कोई भी शोषण हो सकता है) 'टी टच माई डेटा - एंड गक्सु (8) उसके लिए काफी ठीक है)
मतिजा नालिस

यह सब ठीक है, लेकिन एक उपेक्षित और अयोग्य एसआईडी बाइनरी का उपयोग करना सिर्फ गलत है। यह उत्तर अतीत में उपयोगी हो सकता है, लेकिन अब नहीं है।
स्टीफन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.