タグ付けされた質問 「capabilities」

3
Linuxで子プロセスを「オフライン」(外部ネットワークなし)で実行するコマンド
実際のネットワークを停止せずにオフラインモードでテストしたいプログラムがあります。このプログラムは、Unixドメインソケットとループバックを含むローカルソケットに接続する必要があります。また、ループバックでリッスンし、他のアプリに表示される必要があります。 ただし、リモートマシンへの接続は失敗します。 strace/ unshare/のように機能sudoし、インターネット(およびLAN)を隠した状態でコマンドを実行し、他のすべてがまだ機能しているユーティリティが必要です。 $ offline my-program-to-test この質問には答えがあります:プロセスのネットワークアクセスをブロックしますか? 他のユーザーとして実行してからiptablesを操作するなど、いくつかの提案がありunshare -nます。しかし、どちらの場合も、UNIXドメインソケットとループバックをメインシステムと共有するための呪文はわかりません。その質問に対する答えは、ネットワーク全体の共有を解除する方法を教えてくれるだけです。 私がテストしているプログラムは、まだXサーバーとdbusに接続し、システム上の他のアプリからの接続をループバックでリッスンできる必要があります。 ネットワークケーブルを抜くのと同じくらい迷惑になるので、理想的には、chrootやユーザー、VMなどを作成しないようにします。すなわち質問のポイントはどのように私はこれをaのように簡単にすることができるかsudoです。 非ローカルアドレスを指定するネットワークコールが失敗することを除いて、通常どおりに100%実行するプロセスが必要です。理想的には、同じuid、同じhomedir、同じpwd、...を除くすべてをオフラインに保つ。 私はFedora 18を使用しているので、移植性のないLinuxの答えは問題ありません(予想される、でも)。 それが関係しているのであれば、Cプログラムを書くことでこれを解決できてうれしいので、Cを書くことに関係する答えは問題ありません。ローカルネットワークを維持しながら、Cプログラムが外部ネットワークアクセスを取り消すために必要なsyscallがわからないだけです。 「オフラインモード」をサポートしようとする開発者は、おそらくこのユーティリティに感謝するでしょう!

2
Excutableの「setcap」追加機能の設定を解除します
Linuxへの答え:指定された1024未満のポートをユーザーがリッスンできるようにするsetcapことで、プログラムがポート<1024にバインドできるように、実行可能ファイルに追加のアクセス許可を付与します。 setcap 'cap_net_bind_service=+ep' /path/to/program これらの許可を取り消す正しい方法は何ですか?

1
インタプリタバイナリをsetcap 'せずに、スクリプトで機能を使用できますか?
現在cap_net_bind_service MY_USERNAME、/ etc / security / capability.confで使用しています。 ここcap_net_bind_service+iで、libcap [-ng]を介しCAP_NET_BIND_SERVICEて効果的なセットに追加できるように、お気に入りのスクリプト言語のインタープリターを設定する必要があります。 これは正常に機能しますが、インタープリターバイナリに上限を設定せずに同じことを達成する方法があるのだろうかと思います。これは大きな問題ではありませんが(他のユーザーアカウントには上限がないため、インタープリターバイナリにビットが設定されていても使用できません)、インタープリターが毎回フラグを再設定する必要があるため、多少面倒です更新しました。

3
capshの使用方法:最小限の機能で特権のないpingを実行しようとしています
Debian Gnu / Linuxで機能を試しています。 / bin / pingを現在の作業ディレクトリにコピーしました。予想通り動作しませんが、元々はsetuidルートでした。 次に、を実行してpingに最小限の機能(rootではない)を付与し、pingは正常に機能しsudo /sbin/setcap cap_net_raw=ep ./pingます。 次にsudo /sbin/setcap -r ./ping、その機能を無効にします。現在、期待どおりに動作していません。 を使用してpingを動作させようとしていますcapsh。 capsh には特権がないため、rootとして実行する必要がありますが、rootを削除して、他のすべての特権を削除します。 私も必要だと思いますがsecure-keep-caps、これはに記載されていませんcapshが、機能マニュアルに記載されています。からビット番号を取得しました/usr/include/linux/securebits.h。の出力--printはこれらのビットが正しいことを示しているため、それらは正しいように見えます。 私は何時間もいじっていましたが、これまでのところこれがあります。 sudo /sbin/capsh --keep=1 --secbits=0x10 --caps="cap_net_raw+epi" == --secbits=0x10 --user=${USER} --print -- -c "./ping localhost" ただし、のpingエラーping: icmp open socket: Operation not permittedは、機能がない場合に発生することです。また--print番組ではCurrent: =p cap_net_raw+i、これは十分に私たちの必要性ではありませんe。 sudo /sbin/capsh --caps="cap_net_raw+epi" --print -- -c "./ping …

