問題タブ [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.

0 投票する
3 に答える
12881 参照

c - ubuntuとlibcap(機能)の未定義の参照

私はubuntu10.10で次の最小限のCコードをコンパイルしようとしています:

これにより、次のエラーが発生しgcc -lcap test.cます。

libcap2-devとlibcap2-bin、バージョン2.21をインストールしています

同じgccコマンドを使用した同じコードがarchとgentooで正常にビルドされます

それをubuntu上に構築するにはどうすればよいですか?

0 投票する
2 に答える
475 参照

c++ - アプリケーションのネットワーク機能

LinuxコンピューターでC++でアプリケーションを開発するのに忙しいです。アプリケーションは、イーサネットアダプタとネットワークを使用するサードパーティのライブラリを使用します。ライブラリは、GigEVisionカメラのライブラリです。起動時に、アプリケーションはカメラへの接続を試み、カメラに関する情報を返します。その後、アプリケーションへのビデオのストリーミングを開始します。

しばらくすると、アプリケーションはカメラに接続したり、カメラからカメラ情報を取得したりできなくなりましたが、root(sudo)としてアプリケーションを実行すると問題が解決します。

私は図書館の供給者に連絡しました、そして彼らは私が以下をするべきであると示しました:

rootとして実行するとシステムのセキュリティが損なわれると感じるユーザーは、次の実装で十分だと感じるかもしれません。

  1. 実行可能所有者をrootとして設定します。
  2. 実行可能ファイルに「setuid」権限ビットを設定します
  3. コードでは、アプリケーションの起動時にcapset()を使用して、次の権限を除くすべての権限を解放します。CAP_SYS_NICE、CAP_NET_ADMIN、CAP_NET_BROADCAST、CAP_NET_RAWアプリケーションはすべてのroot権限で起動しますが、起動後すぐに削除されます。

これは機能しますが、実行可能ファイルを変更せずにこれを行う別の方法はありませんか?これらの特権にアクセスできるグループにユーザーを追加することを考えています。助けていただければ幸いです。

上記のソリューションは、コンパイルのたびに所有者を変更して権限を設定する必要があるという意味で最適ではありません。このアプリケーションは、ビデオの録画と画像のキャプチャに使用されます。前述のソリューションでは、これらの記録とキャプチャもrootユーザーが所有しているため、ファイルを配布するときにユーザーを元に戻す必要があります。

OS:Ubuntu Linux 11.10環境:Qtを使用したC ++

0 投票する
5 に答える
17180 参照

linux - Linux機能(setcap)はLD_LIBRARY_PATHを無効にしているようです

LD_LIBRARY_PATHアプリケーションの特定のユーザーライブラリのパスを設定するために使用します。しかし、このアプリケーションに機能を設定すると

その後、LD_LIBRARY_PATH無視されているようです。プログラムを起動すると、Linuxは特定の共有ライブラリが見つからないと文句を言います。

拡張された権限を持つアプリケーションが乗っ取られるのを防ぐために、何らかの保護が機能していると思います。回避策はありますか?

0 投票する
1 に答える
1860 参照

c - CAP_IPC_OWNERのLinux機能をlimits.confに追加するにはどうすればよいですか?

私は次のような/etc/security/limits.confファイルを持っています

ここで、ユーザー「manu」がshmctl必要な機能を使用できるようにしたいのですCAP_IPC_OWNERが、この機能を持つようにこのファイルを変更するにはどうすればよいですか?出来ますか?

0 投票する
2 に答える
6284 参照

c - setuid() 後に機能を失う

cap_setgidcap_setuid、を設定しようとしていcap_setpcapます。

実行は root ユーザーで行っています。プログラムをトレースすると、これが示されます

権限は設定されていますが、機能しません。この問題を解決する方法はありますか?

更新:prctlコードに追加

だから今は

キャップは の後に継承されsetuid、手動で設定されたキャップはまだ存在しますが、問題は解決しませんでした

UPDATE2: 理解できません。setuidキャップを確認するために、1st の後に 2strs を追加しました。

それは戻った

有効なフラグは設定されていませんが、cap_set_flag は 0 を返しました

0 投票する
1 に答える
1381 参照

linux - FUSE ファイル システムを介した Linux 機能

私は、次のようにコーディングgetxattrした FUSE ファイルシステムを持っています。setxattr

私はこれをテストしましたが、機能を除いて非常にうまく機能します。 setcap を使用してプログラムの機能を設定して実行すると、プログラムは特権作業を実行できません。getcap にもかかわらず、以前に設定した機能が返されます。

誰かが問題を追跡する方法を教えてくれますか、または何が起こっているかについての指針を教えてくれますか?

0 投票する
2 に答える
6778 参照

c - CAP_SYS_NICE を保持しながらルート UID を削除

setuid ビットを使用してルートとして起動するデーモンを作成しようとしていますが、すぐにプロセスを実行しているユーザーに戻ります。ただし、デーモンは、新しいスレッドを「リアルタイム」優先度に設定する機能を保持する必要があります。優先度を設定するために使用しているコードは次のとおりです (スレッドが作成されると、スレッドで実行されます)。

ただし、私が問題を抱えているのは、上記の呼び出しを行う機能を保持しながら、uid を設定することsched_setschedulerです。

アプリケーションのメイン スレッドで、起動間際に実行されるコードがいくつかあります。

sched_setscheduler問題は、このコードを実行した後、上記のコメントで示唆されているように、呼び出し時に「操作が許可されていません」というメッセージが表示されることです。私は何を間違っていますか?

0 投票する
2 に答える
1547 参照

c - setuid/capabilitiesを使用したstdbuf

出力を生成する別のプロセスからの出力を読み取っています(低速で無限)。このデータをリアルタイムで読み取りたいので、「stdbuf -oL」(行バッファー、データはテキスト)を使用します。生成プロセスを制御できないため、ソースを変更して強制的にフラッシュすることはできません。

これまでのところ、stdbufは問題なく動作しますが、プロセスはSOCK_RAWを使用し、rootとして実行するか、setuid(0)またはcap_net_raw機能を備えている必要があります。setuidまたは機能を使用して非rootとして実行している場合、stdbufは無視されるようです。問題を説明しましょう:

これは単純なライターです。

そして簡単な読者:

予想通り、実行./writer | ./readerしてもバッファがいっぱいになるまで何も表示されません。プリペンディングstdbuf -oLはラインバッファリングを有効にし、リーダーにラインを取得します。

しかし、追加すると機能cap_net_raw+epしなくなります。

setuidを使用した場合も、同じ動作が見られます。

これが発生する理由と、rootとして実行せずにstdbufを引き続き使用する方法を理解することに興味があります。setuidが舞台裏で何をしているのか完全には理解していないことを認めます。

0 投票する
1 に答える
311 参照

linux - Linux の機能とゼロ/非ゼロの UID との関係は?

機能のマンページはかなり長く、いくつかのことを完全には理解していません。

たとえば、CAP_NET_RAW にアクセスできるかどうかを決定する関数はどのように見えるでしょうか?

入力:

  • a = 実効 uid は 0
  • b = 0 であるいくつかの実際の/保存された/任意の uid があります
  • c = CAP_NET_RAW は +e
  • d = CAP_NET_RAW は +i
  • e = CAP_NET_RAW は +p
  • f = CAP_NET_RAW は「境界セット」から除外されます

出力:

  • x = socketEPERM を取得せずに呼び出すことができるようになりました
  • y = いくつかのトリッキー (ファイルシステムベースchmod +sまたはsetcapアクセス昇格、外部ヘルパーへの接続を含まない) の後、たとえば、capsetp最終的に raw ソケットを開くことができるようになります。

私が現在理解しているように、それは次のようなものです:

  • x = !f && (a || c)
  • y = !f && (b || a || c || e)

実際にはどうですか?

0 投票する
3 に答える
3523 参照

linux - ファイルシステムベースの機能が欠落しているにもかかわらず、機能を保持しながらプロセスを実行するにはどうすればよいですか?

setuidファイル「+p」機能なしで、一般にPR_SET_NO_NEW_PRIVSを設定したときに無効になるものなしでシステムを使用できるようにしたい。

このアプローチ(initセットPR_SET_NO_NEW_PRIVSおよびファイルシステムベースの機能の昇格は不可能)では、機能を「補充」することはできず、機能を「飛び散らせ」ないように注意する必要があるだけです。

execve付与された機能を「飛び散らせる」ことなく(新しいプログラムのファイルがである場合など)、他のプロセスを実行するにはどうすればよいですsetcap =eiか?「私は自分自身を信頼するので、この新しいプロセスを信頼します」。たとえば、機能がユーザーに与えられます(そして、ユーザーは自分が開始する任意のプログラムでそれを実行したいと考えています)...

ファイルシステム全体を永続的に作成できます=eiか?ファイルシステムがスキームに干渉しないようにし、機能を付与または取り消すことができないようにしたい。親->子のものを通してすべてを制御します。