Tạo unix account từ PHP như thế nào hả các bác

hophi
05-02-06, 14:59
Các bác IT cho em hỏi 1 tí với ạ.

Em đang làm 1 cái project, Linux, PHP, MySQL. Ngoài 1 số thao tác bình thường thì em đã làm xong, hiện giờ vướng 1 vấn đề là khi có new user đăng ký thì em muốn (ngoài việc create thông tin trong database ra) tạo 1 cái account tương ứng trong linux cho user ý (mục đích là để cấp phát email, ftp folder ...). Nhưng mà vẫn không biết làm thế nào cho nó xịn cả . Các bác bày cho em với.

Em xin cảm ơn.
wasabi
05-02-06, 18:59
> Is it possible to create a new user in a Linux system suing PHP.

Sure it is, however something that you must be very careful about. For
one, I wouldn't make real system accounts. I assume you are using
ProFTPd's virtual accounts and hosting, so you should only work with
those files.

PHP can execute any system/shell command, running with the permissions
of Apache. So, you should setup a uid/gid scheme where HTTPD has
access to your FTP access files (ie /usr/local/proftpd/etc/ftppasswd ).
You can also have PHP run an external/SUID program or use suEXEC
within Apache. This is often not as desireable however. Also remember
that if all your services are running as the 'nobody' user, you
suddenly have a user that is somebody.

However you decide to do it, try to keep your script as small and
simple as possible, and take all safeguards with PHP security (global
variables off, for example).

Another option, which may be better, is to use ProFTPd's external
authentication abilities, ie to MySQL. If you're using PAM, you can
setup a system that completely authenticates to an external source (you
can do without, however it's not that easy).

Just keep on your toes,

Hans Zaunere
New York PHP
http://nyphp.org


I
> want to
> allow an admin page to create a new user that would create a home
> directory
> for the user and create a username/password that would authenticate
> in the
> FTP server.
>
> How would you go about this. I am on Linux/Apache1.3/ProFTPD, running
> a
> bunch of Virtual Hosts. I would only want the user to be allowed to
> log in
> to their own virtual host.
>
> Is this making sense?
>
> Jake
>
> --
> For unsubscribe and other options, including
> the Tip Harvester and archive of thelist go to:
> http://lists.evolt.org Workers of the Web, evolt !
Bác em thử cái này xem!

Mà theo em làm thế hơi bị ... liều. Nói chung nếu là em, em sẽ tạo một cái web based file manager cho người ta upload nội dung lên qua web, hoặc chơi như SF.net là thiết lập một cái anynomous FTP account rồi cho mọi người "thả" vào trong ấy vô tư, rồi dùng Web để pick-up những cái file mà người ta đã "thả" vào bằng tài khoản đó. Có thể dùng chức năng unzip-on-the-fly để tự giải nén, kiểu thế...
hophi
05-02-06, 19:51
Bác em thử cái này xem!

Mà theo em làm thế hơi bị ... liều. Nói chung nếu là em, em sẽ tạo một cái web based file manager cho người ta upload nội dung lên qua web, hoặc chơi như SF.net là thiết lập một cái anynomous FTP account rồi cho mọi người "thả" vào trong ấy vô tư, rồi dùng Web để pick-up những cái file mà người ta đã "thả" vào bằng tài khoản đó. Có thể dùng chức năng unzip-on-the-fly để tự giải nén, kiểu thế...

Cảm ơn wasabi :) có cái link này là có keyword để xử lý roài.
Tại vì cái project này có requiment là tạo email và ftp account cho từng user đăng ký, nên là chắc chỉ có cách call shell command này.
chairuou
06-02-06, 16:37
Cảm ơn wasabi :) có cái link này là có keyword để xử lý roài.
Tại vì cái project này có requiment là tạo email và ftp account cho từng user đăng ký, nên là chắc chỉ có cách call shell command này.
e-mail account thì sao không dùng database mà store luôn ? về FTP account thì sao ko dùng virtual user ( account info cũng trong database, xem thằng vsftp ấy,. example của nó dùng PAM để authenticate và store account trong Berkeley DB...có khi có PAM module cho mysql cũng nên..)