2013-10-26 34 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 /' –