Passwords 从网页访问setuid程序

Passwords 从网页访问setuid程序,passwords,setuid,Passwords,Setuid,我有一个setuid页面,学生可以使用该页面查看编程作业和成绩。典型用法是: <pre> ~csXXX/bin/checkin key fileName ~csXXX/bin/grade key </pre> <pre> Password: stty: standard input: Inappropriate ioctl for device </pre> ~csXXX/bin/checkin密钥文件名 ~csXXX/bin/

我有一个setuid页面,学生可以使用该页面查看编程作业和成绩。典型用法是:

<pre>
   ~csXXX/bin/checkin key fileName

   ~csXXX/bin/grade key
</pre>
<pre>
Password: stty: standard input: Inappropriate ioctl for device
</pre>

~csXXX/bin/checkin密钥文件名
~csXXX/bin/grade键
用户必须在部门计算机上拥有帐户。此外,任何人都可以运行checkin/grade,但只有当用户也为特定类注册时,它才起作用

学生要求他们能够通过平板电脑/智能手机上的浏览器访问成绩。我在考虑类似php页面的东西,其中包含以下内容


?php
之前
shell_exec(“echo$password”| su-$user-c“~csXXX/bin/grade key”)
/前
?
但是,此操作失败,并显示错误消息


密码:stty:标准输入:设备的ioctl不正确
我相信我想使用su而不是sudo,这样执行实际上是作为学生的。该网页将要求学生登录,以便访问其id/密码。有人对如何做到这一点有建议吗

如果签入程序是从网页执行的,那么它的工作量会稍微多一些,因为它必须将提交的文件复制到系计算机上,然后作为学生运行签入。我们之所以考虑这个问题,是因为有些学生似乎不愿意将文件ftp到系里的机器上,并使用ssh进行签入

我更愿意包装现有的程序,因为它们经过良好的调试,并允许学生从shell或web访问功能


谢谢。

我想再看一眼
sudo
,因为它给了你更多的控制权。另外,
sudo
上的
-S
标志告诉它从
stdin
读取密码,而不是从终端读取密码,因此它可以在上面给出的上下文中工作

不过,我会非常小心你在那里制定的计划。尤其要注意在密码中引用shell元字符。似乎应该有一种更好、更安全的方法,但我对PHP不是很了解

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