ค้นหาเว็บไซต์

การจัดการผู้ใช้และกลุ่ม การอนุญาตและคุณสมบัติของไฟล์ และการเปิดใช้งานการเข้าถึง sudo บนบัญชี - ตอนที่ 8


เมื่อเดือนสิงหาคมปีที่แล้ว Linux Foundation ได้เริ่มการรับรอง LFCS (Linux Foundation Certified Sysadmin) ซึ่งเป็นโปรแกรมใหม่ล่าสุดที่มีจุดประสงค์เพื่อให้บุคคลทุกที่และทุกแห่งทำข้อสอบเพื่อที่จะ ได้รับการรับรองในการสนับสนุนการดำเนินงานขั้นพื้นฐานถึงระดับกลางสำหรับระบบ Linux ซึ่งรวมถึงการสนับสนุนระบบและบริการที่ทำงานอยู่ พร้อมด้วยการตรวจสอบและการวิเคราะห์โดยรวม รวมถึงการตัดสินใจอย่างชาญฉลาดเพื่อให้สามารถตัดสินใจได้ว่าเมื่อใดจำเป็นต้องขยายปัญหาไปยังทีมสนับสนุนระดับที่สูงขึ้น

โปรดดูวิดีโอสั้นๆ ต่อไปนี้ที่อธิบายการแนะนำโปรแกรมการรับรอง Linux Foundation

บทความนี้เป็นตอนที่ 8 ของชุดบทช่วยสอนแบบยาว 10 ชุด ในส่วนนี้ เราจะแนะนำคุณเกี่ยวกับวิธีจัดการสิทธิ์ผู้ใช้และกลุ่มในระบบ Linux ที่จำเป็นสำหรับการสอบรับรอง LFCS

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

การเพิ่มบัญชีผู้ใช้

หากต้องการเพิ่มบัญชีผู้ใช้ใหม่ คุณสามารถเรียกใช้คำสั่งใดคำสั่งหนึ่งจากสองคำสั่งต่อไปนี้ในฐานะรูทได้

adduser [new_account]
useradd [new_account]

เมื่อมีการเพิ่มบัญชีผู้ใช้ใหม่เข้าสู่ระบบ จะดำเนินการดังต่อไปนี้

1. โฮมไดเร็กทอรีของเขา/เธอถูกสร้างขึ้น (/home/username เป็นค่าเริ่มต้น)

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

.bash_logout
.bash_profile
.bashrc

3. เก็บพักจดหมายถูกสร้างขึ้นสำหรับผู้ใช้ที่ /var/spool/mail/ชื่อผู้ใช้

4. มีการสร้างกลุ่มและตั้งชื่อเดียวกันกับบัญชีผู้ใช้ใหม่

ทำความเข้าใจกับ /etc/passwd

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

[username]:[x]:[UID]:[GID]:[Comment]:[Home directory]:[Default shell]
  1. ช่อง [ชื่อผู้ใช้] และ [ความคิดเห็น] เป็นการอธิบายในตัวมันเอง
  2. x ในช่องที่สองระบุว่าบัญชีได้รับการป้องกันด้วยรหัสผ่านที่ซ่อนอยู่ (ใน /etc/shadow) ซึ่งจำเป็นสำหรับการเข้าสู่ระบบด้วย [ชื่อผู้ใช้] .
  3. ช่อง [UID] และ [GID] เป็นจำนวนเต็มที่แสดงถึงการระบุผู้ใช้และการระบุกลุ่มหลักที่ [ชื่อผู้ใช้] อยู่ตามลำดับ .
  4. [Home directory] ระบุเส้นทางที่แน่นอนไปยังโฮมไดเร็กตอรี่ของ [ชื่อผู้ใช้] และ
  5. [เชลล์เริ่มต้น] คือเชลล์ที่จะทำให้ผู้ใช้รายนี้ใช้งานได้เมื่อเขาหรือเธอเข้าสู่ระบบ
