从非根网站应用程序安全地创build帐户

我有一个作为非特权用户运行的Web应用程序,需要创buildLinux帐户。

我不希望以root身份运行它,所以我认为唯一的scheme是创build一个简单的C suid程序,它接受一个参数并运行adduser来创build帐户。 作为一个附加的安全性,这个程序将700个运行该Web应用程序的用户帐户。

任何其他的想法/方法来做到这一点?

让网站使用sudo实用程序调用受保护的脚本,以便仅在必要时才获取root权限。

如果您不需要创build即时帐户,并且可以接受大约1分钟的延迟,则可以使用以下方法。

  1. Web应用程序应该有2个可写的目录:www-tmp,www-job

  2. 每次Web应用程序收到创build帐户请求时,都会在目录web-tmp中创build一个文件。 然后将文件移动到networking作业。 不直接在www-job中创build文件的原因是为了防止cron作业(请参阅下一步)读取不完整的文件。

  3. 创build一个具有所需权限的cron作业,每分钟运行一次。 每次运行时,它将处理www-job中的所有文件,创build帐户,然后删除文件。 继续检查和处理,直到www-job为空。 使用PID锁来防止并行运行。

通过上述stream程,您的networking应用程序不需要任何额外的权限。

Web应用程序是订单台。 克朗工作是生产线。 www-job是排队区域。 不同的部门,不同的权限。

数据库表可以用来代替文件/目录进行排队。

PS:你的cron作业,无论是bash,php还是perl,都应该在把parameter passing给系统调用之前做最后的检查。

用户名应该只包含字母(如果你想不区分大小写的用户名,所有的大写或小写都是数字),也许加上句点(。)。

对于密码,请检查最小长度。 确保(双重检查,三重testing)脚本将其作为一个string传递给系统调用,并且系统调用将其作为一个string取入。