我有一个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访问这些功能。
谢谢。
答案 0 :(得分:0)
我会给sudo
另一个看,因为它可以让你获得更多控制权。此外,-S
上的sudo
标志告诉它从stdin
而不是终端读取密码,因此它可以在您上面提供的上下文中工作。