util: more control on file writer mode and group
This commit is contained in:
parent
ddc3345eb6
commit
ddc11d8687
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue