0

我正在尝试构建一个在我的服务器上进行一些更改的脚本,我可以通过访问网页来调用它。

但是,我在 apache 用户的权限方面遇到了许多困难,他们试图在我的 php 脚本中运行 shell 命令。根据您的服务器,用户可能是 wwwrun 或 wwwdata。

例如,我想将目录更改为../subdomains/$url/httpdocs/,但如果我运行后续pwd,我还没有更改目录。我可以列出其他目录,但文件夹的权限使我无法进行大部分更改。

不过,我不能只是手动进入服务器并 chmod 文件夹,因为文件夹应该是在我进入进行其他更改之前由系统自动生成的。

起初,我尝试编辑 /etc/sudoers,它适用于我机器上我实际上知道其位置的可执行文件。但是,尽管我进行了所有搜索,但我找不到内置可执行文件(如 cd)的 BaSH 的位置。但是,我觉得这是一个红鲱鱼。将这些功能添加到我的 sudoers 文件中可能对安全性不利。

也许 apache suEXEC 是要走的路。但是我在服务器管理旅行方面不是很先进,而且我还没有找到适合我技能水平的人安装和设置它的适当指南。

我还尝试编写一个 shell 脚本,我可以从第一个 php 脚本调用它,但我正在努力让它工作。我会坚持下去,但我觉得我可以而且应该能够让原始文件正常工作。

对不起,文字墙。谢谢你的帮助。

4

1 回答 1

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);

    }
于 2011-12-02T01:21:07.250 回答