diff options
| author | Christian Breunig <christian@breunig.cc> | 2025-07-21 21:04:59 +0200 |
|---|---|---|
| committer | Christian Breunig <christian@breunig.cc> | 2025-07-21 21:04:59 +0200 |
| commit | f6e25c242bd4623c452c7d034cd12aa47fee8953 (patch) | |
| tree | 8d08ab8194ee794f39a22fa31ad078e834fe46b9 | |
| parent | 32d5bbaa006fe99b326af51f7fcabd10730fe5b4 (diff) | |
| download | vyos-1x-f6e25c242bd4623c452c7d034cd12aa47fee8953.tar.gz vyos-1x-f6e25c242bd4623c452c7d034cd12aa47fee8953.zip | |
vyos.utils: T7648: only provide one chown function
Remove duplicate function definition vyos.utils.file.chown which was also
provided by vyos.utils.permission.chown.
| -rw-r--r-- | python/vyos/utils/file.py | 30 | ||||
| -rw-r--r-- | python/vyos/utils/permission.py | 24 | ||||
| -rwxr-xr-x | src/conf_mode/service_dhcp-server.py | 2 | ||||
| -rwxr-xr-x | src/conf_mode/service_dhcpv6-server.py | 2 | ||||
| -rwxr-xr-x | src/conf_mode/system_login.py | 2 |
5 files changed, 22 insertions, 38 deletions
diff --git a/python/vyos/utils/file.py b/python/vyos/utils/file.py index 31c2361df..49bea567d 100644 --- a/python/vyos/utils/file.py +++ b/python/vyos/utils/file.py @@ -92,36 +92,6 @@ def read_json(fname, defaultonfailure=None): return defaultonfailure raise e -def chown(path, user=None, group=None, recursive=False): - """ change file/directory owner """ - from pwd import getpwnam - from grp import getgrnam - - if user is None and group is None: - return False - - # path may also be an open file descriptor - if not isinstance(path, int) and not os.path.exists(path): - return False - - # keep current value if not specified otherwise - uid = -1 - gid = -1 - - if user: - uid = getpwnam(user).pw_uid - if group: - gid = getgrnam(group).gr_gid - - if recursive: - for dirpath, dirnames, filenames in os.walk(path): - os.chown(dirpath, uid, gid) - for filename in filenames: - os.chown(os.path.join(dirpath, filename), uid, gid) - else: - os.chown(path, uid, gid) - return True - def chmod(path, bitmask): # path may also be an open file descriptor diff --git a/python/vyos/utils/permission.py b/python/vyos/utils/permission.py index efd44bfeb..08bb7bdbc 100644 --- a/python/vyos/utils/permission.py +++ b/python/vyos/utils/permission.py @@ -15,23 +15,37 @@ import os -def chown(path, user, group): +def chown(path, user=None, group=None, recursive=False): """ change file/directory owner """ from pwd import getpwnam from grp import getgrnam - if user is None or group is None: + if user is None and group is None: return False # path may also be an open file descriptor if not isinstance(path, int) and not os.path.exists(path): return False - uid = getpwnam(user).pw_uid - gid = getgrnam(group).gr_gid - os.chown(path, uid, gid) + # keep current value if not specified otherwise + uid = -1 + gid = -1 + + if user: + uid = getpwnam(user).pw_uid + if group: + gid = getgrnam(group).gr_gid + + if recursive: + for dirpath, dirnames, filenames in os.walk(path): + os.chown(dirpath, uid, gid) + for filename in filenames: + os.chown(os.path.join(dirpath, filename), uid, gid) + else: + os.chown(path, uid, gid) return True + def chmod(path, bitmask): # path may also be an open file descriptor if not isinstance(path, int) and not os.path.exists(path): diff --git a/src/conf_mode/service_dhcp-server.py b/src/conf_mode/service_dhcp-server.py index 6bbe72e90..b404b1708 100755 --- a/src/conf_mode/service_dhcp-server.py +++ b/src/conf_mode/service_dhcp-server.py @@ -29,9 +29,9 @@ from vyos.template import render from vyos.utils.dict import dict_search from vyos.utils.dict import dict_search_args from vyos.utils.file import chmod_775 -from vyos.utils.file import chown from vyos.utils.file import makedir from vyos.utils.file import write_file +from vyos.utils.permission import chown from vyos.utils.process import call from vyos.utils.network import interface_exists from vyos.utils.network import is_subnet_connected diff --git a/src/conf_mode/service_dhcpv6-server.py b/src/conf_mode/service_dhcpv6-server.py index 07dd08337..8344f99b4 100755 --- a/src/conf_mode/service_dhcpv6-server.py +++ b/src/conf_mode/service_dhcpv6-server.py @@ -25,11 +25,11 @@ from vyos.config import Config from vyos.template import render from vyos.utils.process import call from vyos.utils.file import chmod_775 -from vyos.utils.file import chown from vyos.utils.file import makedir from vyos.utils.file import write_file from vyos.utils.dict import dict_search from vyos.utils.network import is_subnet_connected +from vyos.utils.permission import chown from vyos import ConfigError from vyos import airbag airbag.enable() diff --git a/src/conf_mode/system_login.py b/src/conf_mode/system_login.py index 00cacccd1..234b24770 100755 --- a/src/conf_mode/system_login.py +++ b/src/conf_mode/system_login.py @@ -37,7 +37,7 @@ from vyos.utils.auth import get_current_user from vyos.utils.configfs import delete_cli_node from vyos.utils.configfs import add_cli_node from vyos.utils.dict import dict_search -from vyos.utils.file import chown +from vyos.utils.permission import chown from vyos.utils.process import cmd from vyos.utils.process import call from vyos.utils.process import run |
