mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-16 14:33:00 +00:00
Merge pull request #264
add supplemental groups to single-user servers closes #264
This commit is contained in:
@@ -10,6 +10,7 @@ import pwd
|
|||||||
import re
|
import re
|
||||||
import signal
|
import signal
|
||||||
import sys
|
import sys
|
||||||
|
import grp
|
||||||
from subprocess import Popen, check_output, PIPE, CalledProcessError
|
from subprocess import Popen, check_output, PIPE, CalledProcessError
|
||||||
from tempfile import TemporaryDirectory
|
from tempfile import TemporaryDirectory
|
||||||
|
|
||||||
@@ -276,6 +277,7 @@ def set_user_setuid(username):
|
|||||||
uid = user.pw_uid
|
uid = user.pw_uid
|
||||||
gid = user.pw_gid
|
gid = user.pw_gid
|
||||||
home = user.pw_dir
|
home = user.pw_dir
|
||||||
|
gids = [ g.gr_gid for g in grp.getgrall() if username in g.gr_mem ]
|
||||||
|
|
||||||
def preexec():
|
def preexec():
|
||||||
# don't forward signals
|
# don't forward signals
|
||||||
@@ -283,6 +285,10 @@ def set_user_setuid(username):
|
|||||||
|
|
||||||
# set the user and group
|
# set the user and group
|
||||||
os.setgid(gid)
|
os.setgid(gid)
|
||||||
|
try:
|
||||||
|
os.setgroups(gids)
|
||||||
|
except Exception as e:
|
||||||
|
print('Failed to set groups %s' % e, file=sys.stderr)
|
||||||
os.setuid(uid)
|
os.setuid(uid)
|
||||||
|
|
||||||
# start in the user's home dir
|
# start in the user's home dir
|
||||||
|
Reference in New Issue
Block a user