我有一个学生用来检查他们的编程作业和查看他们的成绩的 setuid 页面。典型用法是:
<pre>
~csXXX/bin/checkin key fileName
~csXXX/bin/grade key
</pre>
用户必须在部门机器上有一个帐户。此外,任何人都可以运行签到/评分,但它只有在也注册了特定课程时才有效。
学生们要求他们能够从平板电脑/智能手机上的浏览器访问他们的成绩。我正在考虑类似于以下内容的php页面
<pre>
<?php
<pre>
shell_exec("echo $password" | su - $user -c "~csXXX/bin/grade key")
</pre>
?>
</pre>
但是,这会失败并显示错误消息
<pre>
Password: stty: standard input: Inappropriate ioctl for device
</pre>
我相信我想使用 su 而不是 sudo 以便执行实际上是作为学生。该网页将要求学生登录,因此它可以访问他们的 ID/密码。有没有人建议如何做到这一点?
如果从网页执行签入程序,则工作量要多一些,因为它必须将提交的文件复制到部门计算机,然后以学生身份运行签入。我们正在考虑这一点,因为有些学生似乎不愿意将文件 ftp 到部门机器并使用 ssh 进行签入。
我更喜欢包装现有的程序,因为它们经过了很好的调试,并允许学生从 shell 或 Web 访问这些功能。
谢谢你。