ฉันจะแก้ไขข้อความ“ เข้าสู่ระบบล่าสุด” ได้อย่างไร


16

ฉันต้องการแก้ไขLast login:ข้อมูลที่พิมพ์ออกมาพร้อมกับข้อความประจำวัน แต่ฉันไม่พบสคริปต์ที่สร้างและสะท้อนออกมา

มันกำหนดไว้ที่ไหนในเชลล์สคริปต์ที่แก้ไขได้ง่ายหรือปิดในไบนารี


หมายเหตุสิ่งนี้แตกต่างจากServerFault: ฉันจะแก้ไขข้อความต้อนรับได้อย่างไรเมื่อ ssh สตาร์ท . ข้อมูล "การเข้าสู่ระบบครั้งสุดท้าย" ไม่ได้พิมพ์ออกมาจากภายใน/etc/update-motd.d/แต่ถูกกำหนดแทนโดยการตั้งค่าPrintLastLogสถานะจึงไม่สามารถแก้ไขได้เช่นเดียวกับส่วนอื่น ๆ ของข้อความประจำวัน


ข้อมูลนี้จะถูกบันทึกไว้ในutmpและwtmpไฟล์ (ขึ้นอยู่กับการกระจายการตรวจสอบ/var/run/utmpหรือ/var/log/utmpหรือมองใน/vardirectory) ไฟล์เหล่านี้ไม่ได้รับการบันทึกเป็นข้อความ แต่เป็นไบนารีดังนั้นคุณจะต้องใช้เครื่องมือพิเศษในการแก้ไข ไฟล์ utmp ติดตามสถานะการล็อกอินปัจจุบันของผู้ใช้แต่ละราย ไฟล์ wtmp บันทึกการเข้าสู่ระบบและประวัติการออกจากระบบทั้งหมด คุณจะต้องใช้เครื่องมือพิเศษในการแก้ไข แต่ฉันไม่สามารถหาอะไรได้จริงๆ
phoops

คำตอบ:


14

ดูเหมือนว่ารูปแบบของบรรทัดที่พิมพ์จะถูกรวบรวมเป็นsshd:

[me@risby ~]$ ssh lory
Last login: Fri May 23 10:59:01 2014 from 2a01:2c0:e:300:7271:bcff:feac:445a
[me@lory ~]$ strings /usr/sbin/sshd | grep -i "last login"
Last login: %s
Last login: %s from %s

ฉันไม่เห็นตัวเลือกการตั้งค่าใด ๆ สำหรับการเปลี่ยนแปลงสิ่งนั้นดังนั้นคุณจะต้องแก้ไขแหล่งที่มาและคอมไพล์ใหม่

แก้ไข : ในกรณีที่การ จำกัด , คุณสามารถหาแหล่งที่มาhttp://www.openssh.org แต่คุณไม่ได้บอกเราว่าคุณกำลังใช้ OpenSSH หรืออะไรก็ตามเกี่ยวกับแพลตฟอร์มของคุณดังนั้นจึงเป็นการยากที่จะเจาะจงมากขึ้น หากเป็นระบบ Linux คุณจะทำได้ดีกว่ามากเพื่อให้ได้แหล่งที่เหมาะสมกับ distro ของคุณในแบบปกติและคอมไพล์ใหม่ผ่านกลไกเฉพาะของ distro

แต่จริงๆแล้วคุณไม่ควรทำสิ่งนี้เลยเว้นแต่ว่าคุณจะมีเหตุผลทางธุรกิจที่น่าสนใจอย่างมาก: คุณกำลังทำฝันร้ายในการบำรุงรักษาให้กับตัวเองไปยังแพ็คเกจที่ไวต่อการรักษาความปลอดภัย


สามารถพบซอร์สโค้ดด้านหลังsshdได้ที่ไหน
IQAndreas

