从网页访问setuid程序

时间:2013-07-08 15:59:32

标签: passwords setuid

我有一个setuid页面,供学生用来检查他们的编程作业并查看他们的成绩。典型用法是:

<pre>
   ~csXXX/bin/checkin key fileName

   ~csXXX/bin/grade key
</pre>

用户必须在部门计算机上拥有帐户。此外,任何人都可以运行签入/成绩,但只有在特定班级注册时才会有效。

学生要求他们能够通过平板电脑/智能手机上的浏览器访问他们的成绩。我正在考虑使用以下

的php页面
<pre>
  &lt;?php
  &lt;pre&gt;
    shell_exec("echo $password" | su - $user -c "~csXXX/bin/grade key")
  &lt;/pre&gt;
  ?&gt;
</pre>

然而,这失败并显示错误消息

<pre>
Password: stty: standard input: Inappropriate ioctl for device
</pre>

我相信我想使用su代替sudo,以便执行实际上就像学生一样。该网页将要求学生登录,因此它可以访问他们的ID /密码。有没有人建议如何做到这一点?

如果从网页执行签到程序,则需要更多工作,因为它必须将提交的文件复制到部门机器,然后以学生身份运行签入。我们正在考虑这个问题,因为有些学生似乎不愿意将文件ftp到部门机器并使用ssh进行签入。

我更愿意将现有程序包装好,因为它们经过了很好的调试,并允许学生通过shell或Web访问这些功能。

谢谢。

1 个答案:

答案 0 :(得分:0)

我会给sudo另一个看,因为它可以让你获得更多控制权。此外,-S上的sudo标志告诉它从stdin而不是终端读取密码,因此它可以在您上面提供的上下文中工作。

但是,我会非常小心你在那里整理的计划。特别要注意在密码中引用shell元字符。似乎应该有更好,更安全的方式,但我对PHP知之甚少。