ทำความเข้าใจกับ /etc/group

ข้อมูลกลุ่มจะถูกจัดเก็บไว้ในไฟล์ /etc/group แต่ละระเบียนมีรูปแบบดังต่อไปนี้

[Group name]:[Group password]:[GID]:[Group members]
  1. [ชื่อกลุ่ม] คือชื่อของกลุ่ม
  2. x ใน [รหัสผ่านกลุ่ม] แสดงว่าไม่ได้ใช้รหัสผ่านกลุ่ม
  3. [GID]: เช่นเดียวกับใน /etc/passwd.
  4. [สมาชิกกลุ่ม]: รายชื่อผู้ใช้ที่เป็นสมาชิกของ [ชื่อกลุ่ม] โดยคั่นด้วยเครื่องหมายจุลภาค

หลังจากเพิ่มบัญชี คุณสามารถแก้ไขข้อมูลต่อไปนี้ (เพื่อตั้งชื่อบางฟิลด์) ได้โดยใช้คำสั่ง usermod ซึ่งมีไวยากรณ์พื้นฐานของ usermod ดังต่อไปนี้

usermod [options] [username]
การตั้งวันหมดอายุสำหรับบัญชี

ใช้แฟล็ก –expiredate ตามด้วยวันที่ในรูปแบบ YYYY-MM-DD

usermod --expiredate 2014-10-30 tecmint
การเพิ่มผู้ใช้ในกลุ่มเสริม

ใช้ตัวเลือก -aG หรือ –append –groups รวมกัน ตามด้วยรายการกลุ่มที่คั่นด้วยเครื่องหมายจุลภาค

usermod --append --groups root,users tecmint
การเปลี่ยนตำแหน่งเริ่มต้นของโฮมไดเร็กตอรี่ของผู้ใช้

ใช้ตัวเลือก -d หรือ –home ตามด้วยเส้นทางที่แน่นอนไปยังโฮมไดเร็กตอรี่ใหม่

usermod --home /tmp tecmint
การเปลี่ยนเชลล์ที่ผู้ใช้จะใช้เป็นค่าเริ่มต้น

ใช้ –shell ตามด้วยเส้นทางไปยังเชลล์ใหม่

usermod --shell /bin/sh tecmint
การแสดงกลุ่มที่ผู้ใช้เป็นสมาชิก
groups tecmint
id tecmint

ตอนนี้เรามาดำเนินการคำสั่งข้างต้นทั้งหมดพร้อมกัน

usermod --expiredate 2014-10-30 --append --groups root,users --home /tmp --shell /bin/sh tecmint

ในตัวอย่างข้างต้น เราจะตั้งค่าวันหมดอายุของบัญชีผู้ใช้ tecmint เป็น 30 ตุลาคม 2014 นอกจากนี้เรายังจะเพิ่มบัญชีลงใน ราก และกลุ่มผู้ใช้ สุดท้ายนี้ เราจะตั้งค่า sh เป็นเชลล์เริ่มต้นและเปลี่ยนตำแหน่งของโฮมไดเร็กทอรีเป็น /tmp:

อ่านเพิ่มเติม:

  1. 15 useradd ตัวอย่างคำสั่งใน Linux
  2. 15 ตัวอย่างคำสั่ง usermod ใน Linux

สำหรับบัญชีที่มีอยู่ เรายังดำเนินการดังต่อไปนี้ได้

ปิดการใช้งานบัญชีโดยการล็อครหัสผ่าน

ใช้ตัวเลือก -L (L ตัวพิมพ์ใหญ่) หรือ –lock เพื่อล็อครหัสผ่านของผู้ใช้

usermod --lock tecmint
การปลดล็อครหัสผ่านผู้ใช้

ใช้ตัวเลือก –u หรือ –unlock เพื่อปลดล็อกรหัสผ่านของผู้ใช้ที่ถูกบล็อกก่อนหน้านี้

