問題タブ [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 - raw キャプチャ機能 (CAP_NET_RAW、CAP_NET_ADMIN) が /usr/bin および libpcap を使用したパケット キャプチャ プログラムの仲間以外では機能しない
TL;DR:の機能が(または) でのみ機能しcap_net_raw
、他の場所では機能しないのはなぜですか? これはどこかで設定できますか?cap_net_admin
/usr/bin
/usr/sbin
Ubuntu 14.04 で libpcap を使用して C プログラムに機能を割り当てる際に問題があります。を使用して機能を割り当ててsetcap(8)
チェックした後getcap(8)
でも、権限エラーが発生します。\usr\bin
機能は、および友人の実行可能ファイルに対してのみ機能するようです。
私のプログラムtest.c
は次のようになります。
でコンパイルされます
実行可能ファイルを生成a.out
しています。機能を設定しました:
そして、それが正しく見えることを確認してください:
それは私に与えます
実行a.out
すると、次のようになります。
で実行するとsudo
、期待どおりに動作します (プログラムは何も出力せずに終了します)。
ここに興味深い部分があります。移動a.out
すると/usr/bin
(そして機能を再適用すると)、機能します。その逆:/usr/bin/dumpcap
から(グループwireshark
内のユーザーに対しては正常に機能する) 機能を有効にして、それを私のホーム ディレクトリに移動し、同じ機能を再適用すると、機能しません。それを元に戻すと、機能します。wireshark
/usr/bin
SO: これらの機能が/usr/bin
(および/usr/sbin
) でのみ機能し、他の場所では機能しないのはなぜですか? これはどこかで設定できますか?
linux-capabilities - プロセス機能をスキャンする方法
実行中のプロセスの Linux 機能を確認したいと思います。
linux - 新しいバージョンの docker には --cap-add がありますが、どの CAP を追加できますか?
新しいバージョンの docker (1.2 以降だと思います) には--cap-add
機能があります。
これにより、すべてを で開くことなく、機能をきめ細かく制御できます--privileged=true
。
グーグルで検索しましたが、機能のリストとその意味が見つかりません。誰でも助けることができますか?
python-2.7 - 通常のユーザーに対して CAP_CHOWN および CAP_DAC_OVERRIDE が機能しない
私の要件
私のpythonサーバーはRHELで通常のユーザーとして実行されますが、アクセスできない場所にファイル/ディレクトリを作成する必要があります。また、ランダムな UID/GID でこれらのファイルを chown する必要があります
私のアプローチ
機能のみの環境でこれを試してみてください。setuid はありません。cap_chown および cap_dac_override 機能を利用しようとしています。しかし、systemctlのような環境で動作させる方法が完全に失われています
現在、サービスファイルには次のものがあります。
そして、バイナリ自体に続きます:
しかし、これは、スクリプトでは決して機能しないと言っています。 非ルートプロセスが Linux の「特権」ポートにバインドする方法はありますか?
現在の設定では、実行中のプロセスに対して私が持っている機能は次のとおりです。
しかし、そのスクリプト内から /etc/ にファイルを作成しようとすると:
「許可が拒否されました」で失敗します
それがうまくいかないのは私にとって同じケースですか?ここで python-prctl モジュールを使用して動作させることはできますか?
linux - Linux Cap_Kill ヘルプが必要
学校の課題では、cap_kill 機能の使用方法を示す必要があります。私の理解では、この機能により、特定のプログラムが任意のシグナルを任意のプロセスに送信して成功できるようになるはずです。
次の行を使用しました。
したがって、kill コマンドは、たとえば SIGKILL を任意のプロセスに送信できる必要があります。ただし、この機能を追加した後も、自分のプロセスを強制終了することしかできないため、機能を追加した効果はわかりません。kill -9 1
私はこの能力でさえできるはずだと思いますが、私は受け取っていますbash: kill: (1) - Operation not permitted
この能力をどのように実証すればよいでしょうか? ありがとうございました。
docker - SYS_ADMIN Linux 機能を減らす
「特権」フラグを true にしたくない Docker コンテナーを作成しています。これは、より安全な状態に保ち、より適切に制御できるようにするためのものです。コンテナは主に次のタスクに従事しています (これは、リソース アクセス スコープを定義し、それに応じてアクセス制御を適用するのに役立ちます) 1. gluster ファイル sys をコンテナにマウントします 2. SSH デーモンを実行して、着信 SSH 接続を受け入れます 3. 通常利用可能な bash コマンドをいくつか実行します
これを実現するために、docker コンテナーの実行中に「--cap-add=SYS_ADMIN」オプションを使用しました。ただし、SYS_ADMIN は、必要なものよりも多くの権限 (以下にリスト) を追加します。SYS_ADMIN 機能のサブセットのみを実現するにはどうすればよいですか?
SYS_ADMIN:
quotactl(2)、mount(2)、umount(2)、swapon(2)、swapoff(2)、sethostname(2)、および setdomainname(2) を含む一連のシステム管理操作を実行します。
特権 syslog を実行する (2)
操作 (Linux 2.6.37 以降、
そのような操作を許可するには CAP_SYSLOG を使用する必要があります)。VM86_REQUEST_IRQ vm86(2) コマンドを実行します。任意の System V IPC オブジェクトに対して IPC_SET および IPC_RMID 操作を実行する
信頼できる拡張属性とセキュリティ拡張属性で操作を実行する (
attr(5) を参照)- lookup_dcookie(2) を使用します。
ioprio_set(2) を使用して割り当てる
IOPRIO_CLASS_RT および (Linux 2.6.25 より前の) IOPRIO_CLASS_IDLE I/O
スケジューリング クラス。ソケット資格情報を渡すときに UID を偽造します。
ファイルを開くシステムコール (例: accept(2)、execve(2)、open(2)、pipe( 2))。
- clone(2) と unshare(2) で新しい名前空間を作成する CLONE_* フラグを使用します。
- perf_event_open(2) を呼び出します。
- 特権パフォーマンス イベント情報にアクセスします。
- setns(2) を呼び出します。
- fanotify_init(2) を呼び出します。
- KEYCTL_CHOWN および KEYCTL_SETPERM keyctl(2) 操作を実行します。
- madvise(2) MADV_HWPOISON 操作を実行します。
- TIOCSTI ioctl(2) を使用して、呼び出し元の制御端末以外の端末の入力キューに文字を挿入します。廃止された nfsservctl(2) システム コールを使用します。
- 廃止された bdflush(2) システム コールを使用します。
- さまざまな特権ブロックデバイス ioctl(2) 操作を実行します。
- さまざまな特権ファイルシステム ioctl(2) 操作を実行します。
- 多くのデバイス ドライバーで管理操作を実行します。
linux - CAP_NET_RAW が SO_BINDTODEVICE で機能しないのはなぜですか?
UDPソケットを作成し、それを特定のインターフェースにバインドするための次の簡単なテストプログラムがあります。これにより、そのインターフェースでUDPブロードキャストを具体的に受信SO_BINDTODEVICE
できるbind()
ようになります。INADDR_ANY
このプログラムを root 以外のユーザーとして実行すると、次の出力が得られます。
私はそうではなく、特権操作であるため、これはかなり論理的root
ですSO_BINDTODEVICE
。しかし、Linux カーネルからのコードのこのスニペットCAP_NET_RAW
から理解できるように、それは機能に含まれています。
それでも私がするとき:
同じエラー出力が表示されます。
もちろん、次のように機能しroot
ます。
では、なぜ期待どおりに機能しないのでしょうか。