Re: Cannot start service, initgroups(gotify,365): Operation not permitted

2024-10-12 Thread Matthias Fechner

Am 12.10.2024 um 11:37 schrieb Ronald Klop:

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.


thanks for the tip with sh -x, that made the problem visible.

I changed now this line:
command_args="-f -P ${pidfile} %%PREFIX%%/bin/gotify-server 
${gotify_server_args}"


This causes the execution of:
+ eval $' limits -C daemon  su -m gotify -c \'sh -c " /usr/sbin/daemon  
-f -P /var/run/gotify_server.pid /usr/local/bin/gotify-server "\''
+ limits -C daemon su -m gotify -c 'sh -c " /usr/sbin/daemon  -f -P 
/var/run/gotify_server.pid /usr/local/bin/gotify-server "'


which is exactly what I want.
The binary is now executed. There is no need to give a -u flag to daemon.

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




Cannot start service, initgroups(gotify,365): Operation not permitted

2024-10-12 Thread Matthias Fechner

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




Re: Cannot start service, initgroups(gotify,365): Operation not permitted

2024-10-12 Thread Ronald Klop

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 
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