db8c40249f
pkgtasks is a shell script library to ease writing POSIX-compliant shell scripts to handle common tasks during installation or removal of a package, e.g., * creating groups and users needed by the package * creating and removing directories with special permissions and ownership, * copying example config files to their final locations during package installation, and removing them during package removal if they don't differ from the example ones, * reminding the user of files that may be customized after package installation.
121 lines
3.3 KiB
Text
121 lines
3.3 KiB
Text
# Copyright (c) 2017 The NetBSD Foundation, Inc.
|
|
# All rights reserved.
|
|
#
|
|
# This code is derived from software contributed to The NetBSD Foundation
|
|
# by Johnny C. Lam.
|
|
#
|
|
# Redistribution and use in source and binary forms, with or without
|
|
# modification, are permitted provided that the following conditions
|
|
# are met:
|
|
# 1. Redistributions of source code must retain the above copyright
|
|
# notice, this list of conditions and the following disclaimer.
|
|
# 2. Redistributions in binary form must reproduce the above copyright
|
|
# notice, this list of conditions and the following disclaimer in the
|
|
# documentation and/or other materials provided with the distribution.
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
# POSSIBILITY OF SUCH DAMAGE.
|
|
#
|
|
# NAME
|
|
# usergroup_NetBSD -- groupadd/useradd for NetBSD
|
|
#
|
|
# SYNOPSIS
|
|
# platform_groupadd [-g <groupid>] <group>
|
|
#
|
|
# platform_useradd [-c <descr>] [-d <home>] [-g <group>]
|
|
# [-s <shell>] [-u <userid>] <user>
|
|
#
|
|
# DESCRIPTION
|
|
# The functions implement a NetBSD/Solaris-compatible groupadd and
|
|
# useradd.
|
|
#
|
|
# RETURN VALUES
|
|
# All functions return 0 on success, and return non-zero otherwise.
|
|
#
|
|
# ENVIRONMENT
|
|
# The following variables are used if they are set:
|
|
#
|
|
# GROUPADD
|
|
# The name or path to groupadd(8).
|
|
#
|
|
# USERADD
|
|
# The name or path to useradd(8).
|
|
#
|
|
# COMPATIBILITY
|
|
# This implementation assumes NetBSD/Solaris-compatible versions of
|
|
# groupadd(8) and useradd(8) are available, and is usable on the
|
|
# following systems:
|
|
#
|
|
# o NetBSD
|
|
# o SunOS
|
|
#
|
|
|
|
__task_usergroup_NetBSD__="yes"
|
|
|
|
task_load quote
|
|
|
|
platform_groupadd()
|
|
{
|
|
: ${GROUPADD:=groupadd}
|
|
|
|
local groupadd_args=
|
|
local arg quoted
|
|
local OPTIND=1
|
|
while getopts ":g:" arg "$@"; do
|
|
case $arg in
|
|
g) task_quote "${OPTARG}"
|
|
groupadd_args="$groupadd_args -$arg $quoted" ;;
|
|
*) return 127 ;;
|
|
esac
|
|
done
|
|
shift $(( ${OPTIND} - 1 ))
|
|
# A <group> argument is required.
|
|
[ $# -eq 1 ] || return 127
|
|
local group="$1"; shift
|
|
|
|
[ -n "$group" ] || return 1
|
|
|
|
task_quote "$group"
|
|
groupadd_args="$groupadd_args $quoted"
|
|
|
|
eval ${GROUPADD} $groupadd_args
|
|
}
|
|
|
|
platform_useradd()
|
|
{
|
|
: ${USERADD:=useradd}
|
|
|
|
local useradd_args=
|
|
local arg quoted
|
|
local OPTIND=1
|
|
while getopts ":c:d:g:s:u:" arg "$@"; do
|
|
case $arg in
|
|
[cdgsu])
|
|
# valid useradd options for pw(8)
|
|
task_quote "${OPTARG}"
|
|
useradd_args="$useradd_args -$arg $quoted" ;;
|
|
*) return 127 ;;
|
|
esac
|
|
done
|
|
shift $(( ${OPTIND} - 1 ))
|
|
# A <user> argument is required.
|
|
[ $# -eq 1 ] || return 127
|
|
local user="$1"; shift
|
|
|
|
[ -n "$user" ] || return 1
|
|
|
|
task_quote "$user"
|
|
# The <user> argument precedes the rest for "pw useradd".
|
|
useradd_args="$useradd_args $quoted"
|
|
|
|
eval ${USERADD} $useradd_args
|
|
}
|