Can we assume ovsdb-server will be launched by the process that has the right owner and group?
On Wed, Aug 26, 2015 at 2:19 PM, Ben Pfaff <b...@nicira.com> wrote: > I guess the question is from what users and groups should ovsdb-server > accept connections. If it's only supposed to accept connections from > root or a specified group, then it needs to have the correct privileges > to at least create a root-owned socket or a socket with that group. > > On Fri, Aug 21, 2015 at 11:05:57PM -0700, Alex Wang wrote: >> If we want to make ovsdb-server non-root, this change may not be need,~ >> >> On Fri, Aug 21, 2015 at 11:10 PM, Alex Wang <al...@nicira.com> wrote: >> >> > This commit adds a new key-value pair, 'punix_file_group=<user group>', >> > to the 'other_config' column in the 'Manager' table. This new config >> > allows user to change the punix socket file's group ownership, so that >> > non-root process can also connect to ovsdb-server. >> > >> > Signed-off-by: Alex Wang <al...@nicira.com> >> > --- >> > ovsdb/jsonrpc-server.c | 6 ++++++ >> > ovsdb/jsonrpc-server.h | 1 + >> > ovsdb/ovsdb-server.c | 2 ++ >> > vswitchd/vswitch.xml | 16 ++++++++++++++++ >> > 4 files changed, 25 insertions(+) >> > >> > diff --git a/ovsdb/jsonrpc-server.c b/ovsdb/jsonrpc-server.c >> > index fffcb73..387a7a0 100644 >> > --- a/ovsdb/jsonrpc-server.c >> > +++ b/ovsdb/jsonrpc-server.c >> > @@ -32,6 +32,7 @@ >> > #include "row.h" >> > #include "server.h" >> > #include "simap.h" >> > +#include "socket-util.h" >> > #include "stream.h" >> > #include "table.h" >> > #include "timeval.h" >> > @@ -227,6 +228,11 @@ ovsdb_jsonrpc_server_set_remotes(struct >> > ovsdb_jsonrpc_server *svr, >> > } >> > >> > ovsdb_jsonrpc_session_set_all_options(remote, options); >> > + >> > + if (!strncmp(node->name, "punix:", 6)) { >> > + unix_socket_set_file_group(node->name + 6, >> > + options->punix_file_group); >> > + } >> > } >> > } >> > >> > diff --git a/ovsdb/jsonrpc-server.h b/ovsdb/jsonrpc-server.h >> > index fce8b7b..36a15f3 100644 >> > --- a/ovsdb/jsonrpc-server.h >> > +++ b/ovsdb/jsonrpc-server.h >> > @@ -35,6 +35,7 @@ struct ovsdb_jsonrpc_options { >> > int max_backoff; /* Maximum reconnection backoff, in msec. >> > */ >> > int probe_interval; /* Max idle time before probing, in msec. >> > */ >> > int dscp; /* Dscp value for manager connections */ >> > + const char *punix_file_group; /* For setting the punix file's group. >> > */ >> > }; >> > struct ovsdb_jsonrpc_options * >> > ovsdb_jsonrpc_default_options(const char *target); >> > diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c >> > index cd13b0d..8dca006 100644 >> > --- a/ovsdb/ovsdb-server.c >> > +++ b/ovsdb/ovsdb-server.c >> > @@ -770,6 +770,8 @@ add_manager_options(struct shash *remotes, const >> > struct ovsdb_row *row) >> > options->dscp = dscp; >> > } >> > } >> > + options->punix_file_group = read_map_string_column(row, >> > "other_config", >> > + >> > "punix_file_group"); >> > } >> > >> > static void >> > diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml >> > index 6f6e0ed..ae7abfb 100644 >> > --- a/vswitchd/vswitch.xml >> > +++ b/vswitchd/vswitch.xml >> > @@ -4286,6 +4286,22 @@ >> > default value of 48 is chosen. Valid DSCP values must be in the >> > range >> > 0 to 63. >> > </column> >> > + >> > + <column name="other_config" key="punix_file_group" >> > + type='{"type": "string"}'> >> > + <p> >> > + When connection method in <ref column="target"/> is >> > + <code>punix</code>, this config specifies the user group to >> > which >> > + the group ownership for 'punix' (unix domain socket) file >> > created >> > + by ovsdb will be applied. Also, the file's access permission >> > will be >> > + changed to '0770'. >> > + </p> >> > + <p> >> > + By default, the 'punix' file is associated with the 'root' >> > + group and have access permission '0700'. If this config is >> > + not specified or specified as 'root', the default is restored. >> > + </p> >> > + </column> >> > </group> >> > >> > <group title="Common Columns"> >> > -- >> > 1.7.9.5 >> > >> > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev