git: 2e6541b943ef - stable/12 - rc.conf(5): add <service>_umask to run the service using this value
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 02 Dec 2023 08:44:14 UTC
The branch stable/12 has been updated by eugen:
URL: https://cgit.FreeBSD.org/src/commit/?id=2e6541b943efb785aa6e04957e511a83b452b240
commit 2e6541b943efb785aa6e04957e511a83b452b240
Author: Eugene Grosbein <eugen@FreeBSD.org>
AuthorDate: 2022-08-28 05:45:23 +0000
Commit: Eugene Grosbein <eugen@FreeBSD.org>
CommitDate: 2023-12-02 08:40:59 +0000
rc.conf(5): add <service>_umask to run the service using this value
None of tools working with login classes change umask(1)
and we had no ways to specify non-default umask for a service
not touching its startup script. This change makes in possible.
Some file-sharing services that create new files may benefit from it.
Differential: https://reviews.freebsd.org/D36309
(cherry picked from commit 160a2f2cdda806e104c0d3194bfb84b208ad1ae8)
---
libexec/rc/rc.subr | 10 +++++++++-
share/man/man5/rc.conf.5 | 8 +++++++-
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/libexec/rc/rc.subr b/libexec/rc/rc.subr
index e9a2feeb6d1a..846965d9a8e6 100644
--- a/libexec/rc/rc.subr
+++ b/libexec/rc/rc.subr
@@ -770,6 +770,8 @@ check_startmsgs()
#
# ${name}_oomprotect n Don't kill ${command} when swap space is exhausted.
#
+# ${name}_umask n The file creation mask to run ${command} with.
+#
# ${name}_user n User to run ${command} as, using su(1) if not
# using ${name}_chroot.
# Requires /usr to be mounted.
@@ -970,7 +972,8 @@ run_rc_command()
_fib=\$${name}_fib _env=\$${name}_env \
_prepend=\$${name}_prepend _login_class=\${${name}_login_class:-daemon} \
_limits=\$${name}_limits _oomprotect=\$${name}_oomprotect \
- _setup=\$${name}_setup _env_file=\$${name}_env_file
+ _setup=\$${name}_setup _env_file=\$${name}_env_file \
+ _umask=\$${name}_umask
if [ -n "$_env_file" ] && [ -r "${_env_file}" ]; then # load env from file
set -a
@@ -1331,9 +1334,14 @@ _run_rc_postcmd()
_run_rc_doit()
{
+ local _m
+
debug "run_rc_command: doit: $*"
+ _m=$(umask)
+ ${_umask:+umask ${_umask}}
eval "$@"
_return=$?
+ umask ${_m}
# If command failed and force isn't set, request exit.
if [ $_return -ne 0 ] && [ -z "$rc_force" ]; then
diff --git a/share/man/man5/rc.conf.5 b/share/man/man5/rc.conf.5
index 0f82a5df93c6..23f24bc349a8 100644
--- a/share/man/man5/rc.conf.5
+++ b/share/man/man5/rc.conf.5
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd July 7, 2022
+.Dd August 28, 2022
.Dt RC.CONF 5
.Os
.Sh NAME
@@ -234,6 +234,11 @@ such as PostgreSQL will not inherit the OOM killer protection.
.Pp
This variable has no effect on services running within a
.Xr jail 8 .
+.It Ao Ar name Ac Ns Va _umask
+.Pq Vt int
+Run the service using this
+.Xr umask 1
+value.
.It Ao Ar name Ac Ns Va _user
.Pq Vt str
Run the service under this user account.
@@ -4672,6 +4677,7 @@ files.
.Xr limits 1 ,
.Xr protect 1 ,
.Xr sh 1 ,
+.Xr umask 1 ,
.Xr vi 1 ,
.Xr vidcontrol 1 ,
.Xr bridge 4 ,