sudan sonra yeni bir kullanıcı kimliği göstermeyen kimim?


9

Neden kullanıcı değiştirip su <username>yürüttüğümde who am i, oturum açtığım kullanıcı değil, oturum açtığım önceki kullanıcının çıktıları çıkıyor?

Yanıtlar:


13

Muhtemelen yanlış komutu çalıştırıyorsunuz.

  • who, kimin oturum açtığını, yani hangi kullanıcının terminale sahip olduğunu göstermek içindir. Bunun gibi bir satır döndürür:

    ckhan    pts/1        2012-11-05 03:06 (c-21-13-25-10.ddw.ca.isp.net)
    
  • whoamisize, onu çalıştıran kişinin etkin kullanıcı kimliğinin ne olduğunu göstermek anlamına gelir. Bunun gibi tek bir ad döndürür (ve çalıştırmaya eşdeğerdir id -un):

    ckhan
    

Kelimenin tam anlamıyla iki yoksayılmış argüman ( , ) ile who am ikoştu terminal yazmış olabilir düşünüyorum .whoami

Daha fazla ayrıntı için man whove bölümüne bakın man whoami.


2
İki bağımsız değişken amve iyok sayılmazlar, POSIX tarafından belirtilirler: "POSIX yerel ayarında, çıktıyı, -mseçenekle eşdeğer olarak çağıran kullanıcıyı tanımlamakla sınırlandırın ."
xhienne

3

'Kim' komutu için 'Ubuntu 12.04.2 kılavuz sayfama göre' ben kimim '(ya da iki argümanı olan kim)' kim -m 'ile aynıdır ve size STDIN ile ilişkili ana bilgisayar adını ve kullanıcıyı vermelidir. Ancak 'ben kimim' ile hiçbir çıktı almıyorum. Man sayfası yanlış veya komutta bir hata var. Ne olursa olsun, daha önce ckhan tarafından cevaplandığı gibi, 'whoami' komutu size etkili kullanıcı kimliğiniz için kullanıcı adı verecektir. En azından Ubuntu 12.04.2'de hiçbir kimlik, 'ben kimim' veya 'whoami' size geçerli terminalde oturum açmış olan kişinin kullanıcı adını vermeyecektir. Çözüm olarak aşağıdakileri elde edebilirsiniz:

who | sed 's/ .*//'

Bunun Linux'a özgü olduğunu unutmayın. Bu, Unix / SunOS'ta orijinal kullanıcı adını döndürür.
Underverse

3

Geçici çözüm :

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

yerine çalışan who am i | awk '{print $1}'. Aşağıdaki açıklama:

Birçok sistemde " who am i", " " ile eşdeğerdir who -m. Buradaki sorun bazı terminallerde " who -m" hiçbir şey döndürmüyor!

Örnek 1 - xfce4 terminalinden çalıştırma

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 ~ # 

ancak bir gnome terminalinden Örnek 2 (aynı bilgisayar, aynı komutlar)

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 ~ # 

Gnome terminalinin utmp girişleri eklememesinin bir sonucu olduğu görülüyor…


Ls ayrıştırmayın! statBunun yerine kullanın : Kullanıcı adları bazı nadir durumlarda boşluk içerebileceğinden, stat -c '%U' "$(tty)"muhtemelen ayrıştırmamalısınız who am i.
wjandrea
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.