Fix seteuid magic
This commit is contained in:
parent
8aa2bd1b24
commit
ac241a6e34
8
bin/ceo
8
bin/ceo
|
@ -18,8 +18,10 @@ for pathent in sys.path[:]:
|
||||||
if not pathent.find('/usr') == 0 and not pathent.find('/var') == 0:
|
if not pathent.find('/usr') == 0 and not pathent.find('/var') == 0:
|
||||||
sys.path.remove(pathent)
|
sys.path.remove(pathent)
|
||||||
|
|
||||||
euid = os.getuid()
|
euid = os.geteuid()
|
||||||
egid = os.getgid()
|
egid = os.getegid()
|
||||||
|
uid = os.getuid()
|
||||||
|
gid = os.getgid()
|
||||||
try:
|
try:
|
||||||
os.setreuid(euid, euid)
|
os.setreuid(euid, euid)
|
||||||
os.setregid(egid, egid)
|
os.setregid(egid, egid)
|
||||||
|
@ -28,4 +30,4 @@ except OSError, e:
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
import csc.apps.urwid.main
|
import csc.apps.urwid.main
|
||||||
csc.apps.urwid.main.start(euid, egid)
|
csc.apps.urwid.main.start(uid, gid)
|
||||||
|
|
|
@ -20,11 +20,11 @@ def list_group_members(data):
|
||||||
search.member_list( mlist )
|
search.member_list( mlist )
|
||||||
|
|
||||||
def group_members(data):
|
def group_members(data):
|
||||||
data, euid = data
|
data, uid = data
|
||||||
|
|
||||||
# only syscom may modify non-club groups
|
# only syscom may modify non-club groups
|
||||||
if data['group'] != 'office':
|
if data['group'] != 'office':
|
||||||
user = pwd.getpwuid(euid).pw_name
|
user = pwd.getpwuid(uid).pw_name
|
||||||
users = grp.getgrnam('syscom').gr_mem
|
users = grp.getgrnam('syscom').gr_mem
|
||||||
if user not in users:
|
if user not in users:
|
||||||
member = members.get(data['group'])
|
member = members.get(data['group'])
|
||||||
|
@ -66,8 +66,8 @@ class IntroPage(WizardPanel):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
class InfoPage(WizardPanel):
|
class InfoPage(WizardPanel):
|
||||||
def __init__(self, state, euid):
|
def __init__(self, state, uid):
|
||||||
state['euid'] = euid
|
state['uid'] = uid
|
||||||
WizardPanel.__init__(self, state)
|
WizardPanel.__init__(self, state)
|
||||||
def init_widgets(self):
|
def init_widgets(self):
|
||||||
self.group = WordEdit("Club or Group: ")
|
self.group = WordEdit("Club or Group: ")
|
||||||
|
@ -85,7 +85,7 @@ class InfoPage(WizardPanel):
|
||||||
"group" : group_name,
|
"group" : group_name,
|
||||||
"groups" : [group],
|
"groups" : [group],
|
||||||
}
|
}
|
||||||
group_members((data, self.state['euid']))
|
group_members((data, self.state['uid']))
|
||||||
|
|
||||||
class ChangeMember(WizardPanel):
|
class ChangeMember(WizardPanel):
|
||||||
def __init__(self, state, data):
|
def __init__(self, state, data):
|
||||||
|
|
|
@ -74,9 +74,9 @@ def main_menu():
|
||||||
("Manage Club or Group Members", manage_group, None),
|
("Manage Club or Group Members", manage_group, None),
|
||||||
("Manage Positions", manage_positions, None),
|
("Manage Positions", manage_positions, None),
|
||||||
("Manage Office Staff", groups.group_members,
|
("Manage Office Staff", groups.group_members,
|
||||||
(office_data, ui.euid)),
|
(office_data, ui.uid)),
|
||||||
("Manage Systems Committee", groups.group_members,
|
("Manage Systems Committee", groups.group_members,
|
||||||
(syscom_data, ui.euid)),
|
(syscom_data, ui.uid)),
|
||||||
("Exit", raise_abort, None),
|
("Exit", raise_abort, None),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ def new_club(*args, **kwargs):
|
||||||
def manage_group(*args, **kwargs):
|
def manage_group(*args, **kwargs):
|
||||||
push_wizard("Manage Club or Group Members", [
|
push_wizard("Manage Club or Group Members", [
|
||||||
groups.IntroPage,
|
groups.IntroPage,
|
||||||
(groups.InfoPage, ui.euid),
|
(groups.InfoPage, ui.uid),
|
||||||
], (60, 15))
|
], (60, 15))
|
||||||
|
|
||||||
def renew_member(*args, **kwargs):
|
def renew_member(*args, **kwargs):
|
||||||
|
@ -154,9 +154,9 @@ def run():
|
||||||
push_window( main_menu(), program_name() )
|
push_window( main_menu(), program_name() )
|
||||||
event_loop( ui )
|
event_loop( ui )
|
||||||
|
|
||||||
def start(euid, egid):
|
def start(uid, gid):
|
||||||
ui.euid = euid
|
ui.uid = uid
|
||||||
ui.egid = egid
|
ui.gid = gid
|
||||||
ui.run_wrapper( run )
|
ui.run_wrapper( run )
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
Loading…
Reference in New Issue