
我有一個由我的用戶 ID 創建的可執行文件,我需要以 root 身份運行它。因此,我需要將可執行檔的所有權更改為 root:root 並使用 setuid。當我嘗試時
sudo chown root:root [EXE_NAME]
我收到錯誤:
chown: changing ownership of `[EXE_NAME]`: Operation not permitted
我的限制是:
- 我的 sudoers 檔案中的使用者 ID 有 sudo ALL ALL,但無法以 root 身分登入
- 需要以 root 身分執行的可執行檔正在嘗試使用 pcap_open_live 函數以混雜模式綁定到網路介面(因此需要以 root 身分執行)。
有沒有更好的方法來解決我的最終問題,即需要運行綁定到安全且不需要 sudo 的網路介面的可執行檔或創建 root 擁有的 shell ( sudo tcsh
)
答案1
如果sudo
實際上給你 UID 0(用 進行檢查sudo id
),我懷疑該檔案駐留在不支援權限的檔案系統上(例如 FAT32)。在這樣的檔案系統上,您無法變更檔案的所有權(或權限)。
答案2
如果您的檔案系統支援所有權,我還可以想到三個原因:
該分割區以唯讀方式安裝。
嘗試重新命名該檔案或在同一目錄中建立另一個檔案。如果可以的話,那就不是問題。
文件被鎖定。
檢查程式是否正在執行。嘗試重新命名該檔案。
該文件設定為僅附加或者不可變的。
若要變更此設置,請執行以下命令:
sudo chattr -ai filename
答案3
如果你只是需要改變所有權(而不是所有權和群組)那麼您可以使用chown root filename
.如果您不是 root,則以 sudo 為前綴。
如果您還想更改群組,總是可以的chgrp
。
(當然,不如單一命令中的所有內容那麼好)。
答案4
普通用戶也可以綁定到網路接口,只是不能綁定到 1024 以下的端口ssh -fN -L 0.0.0.0:<PRIV_PORT>:localhost:<UNPRIV_PORT>
。
話雖這麼說,您的問題也可能與 SElinux 有關,SElinux 在 RHEL 中預設為啟用。若要停用它,請SELINUX=disabled
在 中設定/etc/selinux/config
。