ทำไม Webmin ถึง Authen ด้วย System User Login ผ่าน Web Base ได้ ?
- webmin ? ถ้าจำไม่่ผิด
ไม่ได้รันเป็น script/server-side-application เหมือน CGI/PHP บน Apache
มันเป็น Daemon ที่เป้น Web Server ในตัว รันโดยสิทธิ root สามารถเอาข้อมูลพวกนี้
ได้อยู่แล้ว ก็ใช้พวก getpwxxx, shadow, crypt interface ตามปกติได้เลย
หรือแม้กระทั่ง pam
Client --> Daemon + WebServer
- ถ้าจะเขียน script หรือ server-side เช่น php สงสัยว่าจะต้องทำ อย่างใดอย่างหนึ่ง
- 1 setuid wrapper คือ script หรือ executable ที่ setuid เป็น root ... ค่อนข้างจะอันตราย เกินไป ส่วนมากเป็น Perl หรือ Binary Executable ที่เีขียนอย่างดี สุดยอด ถึงจะ safe & secure
Client --> Apache/PHP/CGI --> Setuid App
- ทำเป็น daemon ก็คือ server บนเครื่องเราที่ให้บริการ script ต่าง ๆ ในการทดลอง login เอง (ก็เขียนโดย API แบบข้างบนน่ะแหละ อ๊วก) โดยใช้ unix socket, tcp ฯลฯ ตามสะดวก แต่มีข้อดีตรงที่ เราสามารถเขียนเพิ่มเติมเรื่อย ๆ ให้มันบริการอะไรก็ได้ เช่น บริการ reload config restart service สารพัด ซึ่งดู ๆ ไปอาจจะง่ายกว่าแบบ ทำ Web Server ในตัว Daemon ที่เราเขียน เอง (จริง ๆ ทำ ด้วย perl ไม่ยาก)
Client --> Apache/PHP/CGI --> Unix/TCP Socket --> Our Daemon (Login/Command/etc)
- วิธีนี้ง่ายสุด dummy test ครับ เช่น ให้มันลอง login ทำอะไรสักอย่างดูว่าผ่านหรือปล่าว ตัวอย่างเช่น เ้ทคนิค reverse-imap คือเขียนให้ php มันไปติดต่อกับ imap แล้ว authen ดูน่ะเอง โดย set ให้ imap ทำงานโดย ต้อง login เป็น real user ... ก็แค่นั้นเอง
Client --> Apache/PHP/CGI --> Unix/TCP Socket --> Dummy Login (IMAP/POP3/etc)
ถ้าเอาแค่ให้ login ไปใช้งาน script ของเราเฉย ๆ แนะนำวิธีหลังเนี่ย ง่ายดี ถ้าไม่รู้ว่า IMAP Authen ยังไงไปหา RFC อ่าน ... ว่าไป php มี imap extensions ด้วย :P จะใช้ก็ดี เพราะ วิธีอื่น อ่านแล้วจะไม่รู็เรื่อง ฮา ๆๆๆ - -' ถ้าจะให้เปลี่ยน password ลอง search ดู CGI ที่ใช้เปลี่ยน system password มี เขียนไว้อย่าง secure ดีแล้ว เป็น setuid มั้ง
--
There are 10 types of people. Those who are understand binary numbers and another aren't

