以普通使用者的身份訪問 /proc LACP 綁定資訊?
作為普通使用者,我看不到
“詳情演員 lacp pdu”
資訊內容:
/proc/net/bonding/bond0
看起來只有root才能看到。
但是普通使用者怎麼會看到這些 LACP 資訊呢?還是真的只有root可以?
是的,只有root使用者,或者更準確地說是具有 CAP_NET_ADMIN 功能的程序才能訪問此資訊,如各種拆分文件的源
/proc
程式碼中所見。/sys
if (capable(CAP_NET_ADMIN)) {
if (BOND_MODE(bond) == BOND_MODE_8023AD && capable(CAP_NET_ADMIN)) {
這可能是由於
bonding.txt
文件中引用的原因:3.7 以更安全的方式為 802.3ad 模式配置 LACP
使用 802.3ad 綁定模式時,Actor(主機)和 Partner(交換機)交換 LACPDU。這些 LACPDU 無法被嗅探,因為它們注定要連結本地 MAC 地址(交換機/網橋不應該轉發這些地址)。但是,大多數值很容易預測,或者只是機器的 MAC 地址(同一 L2 中的所有其他主機都知道該地址)。這意味著 L2 域中的其他機器可以將 LACPDU 數據包從其他主機欺騙到交換機,並可能通過加入(從交換機的角度)另一台機器的聚合來造成混亂,從而接收該主機的一部分傳入流量和/或欺騙該機器本身的流量(甚至可能成功終止部分流)。雖然這不太可能發生,但可以通過簡單地配置幾個綁定參數來避免這種可能性:
無論後面描述的防止這種情況的步驟,如果該系統上的非特權使用者可以將資訊洩露到同一 LAN 中的敵對系統,這將無濟於事。
因此,您可能需要一個具有正確訪問權限的輔助程序。您可以簡單地創建一個 shell 腳本來檢索資訊並且可以使用 sudo 作為 root 呼叫,或者您可以創建一個具有適當訪問權限的二進制執行檔並將 CAP_NET_ADMIN 功能粘貼到它:
chown root:allowedgroup /path/to/helper-binary chmod u=rwx,g=rx,o=r /path/to/helper-binary setcap cap_net_admin+ep /path/to/helper-binary usermod -aG allowedgroup specialuser
此外,您應該考慮切換到使用條目 in
/sys/class/net/INTERFACE/bonding/
因為它們比 from 更容易解析/proc/net/bonding/
(並且它們還提供了另一種方法來(重新)配置綁定,以及/sys/class/net/bonding_masters
)。