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. iisresetを別のユーザーとして実行するには?
- 5. X11:別のユーザーとしてgnomeアプリを実行
- 6. Javaで別のユーザーとしてssh接続を実行
- 7. Tomcatで異なるWebアプリケーションを別のユーザーとして実行
- 8. 別のユーザーとしてvshost.exeを実行する
- 9. 別のユーザーとしてcgiスクリプトを実行
- 10. 別のユーザーとしてコードを実行する(C#)
- 11. 分度器で別のユーザーとしてIEを実行する
- 12. unix - 別のユーザーとしてコマンドを実行する
- 13. シェフガードブロックを別のユーザーとして実行する
- 14. Apache Zeppelinを別のユーザーとして実行する
- 15. powershellコードを別のユーザーとして実行
- 16. Rundeck - 別のユーザーとしてlocalhost上でジョブを実行
- 17. ファブリック - 別のユーザーとして実行されますが、
- 18. 別のフォルダからant execタスクを実行する
- 19. Runtime.getRuntime()。exec - osqlクエリの実行
- 20. exec()を使用してコンソールアプリケーションを実行しています
- 21. ASP.net Webアプリケーションからpowershellを別のユーザーとして実行しますか?
- 22. パスワードなしで別のユーザーとしてスクリプトを実行する方法
- 23. ユーザー "hudson"としてjenkinsを実行
- 24. Nginxを非rootユーザーとして実行
- 25. jstackを別のユーザーで実行フルGC
- 26. UACを避ける別のユーザーとしてprocess.startでvbsを実行
- 27. Bashで別のユーザーとしてコマンドのグループを実行する方法は?
- 28. Docker Remote APIでexec startを実行したときのエラー500
- 29. QThreadsを使用してQDialog :: exec()を実行中にQWidget :: grab()を実行する
- 30. Powershell remoting - 別のユーザーとしてexeを実行できません
ubuntu lucidを使用しています。私はセキュリティリスクのため、Apacheの実行中のユーザを変更したくないのですが、www-dataが所有していないファイルへのアクセスを必要とするバックエンドアプリケーションをいくつか作成しました。 www-データとそのファイルの所有者を含むグループを作成するという流れはどうでしょうか? – mrwooster
これは機能する他のオプションになります。 yozuがユーザーに高いレベルのアクセス権(rootなど)を割り当てると、Apacheのユーザーを変更することはセキュリティ上のリスクに過ぎません。 – Thariama