วันที่สร้างบัญชีท้องถิ่น


9

เพื่อวัตถุประสงค์ในการปฏิบัติตามข้อกำหนดมีความจำเป็นต้องดึงข้อมูลเกี่ยวกับวันที่สร้างบัญชีผู้ใช้ (ผู้ใช้และไม่ใช่ผู้ใช้) บนเครื่อง UNIX

มีวิธีใดบ้าง (แม้ว่าจะไม่ใช่วิธีที่เชื่อถือได้หรือแม่นยำที่สุด) ในการเก็บรวบรวมข้อมูลประเภทนั้น?

เช่นเป็นทางเลือกฉันไปค้นหาhomeวันที่สร้างไดเรกทอรี (สำหรับบัญชีผู้ใช้) แต่ฉันค้นพบว่าไม่มีการประทับเวลาของระบบที่เข้ากันได้กับ POSIX สำหรับการสร้างไฟล์


ในฐานะที่เป็นประมาณน้ำมันดิบผมคิดว่าทางออกที่ดีที่สุดของคุณคือการทำบางขุดนิติวิทยาศาสตร์ใน/var/log/auth.log(คุณอาจต้องดูในบันทึกการหมุนเช่นกัน: /var/log/auth.log.1, /var/log/auth.log.2.gz, ... ) นี่จะให้เงื่อนงำแก่คุณในวันแรกที่บัญชีผู้ใช้รับรองความถูกต้อง สิ่งนี้จะไม่ทำงานสำหรับผู้ใช้ระบบและจะล้มเหลวหากบัญชีถูกสร้างขึ้นมานานกว่าsyslogระยะเวลาการหมุนเวียนบันทึกของคุณ
โจเซฟอาร์.

ข้อมูลเฉพาะนี้ไม่ได้จัดเก็บไว้ที่ใดก็ได้ตามค่าเริ่มต้น แต่คุณสามารถลองตรวจสอบวันที่แก้ไขของ/home/user
Nidal

คำตอบ:


3

หากสร้างและไม่ได้สัมผัสตั้งแต่สร้างผู้ใช้คุณสามารถใช้.bash_logoutไฟล์เพื่อกำหนดวันที่ ในฐานะที่เป็นรันราก:

ls -l /home/<username>/.bash_logout

หรือหากผู้ใช้มีโฮมไดเรกทอรีคุณสามารถตรวจสอบวันที่แก้ไขล่าสุดของไดเรกทอรีนั้น:

ls -ld /home/username/

เพื่อรับเฉพาะวันที่คุณสามารถใช้awk:

ls -ld /home/username/ | awk '{ print $6,$7,$8 }'

แหล่ง


ls -ld /home/username/ให้เวลาการแก้ไขของโฮมไดเร็กตอรี่ซึ่งไม่น่าจะมีประโยชน์เนื่องจากเวลานี้มีการอัพเดททุกครั้งที่มีการเพิ่มหรือลบไฟล์ในไดเร็กตอรี่โฮม
Gilles 'หยุดความชั่วร้าย' ใน

3

การสร้างบัญชีอาจถูกบันทึก ภายใต้ Linux (ถ้าใช้ชุดยูทิลิตี้เงาทั่วไป) ทำให้รายการบันทึกภายใต้สิ่งอำนวยความสะดวกuseradd auth.infoโดยทั่วไปแล้วบันทึกนี้จะอยู่ใน/var/log/secureหรือ/var/log/auth.log(ขึ้นอยู่กับการกระจาย)

คุณสามารถตรวจสอบข้อมูลสำรองของคุณ/etc/passwdและดูว่าเป็นข้อมูลที่อายุน้อยที่สุดที่ไม่มีบัญชีนี้ ฉันใช้และแนะนำผู้ดูแลเพื่อติดตามการเปลี่ยนแปลง/etcดังนั้นgit annotate /etc/passwdฉันจะให้คำตอบ (อันที่จริงgit annotateจะบอกฉันครั้งสุดท้ายที่รายการของผู้ใช้มีการเปลี่ยนแปลง; อีกเล็กน้อยขุดที่มีระบบอัตโนมัติอยู่นอกขอบเขตของคำตอบนี้จะบอกฉันเมื่อรายการถูกเพิ่ม)

หากคุณไม่มีบันทึกการตรวจสอบการสำรองข้อมูลและประวัติการแก้ไขคุณจะต้องใช้วิธีการวิเคราะห์พฤติกรรม เงื่อนงำที่ดีคือไฟล์ที่มีการเปลี่ยนแปลงเวลา inode (ctime) เก่าที่สุด ฮิวริสติกนี้สามารถโกหกได้ทั้งสองวิธี: หากไดเรกทอรีถูกย้ายไปที่บ้านของผู้ใช้มันอาจมีไฟล์ที่มีเวลาเก่า (แต่สำหรับพวกเขาที่จะเก่ากว่าผู้ใช้) uid ของพวกเขาจะไม่เป็นของผู้ใช้ of uid เกี่ยวข้องกับการอัพเดต ctime ดังนั้นคุณสามารถข้ามไฟล์ที่ผู้ใช้ไม่ได้เป็นเจ้าของ); ในทางกลับกันบางเหตุการณ์สามารถเปลี่ยนเวลาของไฟล์ได้ (เช่นหากระบบทั้งหมดได้รับการกู้คืนจากข้อมูลสำรอง) คุณสามารถเริ่มต้นจากโฮมไดls -Alctr ~bobเร็กตอรี่ของผู้ใช้ ( | sed -n 2p), ซึ่งอาจมีไฟล์จาก/etc/skelที่ผู้ใช้ไม่เคยแก้ไข ( .bash_logoutเป็นไฟล์ธรรมดา), และดูว่ามีไฟล์เก่ากว่าfind ~bob ! -cnewer ~bob/.bash_logout -user bobหรือไม่ ด้วย zsh ให้เรียกใช้ls -ld ~bob/**/*(Doc[1]u:bob:).


1
$ chage -l fred

ตรวจสอบวันที่เปลี่ยนรหัสผ่าน


+1: เปรียบเทียบกับคำตอบอื่น ๆ ยกเว้นบันทึกการตรวจสอบ (ที่ไม่จำเป็นต้องมี) และ LDAP (ที่ไม่ได้อ้างถึงบัญชีท้องถิ่น) เราไม่มีวิธีการที่เชื่อถือได้ในการพิจารณาการสร้าง วันที่เป็นเพียงกลุ่มคุณลักษณะเพื่อดูความคิด นี่คือหนึ่งในพวกเขาและในระบบของฉันจริง ๆ แล้วมันเป็นจริงที่สุด (คนก็ไม่เปลี่ยนรหัสผ่าน) แม้ว่าจะมีความแม่นยำของวันเท่านั้น
user1182474

1

สำหรับผู้ใช้ท้องถิ่นคุณสามารถดูเวลาการเกิดโฮมไดเร็กตอรี่ของระบบและระบบไฟล์ที่บันทึก (Linux, BSD ส่วนใหญ่, macOS อย่างน้อย) วิธีการทำแตกต่างกันที่ว่าด้วยระบบ

สำหรับผู้ใช้ในไดเรกทอรี LDAP คุณสามารถดูแอตทริบิวต์createTimestamp(หรืออาจwhenCreated) ของรายการ LDAP ที่สอดคล้องกัน:

ldapsearch -LLL -x -H ldaps://ldap.example.com -s sub \
  -b dc=example,dc=com 'uid=username' createTimestamp whenCreated
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.