โฮมโฟลเดอร์ที่เข้ารหัสยังคงสามารถเข้าถึงได้หลังจากออกจากระบบ


13

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

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

wไม่แสดงรายการผู้ใช้และผลลัพธ์ของรายการsudo pgrep -u <username>ว่างเปล่าแสดงว่าผู้ใช้ไม่มีกระบวนการทำงานใด ๆ

อะไรคือสาเหตุของพฤติกรรมนี้? ทำไมไม่ล็อคโฟลเดอร์หลักของผู้ใช้หลังจากที่พวกเขาออกจากระบบ?


คุณช่วยกรุณารวมเอาท์พุทgrep -Fe ecryptfs /var/log/auth.logจากประมาณเวลาที่ผู้ใช้ออกจากระบบ?
David Foerster

คำสั่งให้ผลลัพธ์นี้: pastebin.com/jZXdahbJตาม Emacs บรรทัดเท่านั้นที่มีสตริง "ecryptfs" เป็นบรรทัดที่ถูกสร้างขึ้นเมื่อฉันวิ่งคำสั่งนั้น
UTF-8

ผลลัพธ์เป็นไปตามที่คาดหวังเพียงแค่เส้นที่ Emacs แสดงให้ฉันเห็นแล้ว: pastebin.com/VtV7iCDg
UTF-8

ตกลง. มันคุ้มค่าที่จะดู
David Foerster

ฉันได้สังเกตเห็นข้อผิดพลาดนี้ในระบบถ่ายทอดสดแบบถาวรเช่นกัน (ในความพยายามที่จะสร้างผู้ใช้รายที่สองที่มีการเข้ารหัสโฮม)
sudodus

คำตอบ:


6

บั๊กที่รู้จัก

ถ้าฉันเข้าใจถูกต้องนี่เป็นข้อผิดพลาดที่รู้จัก

ดูลิงค์นี้: wiki.archlinux.org/index.php/ECryptfs

เลื่อนลงไปที่ย่อหน้าสีชมพู

คำเตือน:น่าเสียดายที่การถอนการติดตั้งอัตโนมัตินั้นมีโอกาสที่จะทำลายด้วย systemd และมีการยื่นข้อบกพร่อง ...

ทำงานรอบ

มันเป็นตอนนี้คุณได้ดีกว่าปิดหรือรีบูตเพื่อลบร่องรอย (มันเป็นไม่มากพอที่จะออกจากระบบ)


คุณหมายถึงอะไรโดย "ออกจากระบบจะรั่วไหลข้อมูลระหว่างผู้ใช้"? คุณหมายถึงว่ามีอะไรเกิดขึ้นนอกเหนือจากนั้นผู้ใช้รายอื่นที่มีสิทธิ์เพียงพอสามารถเข้าถึงข้อมูลข้อความธรรมดาในโฮมไดเร็กตอรี่แรกของผู้ใช้ได้หรือไม่? (ซึ่งเป็นไปได้ก่อนที่จะออกจากระบบแน่นอน)
UTF-8

