不使用 sudo 執行 ifconfig

不使用 sudo 執行 ifconfig

我有一個在 imx6 平台上運行的嵌入式 Linux。這是一個飛思卡爾嵌入式linux。問題是這個 Linux 沒有可用的 sudo,但我需要由用戶啟用和停用 wlan0 裝置。我嘗試將用戶添加到根組但沒有成功。我還嘗試將整個命令添加到 /etc/busybox.conf 檔案中,但這也沒有效果。

如何在沒有 sudo 的情況下以用戶身份運行此命令?

user@touch:~$ /sbin/ifconfig eth0 down
SIOCSIFFLAGS: Permission denied

答案1

如果任何非 root 使用者都被信任這樣做,您只需在 ifconfig exec 上新增 setuid 標誌即可:

chmod 4755 /sbin/ifconfig

它將向任何人授予執行此可執行檔的 root 權限。當然,您需要具有 root 存取權限才能執行 chmod。

答案2

您不需要使用sudo來運行該ifconfig命令,只需確保該命令/sbin位於您的 PATH 中即可。

以非特權用戶運行:

export PATH=$PATH:/sbin
ifconfig

答案3

  1. 對於 Linux 新用戶;此軟體包sudo提供非特權使用者預設的分鐘數,讓其對系統執行只有系統管理員('root' == 'uid=0')才能執行的操作。

  2. 對於面向公眾的伺服器上的 Linux 作業系統,該程式ifconfig存在許多與之相關的安全問題。對於具有 KVM 連線、不需要 SSH 存取且不需要 24/7 網路連線的桌面和家庭伺服器,該程式的安全要求較低。

  3. ifconfig受另一個名為 的程式保護netdevice。該程式提供對 Linux 網路設備的低階存取。看man netdevice。拋出的錯誤SIOCSIFFLAGS:權限被拒絕是因為程式ifconfig被標記為特權並且需要有效使用者 ID 0 ('root' <==> 'uid=0') 或能力CAP_NET_ADMIN。如果不是這種情況,EPERM將被退回。

  4. 為了找出什麼CAP_NET_ADMIN是我們必須閱讀的功能(7) — Linux 手冊頁。這裡的重要資訊是「CAP_NET_ADMIN:執行各種與網路相關的操作,例如介面配置」。為了找出什麼EPERM是我們必須閱讀的man setuidEPERM當使用者沒有特權(Linux:沒有該CAP_SETUID能力)且 uid 與呼叫程序的真實 UID 或已儲存的 set-user-ID 不符時,會引發該錯誤。

  5. 不可能簡單地將您的“用戶名”添加到“root”群組。 Ubuntu 發行版的範例:sudo adduser username root不會為您提供必要的 UID 0 來通過所有netdevice要求的安全檢查。如果visudo系統上可用,則可以看到該條目Defaults secure_path=""不包含程式的路徑netdevice.h。因此,修改程式visudo的 sudo 權限(使用)不太ifconfig可能導致繞過 提供的安全控制netdevice

假設您沒有執行公用伺服器,@tonioc 提供的答案是在不使用特權的情況下開啟和關閉 Linux 發行版介面(例如 Ubuntu 在重新啟動後自動啟用所有乙太網路介面)的最簡單方法sudo。該sudo chmod 4755 /sbin/ifconfig命令是修改系統的簡單方法,以便諸如啟動腳本之類的啟動腳本ifconfig eth0 down可以關閉介面(無需輸入密碼)。對於同時連接了 Intranet 和 Internet 網路(多 NIC)的桌上型電腦/伺服器,在不需要 Internet 網路時保持關閉狀態對於安全至關重要。

相關內容