2011-05-12 73 views
7

我有它創建了一個插座一個程序,然後我想改變套接字文件的權限:我該如何更改linux套接字文件的權限?

ret_val = chmod(filename, 0777); 

,但它不會改變,即使RET_VAL爲0。如果我嘗試普通文件上的同樣的東西,它的工作原理。

任何想法?

P.S:我以root身份運行程序,因此它具有所需的所有權限。

+0

哪個UNIX變種? – Alnitak 2011-05-12 12:23:01

+0

我也有這個問題。在我的桌面Ubuntu 10.04上,在套接字文件所在的目錄上將權限更改爲777的技巧。在我的測試機器上完全相同的安裝(合理的DVD)上,我沒有任何有關目錄權限的信息對創建的套接字文件的權限有任何影響。 THey仍然是srwxr-xr-x。我嘗試使用chmod()函數和system()調用來將文件權限設置爲777.沒有運氣。 任何人有一個建議? – 2012-08-01 20:43:52

回答

18

man 7 unix

在Linux實現,插座其在文件系統中是可見的 兌現它們在目錄的權限其所有者, 組和他們的權限是可以改變的。如果進程對創建套接字的目錄沒有寫入和搜索(執行)權限,則創建新套接字 將失敗。連接到 套接字對象需要讀/寫權限。此行爲與許多忽略UNIX域 套接字的權限的BSD派生系統不同 不同。便攜式程序不應該依賴此功能來確保安全性。

所以,如果你想控制一個套接字的權限,爲了可移植,你應該控制包含套接字的目錄的權限。

+0

@anna lear對不起的答案抱歉。我的Firefox決定我不需要訪問這個帖子,所以我可以刪除它。在鍵盤上放了一些東西,並獲得了這個可愛的帖子作爲獎勵。然後我無法訪問它。 – 2012-08-02 15:09:47

+3

忽略套接字對象上的權限是垃圾。去Linux吧! – Kaz 2013-12-20 21:58:34