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

วิธีเปลี่ยน (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