我正在尝试构建一个脚本,在我的服务器上进行一些更改,我可以通过访问网页来调用它。
但是,我遇到了一些关于apache用户权限的困难,他们尝试在我的php脚本中运行shell命令。根据您的服务器,用户可能是wwwrun或wwwdata。
例如,我想将目录更改为../subdomains/$url/httpdocs/
,但如果我运行后续pwd
,则表示我没有更改目录。我可以列出其他目录,但文件夹的权限阻止我进行大多数更改。
我不能手动进入服务器并chmod文件夹,因为文件夹应该是在我进入其他更改之前由系统自动生成的。
首先,我尝试编辑/ etc / sudoers,它适用于我的机器上的可执行文件,我实际上知道它的位置。然而,尽管我的所有搜索,我找不到像可执行文件中建立的BaSH的位置,如cd。但是,我觉得这是一个红鲱鱼。将这些功能添加到我的sudoers文件可能不利于安全性。
也许apache suEXEC是要走的路。但是我的服务器管理旅行并不是很先进,而且我没有为我的技能水平的人找到足够的指南来安装和设置它。
我还试图编写一个shell脚本,我可以从第一个php脚本调用,但我正在努力让它完全工作。我将继续使用它,但我觉得我可以并且应该能够使原始文件起作用。
对不起文字墙。谢谢你的帮助。
答案 0 :(得分:1)
我用来为我所拥有的约会网站的每个注册用户创建单独的目录,以便在他们上传图像并经过所有必要的处理和安全后,它会将其转储到具有该用户ID的文件中。这样,我不必搜索成千上万的图像,而只需要根据user_id搜索一个小目录。这就是我做到的。也许它会帮助你。
//path has to already exist with 773 perm
$path = 'path/to/dir';
//name of new dir, I use user ids for this
$dirname = '0123456789';
//create folder for user if one doesn't exist
//for this to work; had to edit /etc/sudoer with: sudo visudo -s command
//added: www-data ALL=(ALL) NOPASSWD: ALL
$thisdir = getcwd();
$dir = $thisdir ."/".$path."/".$dirname;
if(!is_dir($dir)){
mkdir($dir, 0731);
//required to change dir perm to 755
$old = umask(0);
chmod($dir, 0731);
umask($old);
}