util: more control on file writer mode and group

This commit is contained in:
Dan Bungert 2023-10-03 16:40:15 -06:00
parent ddc3345eb6
commit ddc11d8687
1 changed files with 6 additions and 7 deletions

View File

@ -29,7 +29,9 @@ _DEF_GROUP = "adm"
log = logging.getLogger("subiquitycore.file_util")
def set_log_perms(target, *, isdir=True, group_write=False, mode=None):
def set_log_perms(
target, *, isdir=True, group_write=False, mode=None, group=_DEF_GROUP
):
if os.getuid() != 0:
log.warning(
"set_log_perms: running as non-root - not adjusting"
@ -44,14 +46,11 @@ def set_log_perms(target, *, isdir=True, group_write=False, mode=None):
if group_write:
mode |= 0o020
os.chmod(target, mode)
os.chown(target, -1, grp.getgrnam(_DEF_GROUP).gr_gid)
os.chown(target, -1, grp.getgrnam(group).gr_gid)
@contextlib.contextmanager
def open_perms(filename, *, mode=None):
if mode is None:
mode = _DEF_PERMS_FILE
def open_perms(filename, **kwargs):
tf = None
try:
dirname = os.path.dirname(filename)
@ -59,7 +58,7 @@ def open_perms(filename, *, mode=None):
tf = tempfile.NamedTemporaryFile(dir=dirname, delete=False, mode="w")
yield tf
tf.close()
set_log_perms(tf.name, mode=mode)
set_log_perms(tf.name, **kwargs)
os.rename(tf.name, filename)
except OSError as e:
if tf is not None: