exec()を別のユーザーとして実行することはできますか(私のボックスではwww-データとして実行されます)。 www-dataが所有していないファイルにアクセスする必要のあるスクリプトを実行したい。execを別のユーザーとして実行
答えて
私は、シリアルポートと通信するためには、いくつかのPHPスクリプトが必要であったのと同様の要件がありました。最初のシリアルポートは通常、ルートとグループダイヤルアウトで所有される/ dev/ttyS0です。
私の初期設定では、私は自分のapacheユーザーをグループダイヤルアウトに追加しました。 PHPスクリプトは問題なくシリアルポートに直接話すことができました。ただし、一度に1つのスクリプトインスタンスしかシリアルポートを開くことができないため、このソリューションは機能しませんでした。
その後、シリアルポートとPHPスクリプトの間にレイヤーを提供するデーモンを作成しました。 PHPスクリプトは、名前付きパイプを介してデーモンと通信し、デーモンは要求をフォーマットしてシリアルポートに渡します。ちょっとしたキャッシングを行います。
www-データ、またはApacheのユーザーが何であれ、それらのファイルを所有するグループにグループの実行権限を与えたり、私のようにプロキシを使用したりしてください。セキュリティがあなたに関係する場合は、私は後者に行くでしょう。
サーバーを実行するユーザーを変更できます。これは、Windows版のApacheを使用して簡単に行うことができます(サービスとしてApacheが実行され、Apacheを実行するユーザーを簡単に設定できます)。
どのサーバープラットフォームを使用していますか?
いいえ、直接ではありません。もしあなたがLinuxマシン上で権限を持っているなら、あなたのファイルにsetuidビットをセットすることができます。
ウェブサーバーは、理由により、別のユーザーとして実行されることに注意してください。これは非常に重要なセキュリティメカニズムであり、これを回避することでセキュリティ上の脆弱性が生じる可能性があります。
サーバーの構成(Apacheの場合)にアクセスできる場合は、suPHPを使用することを検討してください。仮想ホストのconfigurationでは、明示的にPHPスクリプトが実行されているユーザーとグループを設定することができます。
<VirtualHost 192.168.1.1:80>
...
suPHP_UserGroup user group
...
</VirtualHost>
この設定は--with-setid-mode=paranoid
オプションで構築suPHP構成のために利用可能です。
ユーザーIDを変更するもう1つの方法は、適切な特権が必要なposix_setuid()
です。これは、PHPスクリプトをというルートとして実行することを意味します。これは、セリフのセキュリティ上の問題です。
- 1. Windowsで別のユーザーとしてAnt execを実行する
- 2. 別のユーザーとしてのAnt execタスク
- 3. intellijは別のユーザーとしてmavenを実行しますか?
- 4. 別のユーザーとしてcgiスクリプトを実行
- 5. unix - 別のユーザーとしてコマンドを実行する
- 6. iisresetを別のユーザーとして実行するには?
- 7. X11:別のユーザーとしてgnomeアプリを実行
- 8. 別のユーザーとしてコードを実行する(C#)
- 9. 別のフォルダからant execタスクを実行する
- 10. Runtime.getRuntime()。exec - osqlクエリの実行
- 11. exec()を使用してコンソールアプリケーションを実行しています
- 12. パスワードなしで別のユーザーとしてスクリプトを実行する方法
- 13. ユーザー "hudson"としてjenkinsを実行
- 14. UACを避ける別のユーザーとしてprocess.startでvbsを実行
- 15. Bashで別のユーザーとしてコマンドのグループを実行する方法は?
- 16. Linux Cプログラミングはユーザーとして実行
- 17. 別のディレクトリにあるJavaのexecを使って.shファイルを実行していますか?
- 18. 安全にexecを使用してffmpegを実行する
- 19. PHPでexec()を使用してRSHコマンドを実行中
- 20. exec()ファミリを使用して "cd"コマンドを実行
- 21. netbeans 6.91とgdb - 別のユーザーが実行しているプロセスに接続する
- 22. Apacheを特定のユーザーとして実行しています
- 23. 別のユーザーとしてJenkinsを使用してビルドを実行すると、SignToolエラーが発生する
- 24. windowsでexecを実行する
- 25. php exec()からlibreofficeを実行する
- 26. リモートサーバでExec()を実行する
- 27. IIS上でexecとproc_openが異なるユーザーで実行されているのはなぜですか?
- 28. パスワードを含むウィンドウ7の別のユーザーとして実行するための単一行コマンド
- 29. 別のユーザーとしてのファブリックとSudo
- 30. 別のnode.jsプロセスとして関数を実行しますか?
ubuntu lucidを使用しています。私はセキュリティリスクのため、Apacheの実行中のユーザを変更したくないのですが、www-dataが所有していないファイルへのアクセスを必要とするバックエンドアプリケーションをいくつか作成しました。 www-データとそのファイルの所有者を含むグループを作成するという流れはどうでしょうか? – mrwooster
これは機能する他のオプションになります。 yozuがユーザーに高いレベルのアクセス権(rootなど)を割り当てると、Apacheのユーザーを変更することはセキュリティ上のリスクに過ぎません。 – Thariama