2013-10-26 53 views
0

我有一個應用程序,它創建了許多unix套接字來與它在運行時產生的所有進程進行交互。 我認爲/ run/appname會是他們生活的好地方,因爲根據我的理解,/ run應該用於應用程序的信息,這些信息只在應用程序運行時纔有效。運行時unix套接字應該在Linux上運行?

但我發現

$ mkdir /run/appname 
mkdir: cannot create directory '/run/appname': Permission denied 

那麼,爲什麼普通用戶不能創建在/運行文件?它是幹什麼用的? 我應該只保留/ tmp嗎?

回答

0

你應該把他們的$XDG_RUNTIME_DIR子目錄如果變量被設置。請參閱XDG Basedir標準:https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html

如果未設置,則需要考慮幾個地方。許多發行版在用戶登錄時都會創建system32(或其他東西)/run/user/<user-id>,因此如果未設置$XDG_RUNTIME_DIR,它可能是開始查看的最佳位置。如果失敗了,我會退回到/tmp。您可以嘗試在/ tmp中創建一個隨機命名的目錄,或者在您的應用程序名稱爲chown的用戶名/ ID之後創建一個目錄給應用程序的用戶,設置任何適當的權限,然後將套接字放在那裏。

0

/run保留給root/system應用程序。

1. Contact your system admin and ask him to create a socket file for you 

2. Put into /tmp or the specific forlder in $HOME/ 
+1

/usr是一個壞主意。用戶寫入權限將很微薄或可能不存在。 – Duck

+0

你也可以考慮'/ var/tmp /'。但'/ usr'確實是一個糟糕的主意。有時候,它是以NFS方式安裝的只讀! –

+0

當然,對於一個特定於用戶的應用程序,可以考慮在它的'$ HOME'下,也許在'$ HOME/.cache /' –