Yuvipanda has uploaded a new change for review. https://gerrit.wikimedia.org/r/299133
Change subject: tools: Set homedir permissions properly in kube-maintainusers ...................................................................... tools: Set homedir permissions properly in kube-maintainusers Otherwise if it created homedirs it was setting them to be readable and writeable only by root Bug: T140460 Change-Id: I23e06ea5de8115904e606b1580aa3f7391157559 --- M modules/toollabs/files/maintain-kubeusers 1 file changed, 18 insertions(+), 3 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/operations/puppet refs/changes/33/299133/1 diff --git a/modules/toollabs/files/maintain-kubeusers b/modules/toollabs/files/maintain-kubeusers index 6ba6a47..0ff9eca 100755 --- a/modules/toollabs/files/maintain-kubeusers +++ b/modules/toollabs/files/maintain-kubeusers @@ -22,6 +22,7 @@ import random import time import csv +import stat TOOL_ALLOWED_RESOURCES = [ 'pods', @@ -201,7 +202,9 @@ def write_kubeconfig(user, master): """ - Write an appropriate .kube/config for given user to access given master + Write an appropriate .kube/config for given user to access given master. + + This also creates the user's homedir if it doesn't exist See http://kubernetes.io/docs/user-guide/kubeconfig-file/ for format """ @@ -230,9 +233,21 @@ }], 'current-context': 'default' } - dirpath = os.path.join('/data', 'project', user.name, '.kube') + homepath = os.path.join('/data', 'project', user.name) + # If the home folder hasn't been created yet, we should create it here + # with the appropriate bits. This used to be done by this script called + # toolwatcher, but it was racing this so we decided to fold it into this. + # HACK: I am not entirely sure if this + try: + os.path.makedirs(homepath, mode=0o775, exists_ok=False) + os.chmod(homepath, 0o775 | stat.I_SGID) + os.chown(homepath, int(user.id), int(user.id)) + except OSError: + # It already exists, let it go! + pass + dirpath = os.path.join(homepath '.kube') path = os.path.join(dirpath, 'config') - os.makedirs(dirpath, exist_ok=True) + os.makedirs(dirpath, mode=0o775, exist_ok=True) f = os.open(path, os.O_CREAT | os.O_WRONLY | os.O_NOFOLLOW) try: os.write(f, json.dumps(config, indent=4, sort_keys=True).encode('utf-8')) -- To view, visit https://gerrit.wikimedia.org/r/299133 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I23e06ea5de8115904e606b1580aa3f7391157559 Gerrit-PatchSet: 1 Gerrit-Project: operations/puppet Gerrit-Branch: production Gerrit-Owner: Yuvipanda <yuvipa...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits