ผู้ใช้สามารถเปลี่ยนรหัสผ่านได้อย่างไรถ้า nologin


0

ฉันต้องการมีผู้ใช้ฐานข้อมูลบางส่วนบนเซิร์ฟเวอร์ RHEL6 ของฉัน เนื่องจากผู้ใช้ DB เป็นเพียงผู้ใช้ DB ฉันไม่ต้องการให้พวกเขาเข้าสู่ระบบเชลล์

ถ้าเป็นเช่นนั้นผู้ใช้เหล่านั้นจะเปลี่ยนรหัสผ่านได้อย่างไร

คำตอบ:


1

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

คุณจะต้องการ:

  • เซิร์ฟเวอร์ HTTP ที่เปิดใช้งาน PHP
  • PHP daemon ทำงานเป็นรูท (หรือผู้ใช้ที่มีสิทธิ์ในการเปลี่ยนรหัสผ่าน)

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

คุณสามารถใช้มันได้หลายวิธี หากคุณใช้การพิสูจน์ตัวตนแบบ Unix เริ่มต้นแพ็คเกจPHP PAMจะมีประโยชน์ คุณสามารถหาบทช่วยสอนจำนวนมากเกี่ยวกับการตรวจสอบและเปลี่ยนรหัสผ่านด้วย PHP ผ่านsshการเชื่อมต่อหรือด้วยexpectแต่มันเป็นความคิดที่ดีมาก - การหลีกเลี่ยงข้อโต้แย้งอย่างถูกต้องจะทำได้ยากและคุณอาจพลาดช่องโหว่ด้านความปลอดภัย โมดูล PAM ปลอดภัยกว่ามาก เพียงให้แน่ใจว่าใช้มันใน daemon ไม่ใช่แอปพลิเคชัน PHP เว็บเซิร์ฟเวอร์ของคุณเนื่องจากการเรียกใช้ PHP ที่เข้าถึงได้จากภายนอกเนื่องจากรากนั้นเป็นอันตรายมาก

แน่นอนว่าคุณสามารถนำไปใช้ในทางอื่นเช่นใน Python หรือกับเซิร์ฟเวอร์ที่ใช้ bash (ใช้ netcat) ฉันใช้ PHP เป็นตัวอย่างเพราะครั้งหนึ่งฉันเคยใช้คุณสมบัติที่เหมือนกันทั้งหมดใน PHP


ดีใจที่ฉันสามารถช่วย นอกจากนี้คุณยังสามารถพูดว่า "ขอบคุณ" โดย upvoting คำตอบถ้าคุณพบว่าเป็นประโยชน์ :)
gronostaj

1

ฉันพบวิธีที่รวดเร็วและสกปรกในการทำเช่นนั้น

รันคำสั่งเหล่านี้:

$ sudo useradd -m -d /home/username -s /usr/bin/passwd -c "login is forbidden for this user" username -N -g users
$ chown root:users /home/username
$ chmod 555 /home/username  

ตอนนี้ผู้ใช้ 'ชื่อผู้ใช้' สามารถเปลี่ยนรหัสผ่าน เขา / เธอ / เธอไม่สามารถทำอะไรได้นอกจากเปลี่ยนรหัสผ่าน

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