2011-10-03 8 views
6

私のプログラムは、Linuxシステムコールsetpriority()を使用して、作成するスレッドの優先順位を変更しています。負の優先順位(-10)を設定する必要がありますが、ドキュメントで述べたように、これは通常のユーザーとして実行すると失敗します。CAP_SYS_NICE機能をLinuxユーザに設定する方法は?

ユーザは、自分が望むように優先度を設定できるようにするには、CAP_SYS_NICEの機能が必要ですが、そのような機能をユーザに与える方法はわかりません。

私の質問:どのようにCAP_SYS_NICEをLinuxユーザーに設定するのですか?

+0

ニース-10は優先度は高くなりますが、リモートでもリアルタイム性はありません。 –

+0

これは単なるポインタなので、私はコメントを追加します:この答えをチェックしてください:http://stackoverflow.com/a/17685265/6899 – tzot

答えて

2

Jan Hudecは、プロセスが自分自身に能力を与えるだけでなく、setuidラッパーが能力を得るための明白な方法であることは間違いありません。また、ルートを削除するときはprctl(PR_SET_KEEPCAPS, ...)にする必要があることに注意してください。詳細については、prctlのマニュアルページを参照してください。そうでない場合は、ルート以外の実ユーザIDに移行するときにその機能を削除します。

許容される異なるniceレベルでユーザーセッションを起動する場合は、pam_limitsモジュールでhard nice制限を変更できるため、pam_limitslimits.confのマニュアルページが表示されることがあります。それはのような行可能性があります。sudoについて

yourspecialusername hard nice -10 
+2

この答えは汚れより古いですが、読み込むpam_cap.soモジュールがあります'/ etc/security/capability.conf'を編集し、それに応じて能力を設定してください。 – Bratchley

0

AFAIK能力を得ることはできません。ルートプロセスにはすべての機能があり、それらを放棄することはできますが、一旦放棄されると元に戻すことはできません。したがって、他のすべての機能を放棄してプロセスを実行するsuid-rootラッパーが必要です。

0

、私はこのようなユーザーを追加しました:

niceuser ALL=NOPASSWD:/usr/bin/nice 

をし、それがうまく働いた:

[email protected] $ nice 
0 
[email protected] $ sudo nice -n -10 nice 
-10 
4

素敵な便利なユーティリティがありますバイナリ上の機能を設定する場合:setcap。これはアプリケーションバイナリ上でrootとして実行する必要がありますが、一度設定すれば通常のユーザーとして実行できます。例:あなたはgetcapを使用してアプリケーション上にあるどのような機能を確認することができます

$ sudo setcap 'cap_sys_nice=eip' <application> 

$ getcap <application> 
<application> = cap_sys_nice+eip 

私は通常、とにかくルートとして実行され、インストールのライン、であなたのメイクファイルに機能を統合することをお勧めしたいです。機能は、TARファイルまたは任意の派生パッケージ形式で格納することはできません。アプリケーションを後でパッケージ化する場合は、デプロイ時に機能を適用するためのスクリプト(Debianパッケージのpostinst)が必要です。

+0

あなたのコマンドは動作しますが、' cap_sys_nice = eip'、特に '= eip'私はそれを 'man setcap'や' man capabilities'のどちらでも見ることはできません。 – elmicha

+1

@elmicha少なくとも私のシステムでは、man setcapページに次の行が含まれています: _機能はcap_from_text(3)_で説明されている形式で指定されています。 cap_from_textのマンページは、(setcapを設定していても)デフォルトでは使用できない場合があることに注意してください。例えば、CentOS上では、libcap-develパッケージに含まれています。これは、余分な文字を「演算子フラグ」として記述します。ここで、e =有効、i =継承可能、およびp =許可です。 –

関連する問題