diff options
author | Johann Latocha | 2012-07-18 16:50:25 +0200 |
---|---|---|
committer | Johann Latocha | 2012-07-18 16:50:25 +0200 |
commit | 50f3a1a23e55111fc871c1f4bcd846da9334577a (patch) | |
tree | af15cebe1f127931ae5f0ccad09efd9600f4a65d /src | |
parent | [KERNEL] set dev number on module load (diff) | |
download | dnbd3-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.h | 7 | ||||
-rw-r--r-- | src/server/ipc.c | 16 |
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; |