0

それで、私はしばらく取り組んできたプロジェクトを実行しています。私は sudo node を使用して実行していますが、これが良い考えであるかどうか最初に疑問に思いますか? 私がこれを行っている理由は、sudo を使用してプログラムを起動しない限り、ポート 80 でリッスンできない場合があるためです。

とにかく、fs.appendFileSyncまたは任意のファイル作成を使用すると、ファイルへのアクセスがsudoに制限されます(sudo rmを使用してOS内のファイルのみを削除できます...、これらのファイルを任意の場所から削除および変更できるようにしたい他のシステム ユーザー。

では、sudo を使用してノードを起動する必要がありますか? また、sudo でファイルを作成し、他のユーザーがそれらを削除できるようにするにはどうすればよいですか (たとえば、UI を使用して自分自身)。

4

1 に答える 1

3

sudo よりも優れたアプローチがいくつかあります。

  1. 非ルートとして実行され、ポート > 1024 でリッスンするノード プロセスにトラフィックを転送するポート 80 でリッスンするリバース プロキシを使用します。フレームワーク Web サーバーの前に http サーバーを使用する必要があるのはなぜですか? を参照してください。そして、議論を支持するための私の答えはここにあります。
  2. ノード プロセスを root として開始し、ポート 80 を root としてバインドprocess.setuidしてから、root 以外のユーザーに権限をドロップするために使用します。このテクニックに関する記事はこちらです。

の目的sudoは、主に、ログインして対話型シェルを実行しているユーザーが特定のコマンドを実行することです。ネットワークサービスの運用においては、実際には何の役割もありません。

権限に関しては、ノード プロセスは root 以外のユーザーとして実行し、アプリケーション操作の一部としてファイルを書き込むために必要な特定のディレクトリに適切なファイル システム書き込み権限を持っている必要があります。

sudo を使用してプログラムを起動しない限り、ポート 80 でリッスンできないことがあります。

「たまに」ではなく、いつも。1024 未満のネットワーク ポートにバインドするには、Unix プロセスがルートである必要があります。

于 2013-03-15T22:45:15.327 に答える