วิธีเปลี่ยน (su) เป็นบัญชีผู้ใช้อื่นโดยไม่มีรหัสผ่าน
ในคู่มือนี้ เราจะแสดงวิธีสลับไปยังบัญชีผู้ใช้อื่นหรือบัญชีผู้ใช้เฉพาะโดยไม่ต้องใช้รหัสผ่าน ตัวอย่างเช่น เรามีบัญชีผู้ใช้ชื่อ postgres (บัญชีระบบผู้ใช้ขั้นสูง PostgreSQL ที่เป็นค่าเริ่มต้น) เราต้องการให้ผู้ใช้ทุกคน (โดยทั่วไปคือฐานข้อมูล PostgreSQL ของเรา และ ผู้ดูแลระบบ) ในกลุ่มชื่อ postgres เพื่อสลับไปใช้บัญชี postgres โดยใช้คำสั่ง su
โดยไม่ต้องป้อนรหัสผ่าน
ตามค่าเริ่มต้น เฉพาะผู้ใช้รูทเท่านั้นที่สามารถสลับไปยังบัญชีผู้ใช้อื่นโดยไม่ต้องป้อนรหัสผ่าน ผู้ใช้รายอื่นจะได้รับแจ้งให้ป้อนรหัสผ่านของบัญชีผู้ใช้ที่พวกเขาจะเปลี่ยนมาใช้ (หรือหากพวกเขาใช้คำสั่ง sudo พวกเขาจะได้รับแจ้งให้ป้อนรหัสผ่าน) หากพวกเขาไม่ได้ให้รหัสผ่านที่ถูกต้อง พวกเขาจะได้รับ ข้อผิดพลาด “การตรวจสอบสิทธิ์ล้มเหลว ” ดังที่แสดงในภาพหน้าจอต่อไปนี้
คุณสามารถใช้วิธีแก้ไขปัญหาสองวิธีด้านล่างนี้เพื่อแก้ไขปัญหาข้างต้น
1. การใช้โมดูลการตรวจสอบความถูกต้อง PAM
PAM (โมดูลการตรวจสอบสิทธิ์แบบเสียบได้) เป็นส่วนสำคัญของการตรวจสอบสิทธิ์ผู้ใช้บนระบบปฏิบัติการ Linux สมัยใหม่ หากต้องการอนุญาตให้ผู้ใช้ในกลุ่มใดกลุ่มหนึ่งสลับไปยังบัญชีผู้ใช้อื่นโดยไม่ต้องใช้รหัสผ่าน เราสามารถแก้ไขการตั้งค่า PAM เริ่มต้นสำหรับ คำสั่ง su ใน /etc/pam.d/suแข็งแกร่ง> ไฟล์
vim /etc/pam.d/su
OR
sudo vim /etc/pam.d/su
เพิ่มการกำหนดค่าต่อไปนี้หลัง “รับรองความถูกต้อง pam_rootok.so ” ดังที่แสดงในภาพหน้าจอต่อไปนี้
auth [success=ignore default=1] pam_succeed_if.so user = postgres
auth sufficient pam_succeed_if.so use_uid user ingroup postgres
ในการกำหนดค่าข้างต้น บรรทัดแรกจะตรวจสอบว่าผู้ใช้เป้าหมายคือ postgres หรือไม่ หากใช่ บริการจะตรวจสอบผู้ใช้ปัจจุบัน ไม่เช่นนั้น บรรทัด default=1
จะถูกข้ามไป และดำเนินการตามขั้นตอนการรับรองความถูกต้องตามปกติ
auth [success=ignore default=1] pam_succeed_if.so user = postgres
บรรทัดที่ตามมาจะตรวจสอบว่าผู้ใช้ปัจจุบันอยู่ในกลุ่ม postgres หรือไม่ หาก ใช่
กระบวนการตรวจสอบสิทธิ์จะถือว่าสำเร็จและส่งผลให้มีผลลัพธ์ที่เพียงพอ มิฉะนั้น ขั้นตอนการตรวจสอบสิทธิ์ปกติจะดำเนินการ
auth sufficient pam_succeed_if.so use_uid user ingroup postgres
บันทึกไฟล์และปิด
ถัดไป เพิ่มผู้ใช้ (เช่น aaronk) ที่คุณต้องการ su
ไปยังบัญชี postgres โดยไม่ต้องใช้รหัสผ่านไปยังกลุ่ม postgres โดยใช้คำสั่ง usermod
$sudo usermod -aG postgres aaronk
ตอนนี้ให้ลอง su
ไปยังบัญชี postgres ในฐานะผู้ใช้ aaronk คุณไม่ควรได้รับแจ้งให้ใส่รหัสผ่านดังที่แสดงในภาพหน้าจอต่อไปนี้:
su - postgres
2. การใช้ไฟล์ Sudoers
คุณยังสามารถ su
ให้กับผู้ใช้รายอื่นโดยไม่ต้องใช้รหัสผ่านโดยทำการเปลี่ยนแปลงบางอย่างในไฟล์ sudoers ในกรณีนี้ ผู้ใช้ (เช่น aaronk) ที่จะเปลี่ยนไปใช้บัญชีผู้ใช้อื่น (เช่น postgres) ควรอยู่ในไฟล์ sudoers หรือในกลุ่ม sudo สามารถเรียกใช้ คำสั่ง sudo ได้
sudo visudo
จากนั้นเพิ่มการกำหนดค่าต่อไปนี้ใต้บรรทัด “%sudo ALL=(ALL:ALL) ALL ”
ดังที่แสดงในภาพหน้าจอต่อไปนี้
aaronk ALL=NOPASSWD: /bin/su – postgres
บันทึกและปิดไฟล์
ตอนนี้ลอง su
ไปยังบัญชี postgres ในฐานะผู้ใช้ aaronk เชลล์ไม่ควรแจ้งให้คุณป้อนรหัสผ่าน:
sudo su - postgres
นั่นคือทั้งหมดที่สำหรับตอนนี้! สำหรับข้อมูลเพิ่มเติม โปรดดูหน้าการป้อนด้วยตนเองของ PAM (man pam.conf) และหน้าของ คำสั่ง sudo เช่นกัน (man sudo)
man pam.conf
man sudo