usermod --unlock tecmint

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

รันชุดคำสั่งต่อไปนี้เพื่อให้บรรลุเป้าหมาย

groupadd common_group # Add a new group
chown :common_group common.txt # Change the group owner of common.txt to common_group
usermod -aG common_group user1 # Add user1 to common_group
usermod -aG common_group user2 # Add user2 to common_group
usermod -aG common_group user3 # Add user3 to common_group
การลบกลุ่ม

คุณสามารถลบกลุ่มด้วยคำสั่งต่อไปนี้

groupdel [group_name]

หากมีไฟล์ที่เป็นของ group_name ไฟล์เหล่านั้นจะไม่ถูกลบ แต่เจ้าของกลุ่มจะถูกตั้งค่าเป็น GID ของกลุ่มที่ถูกลบ

สิทธิ์ของไฟล์ Linux

นอกเหนือจากสิทธิ์การอ่าน เขียน และดำเนินการขั้นพื้นฐานที่เราได้กล่าวถึงในเครื่องมือการเก็บถาวรและการตั้งค่าคุณลักษณะของไฟล์ – ส่วนที่ 3 ของชุดข้อมูลนี้แล้ว ยังมีการตั้งค่าสิทธิ์อื่น ๆ ที่ใช้น้อยกว่า (แต่สำคัญไม่น้อย) ซึ่งบางครั้งเรียกว่า “พิเศษ สิทธิ์

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

การลบบัญชีผู้ใช้

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

userdel --remove [username]

การจัดการกลุ่ม

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

ตัวอย่างเช่น สมมติว่าคุณมีผู้ใช้ต่อไปนี้

  1. user1 (กลุ่มหลัก: user1)
  2. user2 (กลุ่มหลัก: user2)
  3. user3 (กลุ่มหลัก: user3)

ทั้งหมดนี้ต้องการสิทธิ์การเข้าถึงแบบ อ่าน และ เขียน ไปยังไฟล์ชื่อ common.txt ซึ่งอยู่ที่ใดที่หนึ่งบนระบบท้องถิ่นของคุณ หรืออาจอยู่ในเครือข่ายที่ใช้ร่วมกันที่ user1 ได้สร้างแล้ว คุณอาจถูกล่อลวงให้ทำบางอย่างเช่น

chmod 660 common.txt
OR
chmod u=rw,g=rw,o= common.txt [notice the space between the last equal sign and the file name]

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

นี่คือจุดที่กลุ่มมีประโยชน์ และนี่คือสิ่งที่คุณควรทำในกรณีเช่นนี้

ทำความเข้าใจกับเซตุอิด

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

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

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

ทำความเข้าใจกับเซทกิด

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

chmod g+s [filename]

หากต้องการตั้งค่า setgid ในรูปแบบฐานแปด ให้เพิ่มตัวเลข 2 ไว้ข้างหน้าสิทธิ์พื้นฐานปัจจุบัน (หรือที่ต้องการ)

chmod 2755 [directory]
การตั้งค่า SETGID ในไดเร็กทอรี

ทำความเข้าใจกับ Sticky Bit

เมื่อตั้งค่า “sticky bit ” บนไฟล์ Linux จะไม่สนใจมัน ในขณะที่สำหรับไดเร็กทอรีจะมีผลในการป้องกันไม่ให้ผู้ใช้ลบหรือเปลี่ยนชื่อไฟล์ที่มีอยู่ เว้นแต่ผู้ใช้จะเป็นเจ้าของไดเร็กทอรี ไฟล์หรือเป็นรูท

chmod o+t [directory]

หากต้องการตั้งค่า sticky bit ในรูปแบบฐานแปด ให้เพิ่มตัวเลข 1 ไว้หน้าสิทธิ์พื้นฐานปัจจุบัน (หรือที่ต้องการ)

chmod 1755 [directory]

