Linux で非 root ユーザー プログラムに 1024 より小さいポートを使用させる方法
Linux では、デフォルトで 1024 未満のポートは root でのみ使用できます。他のユーザーで使用しようとすると、エラーが報告されます。場合によっては、root アカウントでプログラムを実行することを検討することがありますが、これは Linux システムにセキュリティ リスクをもたらす可能性があります。では、root 以外のユーザーが実行するプログラムで 1024 より小さいポートを外部に有効にできるようにするにはどうすればよいでしょうか? この記事では、いくつかの方法を紹介します: 最初のメソッド: SetUID ユーザーのアプリケーションの実行位置にユーザー ID を設定すると、プログラムを root 権限で実行できるようになります。ただし、この方法には十分な注意が必要です。特に、実行されるプログラムが本質的にセキュリティ リスクを引き起こす場合。 使用される方法は次のとおりです: chown root.root /path/to/application #SetUID を使用する chmod u+s /path/to/application システムでは、/usr/bin/passwd などのファイルが SetUID を使用していることがわかります。そのため、システム内のすべてのユーザーは passwd を使用してパスワードを変更できます。これは、/etc/passwd を変更するファイルです (root のみが権限を持っています)これをする)。 非 root ユーザーを使用してプログラムを実行するのは、プログラム自体がシステムにもたらすセキュリティ リスクを軽減するためです。そのため、この方法を使用する場合は特に注意する必要があります。 2 番目の方法: CAP_NET_BIND_SERVICE バージョン 2.1 以降、Linux カーネルには機能の概念があり、これにより、ポートの使用など、スーパーユーザーのみが実行できる操作を一般ユーザーが実行できるようになります。 CAP_NET_BIND_SERVICE 機能を取得すると、サービス プログラムが非 root アカウントで実行されている場合でも、低いポートにバンド接続できるようになります。使用した方法: # CAP_NET_BIND_SERVICE を設定します setcap cap_net_bind_service =+ep /path/to/application 注: 1. この方法はすべての Linux システムに適しているわけではありません。2.1 より前のカーネルではこの方法が提供されていないため、この方法を使用するシステムがそれをサポートしているかどうかを確認する必要があります。 2. もう 1 つの注意点は、実行するプログラム ファイルがスクリプトである場合、この方法は正しく機能しないことです。 3 番目の方法: ポート転送 実行したいプログラムに他のポートをリッスンする権限がある場合は、この方法を使用できます。まず、プログラムを非 root アカウントで実行し、1024 より高いポートをバインドします。正常に動作することを確認するには、次のようにします。 pass the low port ポート フォワーディングは、low ポートを high ポートに転送することで、root 以外で実行されているプログラムを low ポートにバインドできるようにします。この方法を使用するには、次を使用できます: # IP FORWARD カーネルパラメータを有効にします。 sysctl -w net.ipv4.ip_forward=1 # iptables ルールを使用してパケットをリダイレクトします iptables -F -t nat iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to:8088 最初のステップは、sysctl を使用して IP FORWARD 機能が有効になっていることを確認することです (この機能は Red Hat/CentOS ではデフォルトで無効になっています)。コードで使用されている sysctl 設定は一時的な設定であり、再起動後にリセットされることに注意してください。それらを永久に保存したい場合は、/etc/sysctl.conf ファイルを変更する必要があります: # デフォルト値は 0 ですが、1 に変更する必要があります。 # net.ipv4.ip_forward = 0 net.ipv4.ip_forward = 1 次に、ファイルから新しい設定をロードします # 新しいsysctl.confをロードします sysctl -p /etc/sysctl.conf # または sysctl -p # デフォルトのファイル名は /etc/sysctl.conf です 2 番目のステップでは、iptables ルールを使用して、プログラムが配置されているポートにポートを転送します。この例では、ポート 80 を 8088 に転送します。 この方法により、プログラムは非 root ユーザーでも実行でき、外部に低いポート番号のサービスを提供できます。 4 番目の方法: RINETD この方法ではポート フォワーディングも使用されます。このツールはローカル ポートをリモート ポートにマッピングできますが、結局のところ、この機能は現在の機能には少し役に立たず、システム リスクが増加する可能性があります。ここには推奨事項はありません。 Brothers IT Education のオリジナル Linux 運用保守エンジニア ビデオ/詳細な Linux チュートリアルを無料で入手できます。詳細については、公式 Web サイトのカスタマー サービスにお問い合わせください: http://www.lampbrother.net/linux/ PHP、Linux、HTML5、UI、Android、その他のビデオ チュートリアル (コースウェア + ノート + ビデオ)!お問い合わせQ2430675018 |

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。
