mirror of
https://github.com/Pardus-LiderAhenk/ahenk
synced 2024-11-25 10:02:15 +03:00
disable user
This commit is contained in:
parent
a0035a3253
commit
774387867d
4 changed files with 40 additions and 19 deletions
|
@ -25,4 +25,5 @@ get_policy_timeout = 30
|
|||
[MACHINE]
|
||||
type = default
|
||||
agreement = 2
|
||||
user_disabled=1
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ import signal
|
|||
import sys
|
||||
import threading
|
||||
import time
|
||||
from glob import glob
|
||||
|
||||
from base.agreement.agreement import Agreement
|
||||
from base.command.command_manager import Commander
|
||||
|
@ -294,6 +295,23 @@ class AhenkDaemon(BaseDaemon):
|
|||
|
||||
self.is_registered()
|
||||
|
||||
conf_manager= global_scope.get_configuration_manager()
|
||||
|
||||
if conf_manager.has_section('MACHINE'):
|
||||
user_disabled = conf_manager.get("MACHINE", "user_disabled")
|
||||
if user_disabled==0:
|
||||
self.logger.info('local user disabling')
|
||||
global_scope.get_registration().disable_local_users()
|
||||
|
||||
conf_manager.set('MACHINE', 'user_disabled', 1)
|
||||
|
||||
with open('/etc/ahenk/ahenk.conf', 'w') as configfile:
|
||||
self.conf_manager.write(configfile)
|
||||
self.logger.info('local user disabled')
|
||||
else :
|
||||
self.logger.info('users already disabled')
|
||||
|
||||
|
||||
#self.logger.info('Ahenk was registered')
|
||||
|
||||
self.messenger = self.init_messenger()
|
||||
|
|
|
@ -148,22 +148,3 @@ class AnonymousMessenger(ClientXMPP):
|
|||
self.send_message(mto=self.receiver, mbody=msg, mtype='normal')
|
||||
|
||||
|
||||
def disable_local_users(self):
|
||||
passwd_cmd = 'passwd -l {}'
|
||||
change_home = 'usermod -m -d {0} {1}'
|
||||
change_username = 'usermod -l {0} {1}'
|
||||
content = Util.read_file('/etc/passwd')
|
||||
kill_all_process = 'killall -KILL -u {}'
|
||||
for p in pwd.getpwall():
|
||||
self.logger.info("User: '{0}' will be disabled and changed username and home directory of username".format(p.pw_name))
|
||||
if not sysx.shell_is_interactive(p.pw_shell):
|
||||
continue
|
||||
if p.pw_uid == 0:
|
||||
continue
|
||||
if p.pw_name in content:
|
||||
new_home_dir = p.pw_dir.rstrip('/') + '-local/'
|
||||
new_username = p.pw_name+'-local'
|
||||
Util.execute(kill_all_process.format(p.pw_name))
|
||||
Util.execute(passwd_cmd.format(p.pw_name))
|
||||
Util.execute(change_username.format(new_username, p.pw_name))
|
||||
Util.execute(change_home.format(new_home_dir, new_username))
|
||||
|
|
|
@ -489,3 +489,24 @@ class Registration:
|
|||
self.util.execute(change_username.format(new_username, p.pw_name))
|
||||
self.util.execute(change_home.format(new_home_dir, new_username))
|
||||
self.logger.debug("User: '{0}' will be enabled and changed username and home directory of username".format(p.pw_name))
|
||||
|
||||
|
||||
def disable_local_users(self):
|
||||
passwd_cmd = 'passwd -l {}'
|
||||
change_home = 'usermod -m -d {0} {1}'
|
||||
change_username = 'usermod -l {0} {1}'
|
||||
content = Util.read_file('/etc/passwd')
|
||||
kill_all_process = 'killall -KILL -u {}'
|
||||
for p in pwd.getpwall():
|
||||
self.logger.info("User: '{0}' will be disabled and changed username and home directory of username".format(p.pw_name))
|
||||
if not sysx.shell_is_interactive(p.pw_shell):
|
||||
continue
|
||||
if p.pw_uid == 0:
|
||||
continue
|
||||
if p.pw_name in content:
|
||||
new_home_dir = p.pw_dir.rstrip('/') + '-local/'
|
||||
new_username = p.pw_name+'-local'
|
||||
Util.execute(kill_all_process.format(p.pw_name))
|
||||
Util.execute(passwd_cmd.format(p.pw_name))
|
||||
Util.execute(change_username.format(new_username, p.pw_name))
|
||||
Util.execute(change_home.format(new_home_dir, new_username))
|
||||
|
|
Loading…
Reference in a new issue