0

CENTOS で「useradd」コマンドを実行しようとしていますが、ルート権限が必要なため実行できません。

php_info();には「--disable-posix」があります。PHP を再インストールしようとしましたが、yum などのオプションを使用して posix を有効にしようとしましたが、うまくいきませんでした。

誰かがposixを有効にするか、他の解決策を手伝ってくれますか? 私はそれが機能していることに気づきposix_getuid();ましたが、そうでposix_setuid();はありません。

解決策はありますか?

useradd「ユーザークリック」で passwd(root) コマンドに挿入する必要があるのはすべてです。これを行うための最善かつ最も安全な方法は何ですか?

どうもありがとう!

コーレン・オル

4

5 に答える 5

0

suEXEC ドキュメントを読みたい: http://httpd.apache.org/docs/2.2/suexec.html 次に、アプリケーションがどのように機能するかを再考し、より良い/安全な方法を見つけます。

于 2011-09-04T15:47:48.480 に答える
0

これを行うために使用できますsudo。実行visudoして次のようなものを入れます

apache ALL = (ALL) NOPASSWD: /usr/sbin/useradd

実際、SELINUX を適用している場合は機能しません。useradd を使用する代わりに、環境を適切に設定し、useradd を実行する前にサニティ チェックを行うラッパー スクリプトを作成することをお勧めします。

于 2011-09-04T15:57:10.020 に答える
0

sudo 経由で useradd を呼び出すシェル スクリプトを作成することをお勧めします。

特定のユーザー向けの特定のコマンドを /etc/sudoers (visudo コマンドで編集) に追加できます。

次のようになります。

Cmnd_Alias USERADD = /bin/sbin/useradd *

apache ALL=(USERADD) NOPASSWD:USERADD

useradd の呼び出し:

sudo /usr/sbin/useradd USERNAME

php スクリプトとシェル スクリプトの両方で入力を検証することを忘れないでください。

于 2011-09-04T15:57:37.303 に答える
0

Sudo は、これをすばやく実装するための簡単なハックになる可能性がありますが、セキュリティを確保するのは難しく、経験豊富な UNIX の第一人者にとっても落とし穴があります。

別の方法は、ルートとして実行し、ローカル UNIX ドメイン ソケットまたは名前付きパイプをリッスンする独自のサーバー デーモンを作成するか、単に特定の保護ディレクトリ内のファイルを検索することです。次に、追加するユーザー名を使用して、php スクリプトからこのデーモンにメッセージを送信します。このデーモンには最小限のアプリケーション機能のみを実装し、それ以外はすべて php に実装します。ただし、デーモンで強力な入力チェックを行い、環境をサニタイズするなどして、他の誰かではなくphpアプリが呼び出していることを本当に確認してください。

于 2011-09-04T21:50:21.307 に答える
-3

Sudo はインタラクティブに実行する必要があります (パスワードが必要です)。

Web サーバーへの root アクセスを許可するべきではありません。

Suexec は代替手段ですが、Web スクリプトでファイルに書き込み、ファイルを解析してコマンドを処理する cron ジョブを使用することもできます。

于 2011-09-04T16:14:45.093 に答える