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


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


44
2017-08-06 16:19


मूल




जवाब:


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

xauth list|grep `uname -n`

यह आपके लिए हेक्सकी प्राधिकरण प्रविष्टियों को प्रिंट करता है। आप सकता है उन मेजबानों के साथ जुड़े विभिन्न डिस्प्ले भी हैं।

चूंकि उपयोगकर्ता 2 अपना प्रदर्शन सेट करता है (डिफ़ॉल्ट केस मानते हैं):

DISPLAY=:0; export DISPLAY

फिर भागो:

xauth add $DISPLAY . hexkey

$ DISPLAY के बाद और हेक्सकी के बाद बिंदु को नोट करें।

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

xauth remove $DISPLAY

29
2017-08-07 18:11



समस्या 1: उपयोगकर्ता 2 में नहीं है .Xauthority उपयोगकर्ता 2 की होम निर्देशिका में फ़ाइल करें। समस्या 2: किसी भी तरह और किसी कारण से मैं समझ नहीं पा रहा हूं su, XAUTHORITY में उपयोगकर्ता 1 के लिए फ़ाइलपैथ है। लेकिन वह फ़ाइल उपयोगकर्ता 2 द्वारा पठनीय नहीं है। - Otheus
लगता है, आप भूल गए unset XAUTHORITY  उपयोगकर्ता 2 के तहत - socketpair
है hexkey में xauth add जैसा ही आदेश देता है xauth listया मुझे यादृच्छिक नया बनाना है? - bonanza
bonanza: यह xauth सूची से एक आउटपुट है। - John Eikenberry
ऐसा करने का एक और तरीका कुछ ऐसा होगा ... "xauth निकालें - $ DISPLAY | sudo -iu steam xauth विलय -"। इस मामले में मेरे पास XAUTHORITY सेट है। प्रोफाइल, इसलिए 'सूडो-आई' सही सेट हो जाता है। - John Eikenberry


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


11
2018-01-14 17:54



ध्यान दें कि इस प्रक्रिया को आम तौर पर आपको उपयोग करने की आवश्यकता नहीं होगी sudo -E (और उपयोग कर रहे हैं -E अधिकांश डिफ़ॉल्ट इंस्टॉल पर अक्षम है) क्योंकि आमतौर पर डिफ़ॉल्ट sudoers विन्यास की अनुमति होगी XAUTHORITY पर्यावरण परिवर्तनीय सूडो को पारित किया जाना चाहिए। - Guss
@ गॉस यह नहीं करता है की आवश्यकता होती है  -E। इसे एक चर के रूप में सेट किया जा सकता है जिसे पारित किया जा सकता है, और या तो Red Hat या Debian इसे सुझाता है। - Daniel C. Sobral
@ डैनियल सी। सोब्राल - मैंने यही कहा :-) - Guss
@ गॉस ओह, क्षमा करें। मैंने किसी भी तरह आपके द्वारा लिखे गए प्रत्येक वाक्य को उलटा कर दिया। :-) - Daniel C. Sobral
अभी भी मेरे लिए काम नहीं किया है, मैक ओएस एक्स पर zsh के साथ - Sridhar-Sarnobat


डेबियन या उबंटू मानना ​​(रेड हैट / एसयूएसई पर समान होना चाहिए)।

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

10
2017-08-07 02:18



+1 अच्छा जवाब, पहिया reinventing में कोई बात नहीं। संयोग से, एसएक्स ज्यादातर करता है जो ऊपर दिए गए मेरे उत्तर से पता चलता है। यह पाठ्यक्रम का उपयोग करने के लिए और अधिक शक्तिशाली और आसान है। - sleske
आप ध्यान दें, कि 'sux' वास्तव में एक है सरल खोल स्क्रिप्ट, भी .. - Martin Mächler
sux अनियमित है (और डेबियन / उबंटू के भंडारों से हटा दिया गया है): packages.qa.debian.org/s/sux/news/20140101T172633Z.html - Rob W


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

इसके बजाय एक्स-कुकी तंत्र का उपयोग करें:

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

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

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

टिप्पणियाँ:

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

9
2017-08-06 16:35



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


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

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

7
2018-02-04 18:48



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


रूट के रूप में:

xhost local:yourusername

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

फिर अपने उपयोगकर्ता के रूप में सु करें      xclock अगर यह स्थापित है तो काम करना चाहिए


3
2017-09-08 09:26





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

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

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


2
2017-08-06 17:55



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


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

kdesu -u username /path/to/program

2
2017-08-06 23:44



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


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

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

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

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

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

और ग्राफिक रूप से ऐप चलाएं।


0
2017-07-25 21:26





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

gksu -u username program

-1
2017-09-27 17:59



"gksu वर्षों से बहिष्कृत किया गया है": bugs.debian.org/cgi-bin/bugreport.cgi?bug=867236 - Stefan
@Stefan ध्यान दें कि यह डेबियन बग आधार के बारे में है ऊपर उठाने के लिए विशेषाधिकार पूरा कार्यक्रम बुरा विचार है, और प्रोग्राम को बजाय इसके बजाय उन्नत विशेषाधिकारों के साथ निष्पादित करने के लिए संशोधित किया जाना चाहिए (पॉलिसीकिट का उपयोग करके)। यह सवाल (और मेरा जवाब) के बारे में है कमी विशेषाधिकार, जो एक और चीज पूरी तरह से है और वास्तव में अच्छा विचार है (उदाहरण के लिए, यादृच्छिक ब्राउज़िंग के लिए मेरे पास शॉर्टकट है जो कुछ कम विशेषाधिकार प्राप्त खाते के तहत फ़ायरफ़ॉक्स निष्पादित करता है जो मेरा डिफ़ॉल्ट है, इसलिए कोई भी शोषण मेरे डेटा को स्पर्श नहीं कर सकता - और gksu (8 ) इसके लिए काफी ठीक है) - Matija Nalis
यह सब ठीक है, लेकिन एक बहिष्कृत और अनियमित SUID बाइनरी का उपयोग करना गलत है। यह उत्तर अतीत में उपयोगी हो सकता है, लेकिन अब और नहीं है। - Stefan