ทำไมเมื่อฉันเปลี่ยนผู้ใช้su <username>
แล้วดำเนินการwho am i
ออกเป็นผู้ใช้ก่อนหน้านี้ที่ฉันเข้าสู่ระบบและไม่ใช่คนที่ฉันเปลี่ยนไป?
ทำไมเมื่อฉันเปลี่ยนผู้ใช้su <username>
แล้วดำเนินการwho am i
ออกเป็นผู้ใช้ก่อนหน้านี้ที่ฉันเข้าสู่ระบบและไม่ใช่คนที่ฉันเปลี่ยนไป?
คำตอบ:
คุณอาจเรียกใช้คำสั่งที่ไม่ถูกต้อง
who
หมายถึงการแสดงว่าใครเข้าสู่ระบบนั่นคือผู้ใช้ที่เป็นเจ้าของสถานี ส่งคืนบรรทัดดังนี้:
ckhan pts/1 2012-11-05 03:06 (c-21-13-25-10.ddw.ca.isp.net)
whoami
หมายถึงแสดงให้คุณเห็นว่า ID ผู้ใช้ที่มีประสิทธิภาพนั้นเป็นของคนที่เรียกใช้ มันจะคืนค่าชื่อเดียวเช่นนี้ (และเทียบเท่ากับการทำงานid -un
):
ckhan
ฉันคิดว่าคุณอาจพิมพ์who am i
ที่เทอร์มินัลอย่างแท้จริงซึ่งwho
มีอาร์กิวเมนต์สองตัวที่ไม่สนใจ ( am
, i
)
ดูman who
และman whoami
สำหรับรายละเอียดเพิ่มเติม
ในหน้า man ของฉัน Ubuntu 12.04.2 สำหรับ 'who' command ', ใครคือ i' (หรือผู้ที่มีสองอาร์กิวเมนต์ใด ๆ ) จะเหมือนกับ 'who -m' และควรให้ชื่อโฮสต์และผู้ใช้ที่เกี่ยวข้องกับ STDIN อย่างไรก็ตามฉันไม่ได้รับผลลัพธ์ด้วย 'Who am i' อาจเป็น man page ผิดหรือคำสั่งมีข้อผิดพลาด ไม่ว่าตามคำตอบก่อนหน้านี้โดย ckhan คำสั่ง 'whoami' จะให้ชื่อผู้ใช้สำหรับ ID ผู้ใช้ที่มีประสิทธิภาพของคุณ อย่างน้อยใน Ubuntu 12.04.2 ไม่มีรหัส 'ใครคือฉัน' หรือ 'whoami' จะให้ชื่อผู้ใช้ของบุคคลที่ล็อกอินในเทอร์มินัลปัจจุบันเท่านั้น คุณสามารถติดต่อกับ:
who | sed 's/ .*//'
วิธีแก้ปัญหา :
ls -l `tty` | awk '{print $3}'
who am i | awk '{print $1}'
ว่างานแทนจาก คำอธิบายด้านล่าง:
ในหลาย ๆ ระบบ " who am i
" เทียบเท่ากับ " who -m
" ปัญหาคือที่นี่ด้วยเทอร์มินัล " who -m
" ไม่ส่งคืนอะไรเลย!
ตัวอย่าง # 1 เรียกใช้จาก xfce4-terminal
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 จาก gnome-terminal (คอมพิวเตอร์เครื่องเดียวกันคำสั่งเดียวกัน)
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-terminal ที่ไม่ได้เพิ่มรายการ utmp ...
stat
แทน: stat -c '%U' "$(tty)"
คุณอาจไม่ควรแยกวิเคราะห์who am i
เช่นกันเนื่องจากชื่อผู้ใช้อาจมีช่องว่างในบางกรณีที่หายาก
am
และi
ไม่ถูกละเว้นจะถูกระบุโดย POSIX: "ในโลแคล POSIX จำกัด เอาต์พุตเพื่ออธิบายผู้ใช้ที่อ้างถึงเทียบเท่ากับ-m
ตัวเลือก"