If you run the script with sh -x you will get output of what it is doing. This 
can help identifying which part of the script fails.

sh -x /usr/local/etc/rc.d/gotify_server start

Are your sure you ran 'service gotify_server start' as root?
The man pages say that iinitgroups can only return EPERM via a call to 
setgroups when not run as root.

Regards,
Ronald


Van: Matthias Fechner <ide...@fechner.net>
Datum: zaterdag, 12 oktober 2024 10:02
Aan: ports@freebsd.org
Onderwerp: Cannot start service, initgroups(gotify,365): Operation not permitted

Dear all,

I currently try to create a port for gotify.
The port itself is more or less complete, but I have problem with the init 
script:
#!/bin/sh
# PROVIDE: gotify_server
# REQUIRE: DAEMON NETWORKING
# KEYWORD: shutdown

#
# Add these lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# gotify_server_enable (bool):        Set to NO by default.
#                                     Set it to YES to enable mailpit.
# gotify_server_dir (str):            Set to "/var/db/gotify" by default
#                                     Set it to directory to run gotify in
# gotify_server_user (str):           Set to "gotify" by default.
#                                     Set it to user to run gotify-server under
# gotify_server_group (str):          Set to "gotify" by default.
#                                     Set it to group to run gotify-server under
# gotify_server_args (string):        Custom extra arguments for gotify-server

. /etc/rc.subr

name="gotify_server"
rcvar="gotify_server_enable"
desc="Run Gotify notification server"

load_rc_config ${name}

: ${gotify_server_enable:="NO"}
: ${gotify_server_dir:="/var/db/gotify"}
: ${gotify_server_user:="gotify"}
: ${gotify_server_group:="gotify"}
: ${gotify_server_args:=""}

export HOME=${gotify_server_dir}
export PATH=${PATH}:%%PREFIX%%/bin

pidfile="/var/run/${name}.pid"
command="/usr/sbin/daemon"
command_args="-f -p ${pidfile} -u ${gotify_server_user} %%PREFIX%%/bin/gotify-server 
${gotify_server_args}"

start_precmd="gotify_server_precmd"

gotify_server_precmd()
{
         if [ ! -e "${pidfile}" ]; then
                 install -g ${gotify_server_group} -o ${gotify_server_user} -- /dev/null 
"${pidfile}";
         fi
}

run_rc_command $1

If I install the package, enabled it (sysrc gotify_server_enable="YES") and 
start it with:
service gotify_server start

It just returns and I see in /var/log/messages:
Oct 12 09:55:56 gitlab daemon[9157]: initgroups(gotify,365): Operation not 
permitted

The user is existing:
gotify:*:365:365:Gotify User:/var/db/gotify:/bin/sh

Group is existing:
gotify:*:365:

and If I execute the command manually it works:
/usr/sbin/daemon -f -p /var/run/gotify_server.pid -u gotify 
/usr/local/bin/gotify-server

So it is related to something the init scripts are doing.

Does maybe anyone have a idea?

Thanks

Gruß
Matthias

--

"Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs, and the universe trying to
produce bigger and better idiots. So far, the universe is winning." --
Rich Cook




Reply via email to