4

我目前正在为我的 FTP 服务器创建一个成员系统,供我想要访问服务器的亲密朋友使用,但是我正在使用的 FTP 服务器(proFTPd)利用 linux 用户作为每个成员的帐户。因此,我当然需要使用带有 php 的 html 表单,它可以访问服务器并能够在系统上创建用户。

现在我已经完全设置了表单,它验证了电子邮件/用户名/密码并将其保存到我的 sql 数据库中。我唯一缺少的是创建新用户来完成它。

我知道这并不总是最安全的事情,但我确实想这样做,而且我知道危险,所以任何帮助都会很好......

截至目前,从我一直用来在 linux(或我的 Ubuntu 版本)上创建用户的情况来看,它是:

useradd [username] -p [password] -d [/path_to_home_directory] -s [/bin/false]

当然没有括号。

我也知道 php 命令:shell_exec、exec、system() 但是我已经尝试了其中的每一个命令来在其中创建用户,但没有任何效果。

我做了更多的研究,并注意到网络服务器正在 www-data 上运行(它应该是)并且它无权访问 useradd 命令。所以我'viduso'它仍然没有改变。

从我所见,我可以让 www-data 访问服务器上的脚本,然后将用户创建为 root 但是我不知道如何将存储在 php 中的变量传输到脚本。

如果您需要更多详细信息来帮助,请询问。这是我完成最后两个月项目所需的最后一件事,其中包括桌面应用程序和所有这些。它是如此接近,但我似乎无法得到它。

4

5 回答 5

2

您不应该为 FTP 服务创建 Unix 用户帐户,您应该集成您的proFTP服务器以MySQL用于身份验证(在 MySQL 中存储帐户),因此在这种情况下您不需要创建 Unix 帐户,这将是更好和安全的解决方案:

proFTP 与 MySQL

于 2013-02-20T17:27:48.913 回答
1

您可以在 中设置该位setuiduseradd因此它以 root 访问权限运行(例如)。但请注意:这是非常冒险的。这将允许服务器中的任何用户创建用户。

无论如何,我认为允许 web-php-script 创建帐户是安全漏洞!

于 2013-02-20T17:17:40.253 回答
1

只是一个注释。对于控制面板类型的事情,您有时必须以 root 身份执行操作。我发现最好的方法是在没有任何升级权限的情况下运行 PHP 控制面板。在不暴露主机系统的情况下制作一个适当安全的 PHP Web 应用程序已经够难的了。

如果控制面板需要进行需要 root 访问权限或任何高于 Web 服务器用户的访问级别的更改,最好将有关需要进行的更改的信息存储在 Web 服务器用户可以正常访问的位置 - 在数据库或通过在 Web 用户可以写入文件的某处创建文本文件。在存储信息之前,可以对用户提交的数据进行通常的清理。

然后每分钟、每小时或任何适合场合的 cron 脚本运行一次,以 root 身份从存储的任何位置获取数据,并执行所需的操作。您还可以在此脚本中执行完整性检查。

于 2013-11-28T18:02:49.277 回答
0

我认为最安全的方法是将您的网络服务器用户设置为 sudoer,仅适用于以 useradd 或 adduser 开头的命令,无论您的发行版是什么。所以你不必让你的网络用户成为root。

于 2016-01-24T04:33:05.697 回答
-1

脚本将是这样的:

<?php

$user_name = "uuttyy";
$user_pass = "passwer9911";

$ret_useradd = 0;
$ret_passwd = 0;

passthru('useradd -m '.$user_name, $ret_useradd);

if ($ret_useradd) {
        printf("Something wrong with useradd, code: %d\n", $ret_useradd);
        exit();
}

passthru('echo "'.$user_name.':'.$user_pass.'" | chpasswd', $ret_passwd);

if ($ret_passwd) {
        printf("Something wrong with chpasswd, code: %d\n", $ret_passwd);
        echo exec('userdel '.$user_name);
        exit();
}

printf("All done!\n");

?>

但正确的答案不是那样做,它有安全问题!调整(或更改)您的 FTP 服务器以使用用户数据库,并将用户添加到该数据库。正如 Satish 所说,proftpd+mariadb(mariadb 是 mysql 的一个更好的分支)对此有好处

于 2013-10-31T08:26:26.323 回答