問題タブ [linux-capabilities]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 非ルート プロセスを Linux の「特権」ポートにバインドする方法はありますか?
私以外のユーザーがいないときに、私の開発ボックスにこの制限があるのは非常に面倒です。
私は標準的な回避策を知っていますが、どれも私が望むことを正確に行うものではありません:
- authbind (Debian テスト中のバージョン 1.0 は IPv4 のみをサポートします)
- iptables REDIRECT ターゲットを使用して、低いポートを高いポートにリダイレクトします(「nat」テーブルは、iptables の IPv6 バージョンである ip6tables にはまだ実装されていません)。
- sudo (ルートとして実行することは避けようとしています)
- SELinux (または類似)。(これは単なる私の開発ボックスです。余分な複雑さを導入したくありません。)
sysctl
非ルート プロセスが Linux の「特権」ポート (1024 未満のポート) にバインドできるようにする簡単な変数はありますか?
編集:場合によっては、機能を使用してこれを行うことができます。
linux - 実行中のプロセスに機能を付与する
すでに実行中のプロセスには、SO_RCVBUFFORCE ソケット オプションを使用するなどの特権命令が必要です。このプロセスは、通常のユーザー プロセスとして実行されています。
このプロセスに機能/許可を与える方法は? ファイルベースの機能設定はまだ夢ですか?
/usr/sbin/setpcaps
libcap パッケージとcap_set_proc()
apiのユーティリティを試しましたCAP_SETPCAP
が、システム (カーネル 2.6.20 の Fedora 4 に基づくレガシー システム) で機能がブロックされているため、別の自己の機能を付与/削除できません。処理する。
そのプロセスに一時的なルート uid を設定することを考えましたが、外部の既に実行中のプロセスの有効な UID を変更する方法はありますか? setuid()
/ seteuid()
/... 関数は、現在のプロセス (関数を呼び出している人) を変更するだけです。
linux - ユーザーごとにLinux機能を構成することは可能ですか?
Linuxカーネルにはきめ細かい機能がサポートされているようです。これにより、プロセスに権限を付与して、たとえば、プロセスのルート権限を付与せずにrawソケットを開いたり、スレッドの優先度を上げたりすることができます。
ただし、ユーザーごとの機能を付与する方法があるかどうかを知りたいのですが。つまり、rootおよびsuid以外のプロセスがこれらの機能を取得できるようにします。
java - 機能とLinuxとJava
私はJavaアプリケーション用のLinux機能を試しています。インタープリター(JVM)に機能を追加したくないので、単純なラッパーを作成しようとしました(デバッグ情報がstdoutに出力されます)。
このようにして、この実行可能ファイルに機能が設定されていることがわかります。
そしてgetcap
ショー
継承できるように設定しているので問題ありません。ただし、Javaはまだ特権ポートにバインドすることを望んでいません。
このエラーが発生します:
誰かが私がこれを解決するのを手伝ってもらえますか?
posix - CAP_SYS_RESOURCE でプロセスを実行する方法
Linux POSIX mqueue 実装を使用していますが、問題があります。現在のカーネルでは、メッセージの最大サイズは 1MB ですが、制限を設ける必要はありません。
man mq_overview
プロセスが特権 (CAP_SYS_RESOURCE
機能を持つプロセス) である場合、制限はありません。root によって実行されたプロセスには既に特権が与えられていると思っていましたが、「メッセージが長すぎます」というエラーが引き続き表示されます (私のメッセージは 2MB あります)。
CAP_SYS_RESOURCE
プロセスに機能を追加するにはどうすればよいですか?
linux - setuid(0) と CAP_SETUID
機能を使用して非ルートとして uid を 0 に変更しようとしていCAP_SETUID
ます。次のプログラムがあります。
次のように setuid 機能を割り当てます。
そして、次の出力が得られます
2 番目の printf() もそのCAP_SETUID
機能を示していると思います。どういうわけか、私のプロセスは setuid ファイル機能を取得しません。ここで何が間違っていますか?
linux - gdbは実行可能機能を無視しているようです
を利用するプログラムをデバッグしていますlibnetfilter_queue
。ドキュメントには、ユーザースペースのキュー処理アプリケーションがCAP_NET_ADMIN
機能するための機能が必要であると記載されています。setcap
私は次のようにユーティリティを使用してこれを行いました:
getcap
a)プログラムが機能し、b)次の出力が返されるため、機能が正しく適用されていることを確認しました。
gdb
ただし、コマンドラインから(など)を使用してこのプログラムをデバッグしようとする$ gdb ./a.out
と、正しいアクセス許可が設定されていないために失敗します。のデバッグ機能は、gdb
それ以外の場合は完全に機能し、通常どおりにデバッグします。
私はこれらの機能をgdb
バイナリ自体に適用しようとしても無駄になりました。私はこれを見た目どおりに実行しました(マンページに記載されているように、「i
」フラグを使用すると、デバッグ対象者がデバッガーから機能を継承できる可能性があります。
私が見逃している些細なことはありますか、それともこれは本当にできないのでしょうか?
android - Android 用の libcap (Linux 機能ライブラリ) を取得するには?
Linux 機能 (libcap.so) ライブラリは Android で使用できますか? そうでない場合、どうすればコンパイルできますか?
sys/capabilities.h
NDK に含まれているの機能関連 API を使用したいと考えています。しかし、のような関数を呼び出そうとするとcap_get_proc()
、「未定義の参照」エラーが発生します。
linux - /usr/bin/passwd および CAP_CHOWN 機能
私は Linux の機能を試していましたが、passwd
プログラムが Set-UID ルートにならずに機能するには、(他の機能に加えて) CAP_CHOWN機能が必要であることに気付きました。論理的には、なぜCAP_CHOWNが必要なのでしょうか?
ちなみに、この機能を削除すると、passwd で「トークン操作エラー」が発生します。
編集: SELinux なしで Ubuntu 11.04 を使用しています。passwd
Set-UID ルートにならずに作業を開始しようとしています。