8
プロセスがファイルを書き込むのを防ぐ方法
Linuxでコマンドを実行して、書き込むファイルを作成または開くことができないようにしたいのですが。それでも通常どおりファイルを読み取ることができ(空のchrootはオプションではありません)、すでに開いているファイル(特にstdout)に書き込むことができます。 特定のディレクトリ(つまり、現在のディレクトリ)へのファイルの書き込みが引き続き可能かどうかは、ボーナスポイントです。 私はプロセスローカルなソリューションを探しています。つまり、システム全体のAppArmorやSELinuxなどの設定や、ルート権限を必要としません。ただし、カーネルモジュールのインストールが必要になる場合があります。 私は機能を検討していましたが、ファイルを作成する機能があれば、これらは素晴らしく簡単でした。ulimitは、このユースケースをカバーしている場合に便利な別のアプローチです。


1
「setcap」は最後の機能を上書きします。複数の機能を設定するにはどうすればよいですか?
node.jsにポート80をリッスンし、コンピューターをシャットダウンする機能を与えたいのですが。最初にこれらの2つのコマンドを順番に試しました。 setcap cap_net_bind_service=+ep /usr/bin/nodejs setcap cap_sys_boot=+ep /usr/bin/nodejs 次に、私のアプリはポート80にバインドできませんでした。私はgetcapで確認しました: # getcap /usr/bin/nodejs /usr/bin/nodejs = cap_sys_boot+ep cap_net_bind_serviceに対してもう一度setcapを実行すると: # getcap /usr/bin/nodejs /usr/bin/nodejs = cap_net_bind_service+ep manページhttp://linux.die.net/man/8/setcapに、複数の機能の設定について何も見当たらないので、必死でいくつか試します。 # setcap cap_net_bind_service=+ep /usr/bin/nodejs cap_sys_boot=+ep /usr/bin/nodejs # getcap /usr/bin/nodejs /usr/bin/nodejs = cap_sys_boot+ep # setcap cap_net_bind_service=+ep cap_sys_boot=+ep /usr/bin/nodejs Failed to set capabilities on file `cap_sys_boot=+ep' (No such file or …

1
Linuxでのスクリプトの機能
実行可能ファイルcapabilities(7)などの機能()を設定したいがCAP_NET_BIND_SERVICE、そのファイルがスクリプトである場合、setcap(8)そのスクリプトを開始するインタープリターに機能()を設定する必要がありますか、それともスクリプトファイルに設定するだけで十分ですか?自体? 注:質問は特にScientific Linux 6.1に関するものですが、一般的には答えられると思います。

2
/etc/security/capability.confでグループを指定することはできますか?
私は再びLinuxの機能で遊んでみたいと思いました。私のペットプロジェクトは、多くのバイナリのsetuidを置き換え、root以外のユーザーに追加の特権ユーティリティへのアクセスを提供することです。これを行うには、関連する機能(+ei、問題は+ep)を介して追加しsetcap、個人ユーザーアカウント(jdavis4)を構成して、ログイン時のセッションにそれらの機能を割り当てますpam_cap.so。capability.confを使用して、個々のユーザーに「ping」および「kill」へのアクセスを許可できます。 しかし、私が抱えている問題は、これが実稼働システムである場合、管理者がおそらく個々のユーザーに対してこれを行う必要がないように、何らかの集約ユニットによって機能を割り当てたいと思うことでした作るたびに。この方法で、ユーザは単に「filesystemAdmin」グループに追加され、のようなものを得ることができるCAP_DAC_OVERRIDEか「ProcessManagement」に追加され、のようなものを取得CAP_SYS_NICEしてCAP_SYS_KILL。 現在これは可能ですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.