aboutsummaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
Diffstat (limited to 'docker')
-rw-r--r--docker/base/set_configs.py19
1 files changed, 14 insertions, 5 deletions
diff --git a/docker/base/set_configs.py b/docker/base/set_configs.py
index 542537e4c..c0a4af76c 100644
--- a/docker/base/set_configs.py
+++ b/docker/base/set_configs.py
@@ -410,11 +410,20 @@ def handle_permissions(config):
path, uid, gid)
if perm:
- # NOTE(Jeffrey4l): py3 need '0oXXX' format for octal literals,
- # and py2 support such format too.
- if len(perm) == 4 and perm[1] != 'o':
- perm = ''.join([perm[:1], 'o', perm[1:]])
- perm = int(perm, base=0)
+ # Accept valid UNIX permission notation
+ # (e.g. 644, 0600, 1777, 2755)
+ # or equivalent Python octal literals
+ # (e.g. 0o644, 0o1777, 0o2755).
+ if re.fullmatch(r'[0-7]{3,4}', perm):
+ perm = int(perm, 8)
+ elif re.fullmatch(r'0o[0-7]{3,4}', perm):
+ perm = int(perm, 0)
+ else:
+ raise ValueError(
+ f"Invalid permission '{perm}'. Expected a valid UNIX "
+ "permission (e.g. 644, 0600, 2755) or a Python octal "
+ "literal (e.g. 0o644, 0o0600, 0o2755)."
+ )
# Ensure execute bit on directory if read bit is set
if os.path.isdir(path):