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 ,