summaryrefslogtreecommitdiffstats
path: root/src/server/ipc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/ipc.c')
-rw-r--r--src/server/ipc.c16
1 files changed, 15 insertions, 1 deletions
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;