【解決方法】Linux で CAP_NET_ADMIN を設定/追加するにはどうすればよいですか?

プログラミングQA


このドキュメンタリーは、なぜ私よりも賢いユーザーの 1 人がこれを行ったのかを説明していません。

nov25-1@nov251-desktop:~$ getcap !$
 getcap `which hcitool`
 /usr/bin/hcitool = cap_net_admin,cap_net_raw+eip
getcap `which hcitool`
/usr/bin/hcitool cap_net_admin,cap_net_raw=eip
/usr/bin/hcitool cap_net_admin,cap_net_raw=eip
Unknown command - "="

追加したいすべて

cap_net_admin

So I did this command 

<pre>nov25-1@nov251-desktop:~$ sudo setcap 'cap_net_admin' `which hcitool
> help
> exit
> 

I do not understand the apparent option 

`which hcitool


and  the result indicate I am missing something in the command - perhaps more options? 

そして、私が知っている誰かが形を崩す前に

C++ コードを動作させるにはこれが必要です
SO ITはコード関連/

さまざまなネットワーク関連の操作を実行します。
*

インターフェイス構成;

*

IP ファイアウォール、マスカレード、アカウンティングの管理

*

ルーティング テーブルを変更します。

*

透過的なプロキシのために任意のアドレスにバインドします。

*

サービスの種類 (TOS) を設定する

*

ドライバーの統計をクリアします。

*

無差別モードを設定します。

*

マルチキャストを有効にする;

私が試したこと:

私は(RTFM)(上記を参照)これを研究しましたが、役に立ちませんでした

capabilities(7): 機能の概要 – Linux man ページ[^]

解決策 1

スクリプトをもう一度確認してください。 あるはずです 2 逆引用符 (`) の周辺 which 指図。 逆引用符はサブシェル コマンドを表し、その出力は呼び出し元のコマンドに挿入されます。 あなたの場合 which hcitool おそらく戻ってくる /usr/bin/hcitool、 それで setcap 'cap_net_admin' `which hcitool` と同等です setcap 'cap_net_admin' /usr/bin/hcitool bash を使用している場合、サブシェルはより頻繁に $( ) 逆引用符ではなく使用法。 これにはいくつかの理由があります。 まず、使用するフォントによっては、バッククォートと一重引用符を区別しにくくなり、スクリプト エラーが発生する可能性があります。 また、それらは非常に小さく、例を読むときに見落としがちです。 しかし、ほとんどの場合、 $( ) 使用法はネストできますが、逆引用符はネストできません。 これは、 $( ) できるよ

シェル
$ cmd1  c1arg1 $(cmd2 $(cmd3 c3arg1 c3arg2) c2arg1 c2arg2) c1arg2

逆引用符でこれを試すと、次のようになります。

シェル
$ cmd1 c1arg1 `cmd2 `cmd3 c3arg1 c3arg2 `c2arg1 c2arg2` c1arg2

この場合、 cmd2 引数なしでサブシェルで呼び出される場合、コマンドでサブシェルを作成しようとします c2arg1 (これはおそらく失敗します)。

コメント

タイトルとURLをコピーしました