หากไม่มี Sticky Bit ใครก็ตามที่สามารถเขียนลงในไดเร็กทอรีสามารถลบหรือเปลี่ยนชื่อไฟล์ได้ ด้วยเหตุผลดังกล่าว Sticky Bit จึงมักพบในไดเร็กทอรี เช่น /tmp ที่สามารถเขียนได้ทั่วโลก

คุณสมบัติไฟล์ Linux พิเศษ

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

chattr +i file1
chattr +a file2

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

การเข้าถึงบัญชีรูทและการใช้ sudo

หนึ่งในวิธีที่ผู้ใช้สามารถเข้าถึงบัญชีรูทได้คือการพิมพ์

su

จากนั้นป้อนรหัสผ่านของรูท

หากการรับรองความถูกต้องสำเร็จ คุณจะเข้าสู่ระบบในฐานะ root ด้วยไดเร็กทอรีการทำงานปัจจุบันเหมือนกับที่คุณเคยเป็นมาก่อน หากคุณต้องการวางไว้ในโฮมไดเร็กตอรี่ของรูทแทนให้รัน

su -

จากนั้นป้อนรหัสผ่านของรูท

ขั้นตอนข้างต้นกำหนดให้ผู้ใช้ปกติทราบรหัสผ่านของรูท ซึ่งก่อให้เกิดความเสี่ยงด้านความปลอดภัยอย่างร้ายแรง ด้วยเหตุผลดังกล่าว ผู้ดูแลระบบสามารถกำหนดค่าคำสั่ง sudo เพื่ออนุญาตให้ผู้ใช้ทั่วไปดำเนินการคำสั่งในฐานะผู้ใช้อื่น (โดยปกติคือผู้ใช้ระดับสูง) ในลักษณะที่มีการควบคุมและจำกัดอย่างมาก ดังนั้นจึงสามารถตั้งค่าข้อจำกัดให้กับผู้ใช้เพื่อให้เขาสามารถรันคำสั่งพิเศษเฉพาะตั้งแต่หนึ่งคำสั่งขึ้นไป และไม่มีคำสั่งอื่นใดอีก

อ่านเพิ่มเติม: ความแตกต่างระหว่างผู้ใช้ su และ sudo

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

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

visudo

ซึ่งจะเปิดไฟล์ /etc/sudoers โดยใช้ vim (คุณสามารถทำตามคำแนะนำที่ให้ไว้ในการติดตั้งและใช้งาน vim as Editor – ตอนที่ 2 ของซีรีส์นี้เพื่อแก้ไขไฟล์)

นี่เป็นบรรทัดที่เกี่ยวข้องมากที่สุด

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin"
root        ALL=(ALL) ALL
tecmint     ALL=/bin/yum update
gacanepa    ALL=NOPASSWD:/bin/updatedb
%admin      ALL=(ALL) ALL

มาดูพวกเขากันดีกว่า

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin:/usr/local/bin"

บรรทัดนี้ให้คุณระบุไดเร็กทอรีที่จะใช้สำหรับ sudo และใช้เพื่อป้องกันการใช้ไดเร็กทอรีเฉพาะผู้ใช้ ซึ่งอาจเป็นอันตรายต่อระบบได้

บรรทัดถัดไปใช้เพื่อระบุสิทธิ์

root        ALL=(ALL) ALL
  1. คำหลัก ALL คำแรกระบุว่ากฎนี้ใช้กับโฮสต์ทั้งหมด
  2. ทั้งหมด ที่สองระบุว่าผู้ใช้ในคอลัมน์แรกสามารถเรียกใช้คำสั่งด้วยสิทธิ์ของผู้ใช้คนใดก็ได้
  3. ALL อันที่สามหมายถึงสามารถรันคำสั่งใดก็ได้
tecmint     ALL=/bin/yum update

