From 50f3a1a23e55111fc871c1f4bcd846da9334577a Mon Sep 17 00:00:00 2001 From: Johann Latocha Date: Wed, 18 Jul 2012 16:50:25 +0200 Subject: [SERVER] Set groupid and permissions on ipc socket --- CMakeLists.txt | 2 +- client.conf.example | 29 +++++++++++++++++++++++++++++ dnbd3-client.conf.example | 29 ----------------------------- dnbd3-server.conf.example | 25 ------------------------- server.conf.example | 25 +++++++++++++++++++++++++ src/config.h | 7 ++++--- src/server/ipc.c | 16 +++++++++++++++- 7 files changed, 74 insertions(+), 59 deletions(-) create mode 100644 client.conf.example delete mode 100644 dnbd3-client.conf.example delete mode 100644 dnbd3-server.conf.example create mode 100644 server.conf.example diff --git a/CMakeLists.txt b/CMakeLists.txt index 08d52c9..7be240b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -83,7 +83,7 @@ ADD_CUSTOM_TARGET(${MODULE_NAME} ALL DEPENDS ${CMAKE_BINARY_DIR}/${MODULE_FILE}) INSTALL(TARGETS dnbd3-server dnbd3-client RUNTIME DESTINATION sbin) -INSTALL(FILES dnbd3-server.conf.example dnbd3-client.conf.example DESTINATION /etc/) +INSTALL(FILES server.conf.example client.conf.example DESTINATION /etc/dnbd3/) INSTALL(FILES ${CMAKE_BINARY_DIR}/${MODULE_NAME}.ko DESTINATION /lib/modules/${CMAKE_SYSTEM_VERSION}/kernel/drivers/block diff --git a/client.conf.example b/client.conf.example new file mode 100644 index 0000000..264632f --- /dev/null +++ b/client.conf.example @@ -0,0 +1,29 @@ +# This is a sample configuration file for dnbd3-client + +[Ubuntu 10.04] +server=132.230.4.29 +vid=1 +rid=3 +device=/dev/dnbd0 +ahead=256 + +[Ubuntu 10.10] +server=132.230.4.29 +vid=2 +rid=1 +device=/dev/dnbd1 +ahead=256 + +[Ubuntu 11.04] +server=132.230.4.29 +vid=3 +rid=1 +device=/dev/dnbd2 +ahead=256 + +[Ubuntu 11.10] +server=132.230.4.29 +vid=4 +rid=1 +device=/dev/dnbd3 +ahead=256 diff --git a/dnbd3-client.conf.example b/dnbd3-client.conf.example deleted file mode 100644 index 264632f..0000000 --- a/dnbd3-client.conf.example +++ /dev/null @@ -1,29 +0,0 @@ -# This is a sample configuration file for dnbd3-client - -[Ubuntu 10.04] -server=132.230.4.29 -vid=1 -rid=3 -device=/dev/dnbd0 -ahead=256 - -[Ubuntu 10.10] -server=132.230.4.29 -vid=2 -rid=1 -device=/dev/dnbd1 -ahead=256 - -[Ubuntu 11.04] -server=132.230.4.29 -vid=3 -rid=1 -device=/dev/dnbd2 -ahead=256 - -[Ubuntu 11.10] -server=132.230.4.29 -vid=4 -rid=1 -device=/dev/dnbd3 -ahead=256 diff --git a/dnbd3-server.conf.example b/dnbd3-server.conf.example deleted file mode 100644 index d04aea0..0000000 --- a/dnbd3-server.conf.example +++ /dev/null @@ -1,25 +0,0 @@ -# This is a sample configuration file for dnbd3-server - -[Ubuntu 10.04] -file=/home/jjl/Data/ISOs/Ubuntu/ubuntu-10.04.3-desktop-i386.iso -servers=132.230.4.29;132.230.4.220;132.230.8.96 -vid=1 -rid=3 - -[Ubuntu 10.10] -file=/home/jjl/Data/ISOs/Ubuntu/ubuntu-10.10-desktop-i386.iso -servers=132.230.4.29;132.230.4.220;132.230.8.96 -vid=2 -rid=1 - -[Ubuntu 11.04] -file=/home/jjl/Data/ISOs/Ubuntu/ubuntu-11.04-desktop-i386.iso -servers=132.230.4.29;132.230.4.220;132.230.8.96 -vid=3 -rid=1 - -[Ubuntu 11.10] -file=/home/jjl/Data/ISOs/Ubuntu/ubuntu-11.10-desktop-i386.iso -servers=132.230.4.29;132.230.4.220;132.230.8.96 -vid=4 -rid=1 diff --git a/server.conf.example b/server.conf.example new file mode 100644 index 0000000..d04aea0 --- /dev/null +++ b/server.conf.example @@ -0,0 +1,25 @@ +# This is a sample configuration file for dnbd3-server + +[Ubuntu 10.04] +file=/home/jjl/Data/ISOs/Ubuntu/ubuntu-10.04.3-desktop-i386.iso +servers=132.230.4.29;132.230.4.220;132.230.8.96 +vid=1 +rid=3 + +[Ubuntu 10.10] +file=/home/jjl/Data/ISOs/Ubuntu/ubuntu-10.10-desktop-i386.iso +servers=132.230.4.29;132.230.4.220;132.230.8.96 +vid=2 +rid=1 + +[Ubuntu 11.04] +file=/home/jjl/Data/ISOs/Ubuntu/ubuntu-11.04-desktop-i386.iso +servers=132.230.4.29;132.230.4.220;132.230.8.96 +vid=3 +rid=1 + +[Ubuntu 11.10] +file=/home/jjl/Data/ISOs/Ubuntu/ubuntu-11.10-desktop-i386.iso +servers=132.230.4.29;132.230.4.220;132.230.8.96 +vid=4 +rid=1 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 #include #include - +#include +#include #include #include #include @@ -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; -- cgit v1.2.3-55-g7522