0

Web ページにアクセスして呼び出すことができる、サーバーにいくつかの変更を加えるスクリプトを作成しようとしています。

ただし、php スクリプト内でシェル コマンドを実行しようとする apache ユーザーのアクセス許可に関して、多くの問題に遭遇しました。サーバーによっては、ユーザーが wwwrun または wwwdata の場合があります。

たとえば、ディレクトリを に変更したいのです../subdomains/$url/httpdocs/が、その後の を実行すると、pwdディレクトリが変更されていません。他のディレクトリを一覧表示することはできますが、フォルダに対するアクセス許可により、ほとんどの変更を行うことができません。

ただし、手動でサーバーにアクセスしてフォルダーを chmod することはできません。フォルダーは、他の変更を行う直前にシステムによって自動的に生成されるはずだからです。

最初に、/etc/sudoers を編集してみました。これは、実際に場所を知っているマシン上の実行可能ファイルに対して機能しました。ただし、すべての検索にもかかわらず、cd などの実行可能ファイルに組み込まれている BaSH の場所が見つかりません。しかし、これはニシンだと思います。これらの機能を sudoers ファイルに追加するのは、おそらくセキュリティ上良くないでしょう。

おそらく、apache suEXEC が最適です。しかし、私はサーバー管理の旅にあまり詳しくなく、私のスキル レベルの誰かがサーバーをインストールしてセットアップするための適切なガイドを見つけられませんでした。

また、最初の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 に答える