หากไม่มีการระบุผู้ใช้หลังเครื่องหมาย = sudo จะถือว่าเป็นผู้ใช้รูท ในกรณีนี้ ผู้ใช้ tecmint จะสามารถเรียกใช้ yum update ในฐานะรูทได้

gacanepa    ALL=NOPASSWD:/bin/updatedb

คำสั่ง NOPASSWD อนุญาตให้ผู้ใช้ gacanepa เรียกใช้ /bin/updatedb โดยไม่จำเป็นต้องป้อนรหัสผ่าน

%admin      ALL=(ALL) ALL

เครื่องหมาย % ระบุว่าบรรทัดนี้ใช้กับกลุ่มชื่อ “admin ” ความหมายของบรรทัดที่เหลือจะเหมือนกับความหมายของผู้ใช้ทั่วไป ซึ่งหมายความว่าสมาชิกของกลุ่ม “ผู้ดูแลระบบ ” สามารถเรียกใช้คำสั่งทั้งหมดในฐานะผู้ใช้คนใดก็ได้บนโฮสต์ทั้งหมด

หากต้องการดูว่า sudo มีสิทธิ์ใดบ้างที่คุณได้รับ ให้ใช้ตัวเลือก “-l ” เพื่อแสดงรายการ

PAM (โมดูลการรับรองความถูกต้องแบบเสียบได้)

โมดูลการตรวจสอบสิทธิ์แบบเสียบได้ (PAM) มอบความยืดหยุ่นในการตั้งค่ารูปแบบการตรวจสอบสิทธิ์เฉพาะตามแอปพลิเคชันและ/หรือตามบริการโดยใช้โมดูล เครื่องมือนี้มีอยู่ใน Linux รุ่นใหม่ทั้งหมด เอาชนะปัญหาที่นักพัฒนามักเผชิญในช่วงแรก ๆ ของ Linux เมื่อแต่ละโปรแกรมที่จำเป็นต้องมีการรับรองความถูกต้องต้องได้รับการรวบรวมเป็นพิเศษเพื่อทราบวิธีรับข้อมูลที่จำเป็น

ตัวอย่างเช่น สำหรับ PAM ไม่สำคัญว่ารหัสผ่านของคุณจะถูกจัดเก็บไว้ใน /etc/shadow หรือบนเซิร์ฟเวอร์แยกต่างหากภายในเครือข่ายของคุณ

ตัวอย่างเช่น เมื่อโปรแกรมเข้าสู่ระบบจำเป็นต้องตรวจสอบสิทธิ์ผู้ใช้ PAM จะจัดเตรียมไลบรารีแบบไดนามิกที่มีฟังก์ชันสำหรับรูปแบบการตรวจสอบความถูกต้องที่ถูกต้อง ดังนั้น การเปลี่ยนรูปแบบการรับรองความถูกต้องสำหรับแอปพลิเคชันเข้าสู่ระบบ (หรือโปรแกรมอื่น ๆ ที่ใช้ PAM) จึงเป็นเรื่องง่าย เนื่องจากเกี่ยวข้องกับการแก้ไขไฟล์การกำหนดค่าเท่านั้น (ส่วนใหญ่เป็นไฟล์ที่ตั้งชื่อตามแอปพลิเคชัน ซึ่งอยู่ภายใน /etc/pam.d และมีโอกาสน้อยใน /etc/pam.conf)

ไฟล์ภายใน /etc/pam.d ระบุว่าแอปพลิเคชันใดที่ใช้ PAM โดยธรรมชาติ นอกจากนี้ เราสามารถบอกได้ว่าแอปพลิเคชันบางตัวใช้ PAM หรือไม่โดยตรวจสอบว่าไลบรารี PAM (libpam) เชื่อมโยงกับแอปพลิเคชันนั้นหรือไม่:


ldd $(which login) | grep libpam # login uses PAM
ldd $(which top) | grep libpam # top does not use PAM

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

