Permissions

Redhat 5 上用於非 root 使用者的 C++ 網路套接字

  • August 9, 2011

我用 C++ 編寫了一個程序,它使用套接字與 windows7 機器通信。

我以 root 使用者身份執行程式碼,一切正常。但是,出於安全原因,我不想最終以 root 身份執行該程序。

首先我創建了一個新使用者來執行程序,但是它不會讓使用者啟動一個新的套接字,所以我將使用者添加到根組並再次嘗試,但是 Redhat 不允許我啟動一個新的套接字但是root使用者。

我已經在禁用防火牆的情況下嘗試了這個,只是為了排除它,但仍然沒有運氣。

那麼,你們中是否有人知道我應該更改/添加哪些權限/組?


我在網上看了一圈,發現:

/usr/sbin/setsebool -P httpd_can_network_connect=1

建議作為一種可能的治療方法,但它似乎對我沒有幫助。

但是 Redhat 不允許我以 root 使用者身份啟動新套接字。

那麼你必須設置一個非常嚴格的 SELinux 策略。

您確定它不會讓您使用小於 1024 的埠號創建偵聽套接字嗎?

編輯

如果埠號不低於 1024,那麼這是 SELinux 策略。您應該會看到 /var/log/messages 中記錄的條目說它被拒絕了。

允許…

/usr/sbin/semanage port -a -t <SEType> -p tcp 51717

日誌中報告的類型在哪里或使用http_port_t將其添加到http類型中。有關範例,請參見此頁面

引用自:https://serverfault.com/questions/299236