summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohann Latocha2012-07-18 16:50:25 +0200
committerJohann Latocha2012-07-18 16:50:25 +0200
commit50f3a1a23e55111fc871c1f4bcd846da9334577a (patch)
treeaf15cebe1f127931ae5f0ccad09efd9600f4a65d /src
parent[KERNEL] set dev number on module load (diff)
downloaddnbd3-50f3a1a23e55111fc871c1f4bcd846da9334577a.tar.gz
dnbd3-50f3a1a23e55111fc871c1f4bcd846da9334577a.tar.xz
dnbd3-50f3a1a23e55111fc871c1f4bcd846da9334577a.zip
[SERVER] Set groupid and permissions on ipc socket
Diffstat (limited to 'src')
-rw-r--r--src/config.h7
-rw-r--r--src/server/ipc.c16
2 files changed, 19 insertions, 4 deletions
diff --git a/src/config.h b/src/config.h
index b74ceab..bf5e668 100644
--- a/src/config.h
+++ b/src/config.h
@@ -40,8 +40,9 @@
#define DEFAULT_READ_AHEAD_KB 256
// misc
-#define DEFAULT_SERVER_CONFIG_FILE "/etc/dnbd3-server.conf"
-#define DEFAULT_CLIENT_CONFIG_FILE "/etc/dnbd3-client.conf"
-#define UNIX_SOCKET "/tmp/dnbd3-server.sock"
+#define DEFAULT_SERVER_CONFIG_FILE "/etc/dnbd3/server.conf"
+#define DEFAULT_CLIENT_CONFIG_FILE "/etc/dnbd3/client.conf"
+#define UNIX_SOCKET "/run/dnbd3-server.sock"
+#define UNIX_SOCKET_GROUP "dnbd"
#endif /* CONFIG_H_ */
diff --git a/src/server/ipc.c b/src/server/ipc.c
index 522c4ca..674d20d 100644
--- a/src/server/ipc.c
+++ b/src/server/ipc.c
@@ -22,7 +22,8 @@
#include <sys/socket.h>
#include <sys/un.h>
#include <stdio.h>
-
+#include <sys/stat.h>
+#include <grp.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
@@ -68,6 +69,19 @@ void* dnbd3_ipc_receive()
exit(EXIT_FAILURE);
}
+ // Set groupID and permissions on ipc socket
+ struct group *grp;
+ grp = getgrnam(UNIX_SOCKET_GROUP);
+ if (grp == NULL)
+ {
+ printf("WARN: Group '%s' not found.\n", UNIX_SOCKET_GROUP);
+ }
+ else
+ {
+ chmod(UNIX_SOCKET, 0775);
+ chown(UNIX_SOCKET, -1, grp->gr_gid);
+ }
+
while (1)
{
int cmd, num, i = 0;