มาตรวจสอบไฟล์การกำหนดค่า PAM สำหรับ passwd ใช่แล้ว ซึ่งเป็นยูทิลิตี้ที่รู้จักกันดีในการเปลี่ยนรหัสผ่านของผู้ใช้ ตั้งอยู่ที่ /etc/pam.d/passwd:


cat /etc/passwd

คอลัมน์แรกระบุ ประเภท ของการตรวจสอบสิทธิ์ที่จะใช้กับ module-path (คอลัมน์ที่สาม) เมื่อเครื่องหมายยติภังค์ปรากฏขึ้นหน้าประเภท PAM จะไม่บันทึกลงในบันทึกของระบบหากไม่สามารถโหลดโมดูลได้เนื่องจากไม่พบในระบบ

มีประเภทการรับรองความถูกต้องดังต่อไปนี้:

  1. บัญชี: ประเภทโมดูลนี้จะตรวจสอบว่าผู้ใช้หรือบริการได้ให้ข้อมูลประจำตัวที่ถูกต้องในการตรวจสอบความถูกต้องหรือไม่
  2. auth: โมดูลประเภทนี้จะตรวจสอบว่าผู้ใช้คือบุคคลที่เขา/เธออ้างว่าเป็นและให้สิทธิ์ที่จำเป็นใด ๆ
  3. รหัสผ่าน: โมดูลประเภทนี้อนุญาตให้ผู้ใช้หรือบริการอัปเดตรหัสผ่านของตน
  4. เซสชัน: โมดูลประเภทนี้ระบุสิ่งที่ควรทำก่อนและ/หรือหลังการรับรองความถูกต้องสำเร็จ

คอลัมน์ที่สอง (เรียกว่า control) ระบุสิ่งที่จะเกิดขึ้นหากการตรวจสอบสิทธิ์กับโมดูลนี้ล้มเหลว:

  1. จำเป็น: หากการรับรองความถูกต้องผ่านโมดูลนี้ล้มเหลว การรับรองความถูกต้องโดยรวมจะถูกปฏิเสธทันที
  2. required คล้ายกับ requisite แม้ว่าโมดูลอื่นๆ ที่อยู่ในรายการสำหรับบริการนี้จะถูกเรียกก่อนที่จะปฏิเสธการตรวจสอบสิทธิ์
  3. เพียงพอ: หากการรับรองความถูกต้องผ่านโมดูลนี้ล้มเหลว PAM จะยังคงให้การรับรองความถูกต้องแม้ว่าก่อนหน้านี้จะทำเครื่องหมายว่าจำเป็นล้มเหลวก็ตาม
  4. เป็นทางเลือก: หากการรับรองความถูกต้องผ่านโมดูลนี้ล้มเหลวหรือสำเร็จ จะไม่มีอะไรเกิดขึ้น เว้นแต่จะเป็นโมดูลประเภทเดียวที่กำหนดไว้สำหรับบริการนี้
  5. include หมายความว่าบรรทัดประเภทที่กำหนดควรอ่านจากไฟล์อื่น
  6. substack คล้ายกับการรวม แต่ความล้มเหลวในการรับรองความถูกต้องหรือความสำเร็จไม่ได้ทำให้เกิดการออกจากโมดูลที่สมบูรณ์ แต่เป็นเพียงการออกจากสแต็กย่อยเท่านั้น

คอลัมน์ที่สี่ (ถ้ามี) จะแสดงอาร์กิวเมนต์ที่จะส่งไปยังโมดูล

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

เช่น ถ้าคุณต่อท้าย


remember=2

ไปที่บรรทัดต่อไปนี้


password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok

ใน /etc/pam.d/system-auth:


password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=2

รหัสผ่านแฮชสองอันสุดท้ายของผู้ใช้แต่ละคนจะถูกบันทึกไว้ใน /etc/security/opasswd เพื่อไม่ให้สามารถนำมาใช้ซ้ำได้:

สรุป

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