2011-10-22 146 views
19

要將CAP_NET_RAW功能添加到(例如用於/斌/平),我們使用以下命令:使用setcap在linux

#setcap cap_net_raw=ep /bin/ping 

什麼是EP的意義,爲什麼它在這裏需要?

謝謝。

+0

http://kernel.org/doc/man-pages/online/pages/man7/capabilities.7.html和'man cap_from_text'。 – Mat

回答

22

這設置了「有效」(e)和「允許」(p)能力集中的CAP_NET_RAW位。這兩套以及「可繼承」的集合決定着一個流程已經或可以設定的能力。

查看更多在這裏:

capabilities - Linux man page

能力集

每個線程都有包含上述 能力爲零或更加有能力集:

Effective - 中內核使用的能力爲 爲線程執行權限檢查。

Permitted - 能力 該線程可假定(即,用於 有效和可繼承集的限制超集)。如果一個線程從其允許的集合中刪除了一個能力,它永遠不會重新獲得該能力(除非它是一個設置用戶ID根程序)。

inheritable - 跨越execve的保留能力 (2)。通過fork(2)創建的子級繼承其父級能力集的 副本。有關在exec()期間對能力的處理的討論,請參見下面的 。使用capset(2),線程 可以操作自己的能力集,或者如果它具有CAP_SETPCAP能力,則可以操作另一個進程中的線程的能力集。