xref: /illumos-gate/usr/src/cmd/idmap/idmapd/init.c (revision fea136a0)
1c5c4113dSnw /*
2c5c4113dSnw  * CDDL HEADER START
3c5c4113dSnw  *
4c5c4113dSnw  * The contents of this file are subject to the terms of the
5c5c4113dSnw  * Common Development and Distribution License (the "License").
6c5c4113dSnw  * You may not use this file except in compliance with the License.
7c5c4113dSnw  *
8c5c4113dSnw  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9c5c4113dSnw  * or http://www.opensolaris.org/os/licensing.
10c5c4113dSnw  * See the License for the specific language governing permissions
11c5c4113dSnw  * and limitations under the License.
12c5c4113dSnw  *
13c5c4113dSnw  * When distributing Covered Code, include this CDDL HEADER in each
14c5c4113dSnw  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15c5c4113dSnw  * If applicable, add the following below this CDDL HEADER, with the
16c5c4113dSnw  * fields enclosed by brackets "[]" replaced with your own identifying
17c5c4113dSnw  * information: Portions Copyright [yyyy] [name of copyright owner]
18c5c4113dSnw  *
19c5c4113dSnw  * CDDL HEADER END
20c5c4113dSnw  */
21c5c4113dSnw /*
22148c5f43SAlan Wright  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
23*fea136a0SMatt Barden  * Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
24c5c4113dSnw  */
25c5c4113dSnw 
26c5c4113dSnw /*
27c5c4113dSnw  * Initialization routines
28c5c4113dSnw  */
29c5c4113dSnw 
30c5c4113dSnw #include "idmapd.h"
31c5c4113dSnw #include <signal.h>
32c5c4113dSnw #include <thread.h>
33c5c4113dSnw #include <string.h>
34c5c4113dSnw #include <errno.h>
35c5c4113dSnw #include <assert.h>
36c5c4113dSnw #include <unistd.h>
37c5c4113dSnw #include <sys/types.h>
38c5c4113dSnw #include <sys/stat.h>
398edda628Sbaban #include <rpcsvc/daemon_utils.h>
40c5c4113dSnw 
41c5c4113dSnw 
42c5c4113dSnw int
init_mapping_system()434edd44c5Sjp init_mapping_system()
444edd44c5Sjp {
458edda628Sbaban 	int rc = 0;
468edda628Sbaban 
47e8c27ec8Sbaban 	if ((rc = load_config()) < 0)
48e8c27ec8Sbaban 		return (rc);
498edda628Sbaban 
508edda628Sbaban 	(void) setegid(DAEMON_GID);
518edda628Sbaban 	(void) seteuid(DAEMON_UID);
52c5c4113dSnw 	if (init_dbs() < 0) {
538edda628Sbaban 		rc = -1;
54c5c4113dSnw 		fini_mapping_system();
55c5c4113dSnw 	}
568edda628Sbaban 	(void) seteuid(0);
578edda628Sbaban 	(void) setegid(0);
588edda628Sbaban 
598edda628Sbaban 	return (rc);
60