我正在尝试通过网站以编程方式将 RSA 公钥附加到 authorized_keys 文件中,但我无法找到任何可行的解决方案。我尝试使用 PHP 的file_put_contents()
函数,但遇到权限被拒绝错误,并且我有一个可以工作的 python 脚本,但我似乎无法让 PHP 使用exec()
命令或shell_exec()
. 这是相关的PHP代码:
if(@$_POST['action']=='submit'){
$key = $_POST['key_field'];
//file_put_contents("/home/biosproject/.ssh/authorized_keys", $key, FILE_APPEND);
$test = "/usr/bin/python savetofile.py \"".$key."\"";
$tmp = shell_exec($test);
}
我知道我需要清理输入,但该网站目前正在开发中,所以我只是在此期间像这样测试它。现在我正在使用运行 Apache 的 XAMPP。有什么我想念的或可以尝试的吗?对于 PHP exec/shell_exec,我尝试对命令的所有部分使用完整路径名,但还没有任何效果。python脚本如下:
#!usr/bin/python
import sys
key = sys.argv[1]
with open("/home/biosproject/.ssh/authorized_keys","a") as append:
diditwork = append.write(key)
print key
正如我之前提到的,这个脚本是有效的,但我不能从 PHP 脚本中调用它。
编辑:
我的 authorized_keys 文件如下所示:
-rw-rw-rw- 1 biosproject www-data 1200 Apr 15 13:17 /home/biosproject/.ssh/authorized_keys
更新:
我通过使用从数据库条目附加必要信息的 cron 作业绕过权限来解决此问题。现在效果很好!