1
จริงๆแล้วฉันกำลังวางแผนอย่างอื่นกับแหล่งที่มา ผมอยากจะดูว่าพวกเขาแยกข้อมูลจากwtmpตั้งPrintLastLogธงnoและสร้างใหม่อีกครั้ง "เข้าสู่ระบบล่าสุด" update-motd.dแจ้งกับสคริปต์ของตัวเองในวางไว้ใน การบำรุงรักษาเป็นมิตรมากขึ้น :)
IQAndreas

1
ฉันมักจะเห็นmotdผลลัพธ์ที่ยังไม่ทันสมัย ดังนั้นฉันคิดว่าupdate-motdอาจไม่สามารถทำงานได้ทุกครั้ง
kasperd

@kasperd มันอัพเดททุก ๆ 10 นาทีเป็นงาน cron นี้คือการช่วยเหลือในกรณีที่มันพยายามที่จะทำอะไร "ช้า" ชอบดึงสตริงจากอินเทอร์เน็ตดังนั้นจึงไม่ได้ทำให้เซิร์ฟเวอร์ชะลอตัวลงทุกครั้งที่มีคนบันทึกใน.
IQAndreas

3
ข้อความ "เข้าสู่ระบบครั้งสุดท้าย" เป็นข้อมูลเฉพาะของผู้ใช้ในขณะที่motdเป็นทั้งระบบ ฉันไม่แน่ใจว่าคุณต้องการสร้างข้อความใหม่ได้อย่างไร นอกจากนี้ยังมีคนที่อ่านข้อความนี้และต้องการให้มันถูกต้องที่สุด
Simon Richter

5

ข้อมูลการเข้าสู่ระบบล่าสุดจะถูกเก็บไว้ใน/var/log/wtmpหรือ/var/log/utmpเป็นไฟล์ไบนารี หากไม่ได้ดูซอร์สโค้ดสำหรับ sshd ฉันไม่สามารถมั่นใจได้อย่างสมบูรณ์ แต่ฉันคาดหวังว่าจะได้รับข้อมูลจากไฟล์เหล่านั้นโดยใช้การเรียกระบบที่เหมาะสม

ดูเหมือนว่าคุณจะไม่สามารถเปลี่ยนแปลงข้อมูลนี้ได้อย่างง่ายดายหลังจากที่ทุกส่วนของความปลอดภัยของผู้ใช้


หากคุณต้องการรายละเอียดเต็มไปด้วยเลือดคุณต้องดูซอร์สโค้ดสำหรับฟังก์ชั่นlogin_get_lastlogที่สามารถพบได้loginrec.c


@lain +1 เนื่องจากคำแนะนำซอร์สโค้ด - ถึงแม้ว่าฉันไม่คิดว่ามันจะเป็นวิธีแก้ปัญหาเลือดสิ่งที่เขาต้องการก็คือกระจกคอมไพล์ท้องถิ่น Imho ที่ใช้แหล่งกำเนิดไม่ได้มาจากมารแม้แต่กับระบบ
peterh - Reinstate Monica

2

วิธีแก้ปัญหาอื่นก็คือการล้างหน้าจอที่จุดเริ่มต้นของไฟล์ motd ดังนี้:

^[[H^[[2J
whatever was originally in the motd file here

หมายเหตุ: แทนที่^[ด้วยสัญลักษณ์หนีภัย (ซึ่งคุณสามารถสร้างในเครื่องมือแก้ไขนาโนโดยกดปุ่มต่อไปนี้: esc+ v+ esc)


-2

บางทีมีวิธีแก้ไขในกรณีที่คุณต้องการเปลี่ยน IP การเข้าสู่ระบบครั้งล่าสุด

ตัวอย่างเช่นคุณสามารถเปลี่ยนที่อยู่ IP ที่แสดงเป็น "localhost" โดยเข้าสู่ระบบ ssh อีกครั้งจากเครื่องควบคุมจากระยะไกล!

รีโมตล็อกอินผ่าน ssh >> ssh ชื่อผู้ใช้ @ localhost

ตอนนี้ IP สุดท้ายที่บันทึกไว้จะเป็นlocalhost

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.