`जो` `के बाद` su` नई उपयोगकर्ता आईडी नहीं दिखा रहा है?


9

ऐसा क्यों है कि जब मैं उपयोगकर्ता को स्विच करता हूं su <username>और फिर निष्पादित करता who am iहै तो पिछले उपयोगकर्ता का आउटपुट होता है जिसे मैंने लॉग इन किया था और वह नहीं जिसे मैंने स्विच किया है?

जवाबों:


13

आप गलत कमांड चला रहे हैं।

  • whoयह दिखाने के लिए है कि कौन लॉग इन है, अर्थात कौन सा उपयोगकर्ता टर्मिनल का मालिक है। यह इस तरह एक लाइन देता है:

    ckhan    pts/1        2012-11-05 03:06 (c-21-13-25-10.ddw.ca.isp.net)
    
  • whoamiआपको यह दिखाने के लिए है कि इसे चलाने वाले व्यक्ति की प्रभावी उपयोगकर्ता आईडी क्या है। यह सिर्फ एक ही नाम देता है, जैसे (और चलने के बराबर id -un):

    ckhan
    

मुझे लगता है कि आपने who am iटर्मिनल पर शाब्दिक रूप से टाइप किया होगा, जो whoदो उपेक्षित तर्कों ( am, i) के साथ चला।

देखें man whoऔर man whoamiअधिक जानकारी के लिए।


2
दो तर्कों amऔर iनजरअंदाज नहीं किया जाता है, वे भी POSIX द्वारा निर्दिष्ट किए जाते हैं: "POSIX लोकेल में, आउटपुट उपयोगकर्ता का वर्णन करने के लिए आउटपुट को सीमित करता है, -mविकल्प के बराबर ।"
xhienne

3

मेरे उबंटू 12.04.2 मैन पेज के लिए 'हू' कमांड, 'मैं कौन हूं' (या किसी भी दो तर्कों के साथ) 'हू-एम' के समान है और आपको एसटीडीआईएन के साथ जुड़े होस्टनाम और उपयोगकर्ता को देना चाहिए। हालाँकि मुझे 'मैं कौन हूँ' के साथ कोई आउटपुट नहीं मिला। या तो मैन पेज गलत है या कमांड में बग है। भले ही, जैसा कि पहले ckhan द्वारा उत्तर दिया गया था, 'whoami' कमांड आपको अपने प्रभावी उपयोगकर्ता आईडी के लिए उपयोगकर्ता नाम देगा। कम से कम उबंटू 12.04.2 में, आईडी से कोई नहीं, 'मैं कौन हूं', या 'वोअमी' आपको वर्तमान टर्मिनल पर लॉग इन किए हुए व्यक्ति का उपयोगकर्ता नाम देगा। वर्कअराउंड के रूप में आप इसके साथ मिल सकते हैं:

who | sed 's/ .*//'

ध्यान दें कि यह लिनक्स विशिष्ट है। यह यूनिक्स / सनोस में मूल उपयोगकर्ता नाम लौटाता है।
अंडर

3

वर्कअराउंड :

ls -l `tty` | awk '{print $3}'

से प्रतिस्थापन के रूप में काम करता है who am i | awk '{print $1}'। नीचे स्पष्टीकरण:

कई प्रणालियों पर " who am i" " " के बराबर है who -m। यहाँ समस्या यह है कि कुछ टर्मिनलों के साथ , " who -m" कुछ भी नहीं लौटाता है!

उदाहरण # xfce4- टर्मिनल से 1 रन

Pegasus ~ # whoami
root
Pegasus ~ # who am i
thomas   pts/1        2017-08-19 11:15 (:0.0)
Pegasus ~ # who -m
thomas   pts/1        2017-08-19 11:15 (:0.0)
Pegasus ~ # who
thomas   tty8         2017-08-19 10:18 (:0)
thomas   pts/1        2017-08-19 11:15 (:0.0)
thomas   pts/5        2017-08-19 16:16 (:0.0)
Pegasus ~ # who am i | awk '{print $1}'
thomas
Pegasus ~ # 

लेकिन उदाहरण # 2 एक सूक्ति-टर्मिनल (एक ही कंप्यूटर, एक ही कमांड) से

Pegasus ~ # whoami
root
Pegasus ~ # who am i
Pegasus ~ # who -m
Pegasus ~ # who
thomas   tty8         2017-08-19 10:18 (:0)
thomas   pts/1        2017-08-19 11:15 (:0.0)
thomas   pts/5        2017-08-19 16:16 (:0.0)
Pegasus ~ # 

यह सूक्ति प्रविष्टियों को जोड़ने के लिए सूक्ति-टर्मिनल का परिणाम प्रतीत होता है ...


पार्स नहीं करो! statइसके बजाय का उपयोग करें : stat -c '%U' "$(tty)"आप शायद who am iया तो पार्स नहीं करना चाहिए , क्योंकि उपयोगकर्ता नाम कुछ दुर्लभ मामलों में रिक्त स्थान हो सकते हैं।
1818
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.