ผู้ใช้ทั่วไปสามารถอ่าน / etc / passwd นี่เป็นช่องโหว่ความปลอดภัยหรือไม่?


19
ls -l /etc/passwd

จะช่วยให้

$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1862 2011-06-15 21:59 /etc/passwd

ดังนั้นผู้ใช้ทั่วไปสามารถอ่านไฟล์ได้ นี่เป็นช่องโหว่หรือไม่

คำตอบ:


49

แฮชของรหัสผ่านจริงจะถูกเก็บไว้ใน/etc/shadowซึ่งผู้ใช้ทั่วไปไม่สามารถอ่านได้ /etc/passwdเก็บข้อมูลอื่น ๆ เกี่ยวกับ ID ผู้ใช้และเชลล์ที่ผู้ใช้ทุกคนต้องสามารถอ่านได้เพื่อให้ระบบทำงานได้


3
ไม่จริง - รหัสผ่านในอดีตถูกเก็บไว้ใน / etc / passwd - แต่สิ่งนี้ทำให้การจับคู่เดรัจฉานบังคับได้อย่างตรงไปตรงมา - ดังนั้นระบบที่ทันสมัยใช้ / etc / shadon ด้วย pam_unix และที่คล้ายกัน
symcbean

4
โมเดิร์นลินุกซ์/etc/shadowใช้ BSDs /etc/master.passwdใช้ /etc/security/passwdการใช้งานระบบปฏิบัติการ Solaris ใช้ HP-UX /.secure/etc/passwdและรายการไปที่ ...
คริส S

16

โดยทั่วไปรหัสผ่านที่แฮชจะถูกเก็บไว้ใน/etc/shadowระบบ Linux ส่วนใหญ่:

-rw-r----- 1 root shadow 1349 2011-07-03 03:54 /etc/shadow

(พวกเขาจะถูกเก็บไว้ใน/etc/master.passwdบนระบบ BSD .)

โปรแกรมที่ต้องดำเนินการรับรองความถูกต้องยังคงต้องใช้rootสิทธิ์:

-rwsr-xr-x 1 root root 42792 2011-02-14 14:13 /usr/bin/passwd

ถ้าคุณไม่ชอบsetuid rootโปรแกรมและไฟล์หนึ่งเดียวที่มีทั้งหมดรหัสผ่านแฮชในระบบของคุณคุณสามารถแทนที่ด้วยโมดูล Openwall TCB PAM สิ่งนี้จะช่วยให้ผู้ใช้ทุกคนมีไฟล์ของตัวเองสำหรับการจัดเก็บรหัสผ่านที่แฮช - ดังนั้นจำนวนของsetuid rootโปรแกรมในระบบจะลดลงอย่างมาก


13

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


2
การอ่านได้ทั่วโลกเป็นการตัดสินใจออกแบบไม่จำเป็น
Ben Voigt

@Ben: มันเป็นเหตุผลที่ไม่มีใครสามารถระบุไฟล์ที่เป็นของคนอื่นได้หรือไม่ มันเป็นร้านค้าในท้องถิ่นสำหรับ NSS ทุกวันนี้ไม่ใช่สำหรับ PAM แม้จะมีชื่อ
geekosaur

1
เป็นไปได้ทั้งหมดที่จะมีบริการที่มีสิทธิพิเศษทำ uid -> การแปลชื่อโดยไม่อนุญาตให้ผู้ใช้ที่ไม่มีสิทธิ์ถูกระบุรายชื่อผู้ใช้ทั้งหมด OS บางตัวเลือกตัวเลือกนั้น
Ben Voigt

1
@joechip OS ปัจจุบันไม่ได้ออกแบบมาเพื่อซ่อนผู้ใช้จากกันและกัน ผู้ใช้ทั้งหมดสามารถระบุได้หลายวิธีมากกว่า / etc / passwd ls -la / home บน Linux, ls -la / Users บน MacOS X, และ C: \ Users ใน windows 7, ps -afux ในระบบ Unix การเปลี่ยนตัวเลือกการออกแบบ Ben Voigt พูดพาดพิงถึงเพียงทำให้ชีวิตยากโดยไม่ต้องเปลี่ยนความปลอดภัย
นักมายากล

1
@Magicianeer - เพียงแค่บอกว่าตัวอย่าง Windows ไม่ถูกต้อง คุณสามารถดึงผู้ใช้ได้ด้วยวิธีอื่น แต่การดูที่โฟลเดอร์ C: \ users จะแสดงเฉพาะผู้ใช้ที่เข้าสู่ระบบเท่านั้น ไม่ใช่ผู้ใช้ระบบใด ๆ
burnt_hand

6

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

ยูทิลิตี้ของการมีไฟล์รหัสผ่านที่โลกอ่านได้นั้นมีความเสี่ยงมากกว่าความเสี่ยง แม้ว่ามันจะไม่สามารถอ่านได้ทั่วโลกgetent passwdคำสั่งการทำงานจะทำให้ความปลอดภัยได้รับเป็นโมฆะ

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

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

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