1
พยายามอธิบายให้ดีขึ้น: 'มันไม่เพียงพอที่จะออกจากระบบ' (ออกจากระบบไม่ได้ลบอินสแตนซ์ข้อความที่ชัดเจนของไฟล์ที่ใช้โดยผู้ใช้ที่มีการเข้ารหัสที่บ้านดังนั้นข้อมูลสามารถรั่วไหลจากผู้ใช้นี้ไปยังผู้ใช้อื่นที่เข้าสู่ระบบอย่างน้อยถ้าผู้ใช้รายนี้มีสิทธิ์ sudo แต่ถ้าคุณปิดหรือรีบูต, กรณีข้อความที่ชัดเจนของไฟล์ที่หายไป.
sudodus

3

ฉันไม่สามารถทดสอบหรือยืนยันสิ่งนี้ได้ แต่สมมติว่าคุณกำลังใช้ecryptfs(ซึ่งเป็นสิ่งที่อูบุนตูนำเสนอในระหว่างการติดตั้ง IIRC) ข้อมูลที่เข้ารหัสจะถูกเก็บไว้ในโฟลเดอร์ที่ซ่อนอยู่/home/.encryptfs/$USERและติดตั้งไปยังตำแหน่งโฟลเดอร์บ้านที่แท้จริงของecryptfsคุณ ใน.

ส่วนใหญ่แล้วสิ่งที่เกิดขึ้นคือเมื่อคุณออกจากระบบจะไม่สามารถยกเลิกเมานท์ไดเรกทอรีนั้นโดยอัตโนมัติดังนั้นไฟล์ยังคงสามารถเข้าถึงได้ อาจเกิดจาก ...

  • การกำหนดค่าที่ไม่ถูกต้อง (อาจจะต้องกำหนดค่าให้ยกเลิกการต่อเชื่อมเมื่อออกจากระบบ แต่ไม่ใช่)
  • ประเภทการล็อกเอาต์ที่ไม่คาดคิด (บางครั้งโซลูชันเหล่านี้ใช้สำหรับการเข้าสู่ระบบ / ออกจาก DM แต่ทำงานได้ไม่ดี
  • หากการถอนการติดตั้งถูกจัดการโดยสคริปต์การล็อกเอาต์ (ไม่จำเป็นต้องเป็นเคส) สิ่งที่นำหน้าคำสั่ง unmount อาจล้มเหลวและทำให้สคริปต์ออกจากต้นเร็ว

สิ่งหนึ่งที่สามารถช่วยคุณตรวจสอบสิ่งนี้คือการทำงานsudo mount | grep homeก่อนที่จะเข้าสู่ระบบหลังจากเข้าสู่ระบบและหลังจากที่ออกจากระบบเพื่อดูว่าhomeมีการติดตั้งอะไรที่เกี่ยวข้อง นอกจากนี้คุณยังสามารถค้นหา/etc/fstabรายการที่เกี่ยวข้อง ในที่สุดก็มีการกำหนดค่าบางอย่างใน/home/.ecryptfs/$USER/.ecryptfs/การตั้งค่าที่เกี่ยวข้องกับการติดตั้ง / ยกเลิกการต่อเชื่อมอัตโนมัติ

ข้อมูลที่เป็นประโยชน์เกี่ยวกับecryptfsสามารถพบได้ในคำตอบนี้และในการที่เคยเป็นประโยชน์ArchWiki


ฉันลองสิ่งที่คุณบอกฉัน: pastebin.com/DrmEXQPVฉันไม่ได้ออกจากระบบด้วยวิธีแปลก ๆ แต่ในวิธี GUI มาตรฐาน FS ยังคงติดตั้งอยู่อย่างที่คุณเห็น ไฟล์กำหนดค่าที่คุณกล่าวถึงว่างเปล่า ไม่มีอะไรใน/etc/fstabรายการยกเว้น 1 ของฉันที่บอกว่าควรติดตั้งพาร์ติชันข้อมูลของฉันเท่านั้น/และ 1 รายการซึ่งเกี่ยวกับทรัพยากรเครือข่ายที่เกี่ยวข้องกับมหาวิทยาลัย ฉันควรลองออกจากระบบด้วยวิธีอื่นหรือไม่? ถ้าเป็นเช่นนั้นได้อย่างไร
UTF-8

การออกจากระบบในวิธีที่ต่างออกไปเป็นการแสดงความคิดเห็นที่เดาได้ว่าผู้จัดการเดสก์ท็อปเพิ่มจำนวนมากที่ด้านบนของการเข้าสู่ระบบและการออกจากระบบที่ทำให้ความคิดซับซ้อนและทำให้ยากที่จะบอกว่าเหตุการณ์ใดถูกเรียก ฉันสงสัยว่าอาจมีบางบทหรือเหตุการณ์ที่ไม่ได้ทำงาน จากคำตอบอื่น ๆ มันไม่ใช่ปัญหาแบบนั้น แต่เป็นสิ่งที่ต้องทำด้วยecryptfsตัวเอง ในบันทึกย่อนั้นคุณใช้sshหรือเข้าสู่ระบบผ่านเทอร์มินัลข้อความหรือไม่? อาจเป็นไปได้ที่จะเขียนสคริปต์ที่จะจัดการกับการถอนการติดตั้งออกจากระบบถ้าเราพบที่ที่จะวาง
krs013

3

แก้ไข/etc/systemd/logind.confและตั้งค่าKillUserProcesses=yes

หมายเหตุว่านี้โปรแกรมแบ่งพื้นหลังscreen, tmuxและที่คล้ายกัน ...

คำถามนี้จะอธิบายรายละเอียดเพิ่มเติม ฉันพบว่าการกำหนดบริการ systemd ใหม่ไม่จำเป็น (หรือมากกว่านั้นอย่างถูกต้องไม่ใช่พฤติกรรมที่ต้องการเนื่องจากมันถูกเรียกใช้เป็น hook การปิดระบบไม่ใช่เมื่อเซสชันผู้ใช้สิ้นสุดลง)

/unix/251902/ecryptfs-auto-umount-does-not-work


ฉันจะตรวจสอบว่าวิธีการของคุณใช้ได้กับระบบถ่ายทอดสดแบบถาวรกับผู้ใช้คนที่สองซึ่งเข้ารหัสบ้าน
sudodus

ขออภัยฉันไม่สามารถทำให้วิธีนี้ทำงานในระบบสดแบบถาวรกับผู้ใช้รายที่สองซึ่งมีการเข้ารหัสภายในบ้าน (ผมไม่ได้ทดสอบวิธีการแก้ปัญหาของคุณในระบบที่ติดตั้งผมจะออกจากที่ไป @ UTF-8 ที่ถามคำถามเดิม.)
sudodus

ฉันไม่สนใจที่จะแก้ไขสิ่งนี้ในคอมพิวเตอร์ของฉันเอง ฉันเป็นคนเดียวที่ใช้มันต่อไป แต่ต้องการใช้ 2 บัญชีที่มีโฟลเดอร์ภายในบ้านที่เข้ารหัสและไม่มีใครรู้รหัสผ่านของทั้งสองบัญชี ฉันสนใจว่าทำไมมันไม่เลิกเมานท์ไดรฟ์ที่เข้ารหัสโดยอัตโนมัติโดยค่าเริ่มต้น ไม่สามารถตรวจสอบกระบวนการพื้นหลังที่ใช้งานอยู่ที่ทำงานอยู่ในบริบทของผู้ใช้และเลิกเมานท์ได้หากไม่มีหรือไม่
UTF-8

@ UTF-8 ฉันเห็นด้วยกับคุณว่าควรจะทำงานได้ตามที่คุณต้องการ ถ้าฉันเข้าใจถูกต้องนี่เป็นข้อผิดพลาดที่รู้จัก ดูลิงค์นี้wiki.archlinux.org/index.php/ECryptfs เลื่อนลงไปที่ย่อหน้าสีชมพู 'คำเตือน: น่าเสียดายที่การถอนการติดตั้งอัตโนมัตินั้นเป็นเรื่องง่ายที่จะทำลายด้วย systemd และการบันทึกข้อผิดพลาด' - ตามที่เป็นอยู่ในตอนนี้คุณควรปิดหรือรีบูตเพื่อลบร่องรอย (ออกจากระบบจะรั่วไหลข้อมูลระหว่างผู้ใช้)
sudodus

@ UTF-8 มันเป็นข้อผิดพลาดในการโต้ตอบ systemd / session ตั้งแต่อย่างน้อยก็น่ารำคาญ (ฉันสบายมาก ๆ แค่แขวนมันบน systemd) - การเปลี่ยนแปลง /etc/systemd/logind.conf เหมาะกับฉันใน 16.04 (ทดสอบกับผู้ใช้สามคน ช่วงที่แตกต่าง ฯลฯ ... )
quadruplebucky

3

ฉันได้ทำการค้นคว้าปัญหานี้มาระยะหนึ่งแล้วเช่นระบบไฟล์ที่ไม่ได้เข้ารหัสยังคงถูกเชื่อมต่อหลังจากผู้ใช้ออกจากระบบ

ฉันใช้ "ecryptfs-migrate-home -u user" เพื่อสร้างการติดตั้ง เส้นทางที่ติดตามและทำงานได้ทั้งหมดยกเว้นไม่มีการ unmount อัตโนมัติเมื่อออกจากระบบ

ฉันเปรียบเทียบไฟล์กำหนดค่าใน /etc/pam.d/ กับเอกสาร pam_ecryptfs และพบความแตกต่างบางอย่าง ecryptfs อยู่ใน 4 ของไฟล์กำหนดค่า pam.d ในขณะที่เอกสาร pam_ecryptfs ระบุว่ามีเพียง 2 ไฟล์ที่ต้องการ / ควร / สนับสนุน ecryptfs เช่น

   /etc/pam.d/common-auth:
              auth    required        pam_ecryptfs.so unwrap
   /etc/pam.d/common-session:
              session optional        pam_ecryptfs.so unwrap

ดังนั้นฉันแสดงความคิดเห็นอีก 2 อินสแตนซ์รีบูตและมันทำงานทั้งหมด auto-mounts ที่เข้าสู่ระบบและ auto-unmount เมื่อออกจากระบบสำหรับการเข้าสู่ระบบกราฟิกและคอนโซล (ฉันใช้ tty สำรองเพื่อยืนยันจากบัญชีรูท)

นี่คือ 18.04 Lubuntu บนแล็ปท็อปเดสก์ท็อปและแขก Virtualbox (โฮสต์ windows)

ฉันสนใจประสบการณ์ของผู้อื่น

edit_1: การใช้ถ้อยคำที่ดีขึ้น edit_2: เพิ่มเดสก์ท็อปและผลการทดสอบ VB


การปิดใช้งาน / แสดงความคิดเห็นออกจากบรรทัดเหล่านั้นทำให้เกิดปัญหาหรือไม่ การเปลี่ยนรหัสผ่านของคุณยังคงห่อไฟล์ eCryptfs อีกครั้งหรือไม่
Xen2050

สิ่งนี้ใช้ได้กับฉันใน Linux Mint 19 หากต้องการเพิ่มรายละเอียดเพิ่มเติมสำหรับผู้อื่น: ไฟล์ config สี่ไฟล์ใน /etc/pam.d ที่อ้างถึง ecryptfs คือ: common-auth, รหัสผ่านทั่วไป, เซสชันทั่วไป, เซสชันทั่วไป ไม่โต้ตอบ การใส่ความคิดเห็นในบรรทัดในรหัสผ่านทั่วไปและเซสชันทั่วไปแบบไม่โต้ตอบทำให้เกิดพฤติกรรมที่ต้องการยกเลิกการเมานท์ออกจากระบบ นอกจากนี้รายการใน Common-auth ถูกตั้งค่าเป็น "ทางเลือก" แทน "จำเป็น" เนื่องจากควรจะเป็นไปตามเอกสารประกอบ อย่างไรก็ตามฉันทิ้งสิ่งนี้ไว้ตามที่เป็นอยู่
evencoil

@ Xen2050 ขออภัยที่ตอบช้า ฉันไม่ได้ตรวจพบปัญหาใด ๆ หลังจากการเปลี่ยนแปลงการแสดงความคิดเห็นบรรทัดและฉันยังไม่ได้ลองเปลี่ยนรหัสผ่านในขณะนี้
Redrock

รหัสผ่านที่เปลี่ยนแปลงอาจมีความสำคัญในการทดสอบมันควรห่อกุญแจเข้ารหัสด้วยรหัสผ่านใหม่ของคุณใหม่โดยอัตโนมัติดังนั้นการเข้าสู่ระบบในครั้งต่อไปจะใช้งานได้ ถ้ามันไม่ได้ทำงานแล้วก็เปลี่ยนรหัสผ่านกลับไปก่อนหน้านี้หนึ่งควรจะทำงาน ... [มันเสมอดีที่จะมีการสำรองข้อมูลแม้ว่า]
Xen2050

1
@ Xen2050 ฉันทำการทดสอบการเปลี่ยนรหัสผ่าน มันทำงานได้
Redrock

2

ฉันทำมันด้วยสคริปต์ใน rclocal

#!/bin/sh
#

while true; do
    if [ ! -d /run/user/1000 ]; then
        if [ -f /home/momo/.mounted ]; then
            umount /home/harry
        fi      
    fi

    if [ ! -d /run/user/1001 ]; then
        if [ -f /home/vm/.mounted ]; then
            umount /home/maud
        fi
    fi

    sleep 10
done
exit 0

คุณจะได้รับหมายเลขผู้ใช้อย่างไร
Avinash Raj

0

หากคุณไม่ต้องการการเข้าถึงจาก cron หรือ at jobs (งานที่ไม่ใช่แบบโต้ตอบ) ไปยังโฮมไดเร็กตอรี่ใด ๆ จากนั้นคุณเพียงแค่ต้องคอมเม้นท์ให้กับบรรทัด

session  optional        pam_ecryptfs.so unwrap

ใน/etc/pam.d/common-session-noninteractive.

ซึ่งจะทำให้ไดเรกทอรีภายในบ้านที่เข้ารหัสทั้งหมดถูก unmount เมื่อผู้ใช้ออกจากระบบ

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