docs: def disable_root():
      """
      Disables root and creates a new sudo user as specified by HOST_USER in your
      settings or your host_string
      
      The normal pattern for hosting is to get a root account which is then disabled.
      
      returns True on success
      """
      
      def enter_password():
          password1 = getpass.getpass(prompt='Enter the password for %s:'% sudo_user)
          password2 = getpass.getpass(prompt='Re-enter the password:')
          if password1 <> password2:
              print env.host, 'The password was not the same'
              enter_password()
          return password1
  
      (olduser,host,port) = normalize(env.host_string)
   
      if env.verbosity and not (env.HOST_USER or env.ROLEDEFS):
      
          print "\nWOVEN will now walk through setting up your node (host).\n"
  
          if env.INTERACTIVE:
              root_user = prompt("\nWhat is the default administrator account for your node?", default=env.ROOT_USER)
          else: root_user = env.ROOT_USER
          if env.user <> 'root': sudo_user = env.user
          else: sudo_user = ''
          if env.INTERACTIVE:
              sudo_user = prompt("What is the new or existing account you wish to use to setup and deploy to your node?", default=sudo_user)
             
      else:
          root_user = env.ROOT_USER
          sudo_user = env.user
          
  
      original_password = env.get('HOST_PASSWORD','')
      
      host_string=join_host_strings(root_user,host,str(env.DEFAULT_SSH_PORT))
      with settings(host_string=host_string, key_filename=env.key_filename, password=env.ROOT_PASSWORD):
          if not contains('/etc/group','sudo',use_sudo=True):
              sudo('groupadd sudo')
  
          home_path = '/home/%s'% sudo_user
          if not exists(home_path):
              if env.verbosity:
                  print env.host, 'CREATING A NEW ACCOUNT WITH SUDO PRIVILEGE: %s'% sudo_user
              if not original_password:
  
                  original_password = enter_password()
              
              add_user(username=sudo_user, password=original_password,group='sudo')
  
          #Add existing user to sudo group
          else:
              sudo('adduser %s sudo'% sudo_user)
          #adm group used by Ubuntu logs
          sudo('usermod -a -G adm %s'% sudo_user)
          #add user to /etc/sudoers
          if not exists('/etc/sudoers.wovenbak',use_sudo=True):
              sudo('cp -f /etc/sudoers /etc/sudoers.wovenbak')
          sudo('cp -f /etc/sudoers /tmp/sudoers.tmp')
          append('/tmp/sudoers.tmp', "# Members of the sudo group may gain root privileges", use_sudo=True)
          append('/tmp/sudoers.tmp', "%sudo ALL=(ALL) NOPASSWD:ALL",  use_sudo=True)
          sudo('visudo -c -f /tmp/sudoers.tmp')
          sudo('cp -f /tmp/sudoers.tmp /etc/sudoers')
          sudo('rm -rf /tmp/sudoers.tmp')
          if env.key_filename:
              sudo('mkdir -p /home/%s/.ssh'% sudo_user)
              sudo('cp -f ~/.ssh/authorized_keys /home/%s/.ssh/authorized_keys'% sudo_user)
              sudo('chown -R %s:sudo /home/%s/.ssh'% (sudo_user,sudo_user))
              
      env.password = original_password
  
      #finally disable root
      host_string=join_host_strings(sudo_user,host,str(env.DEFAULT_SSH_PORT))
      with settings(host_string=host_string):
          if sudo_user <> root_user and root_user == 'root':
              if env.INTERACTIVE:
                  d_root = confirm("Disable the root account", default=True)
              else: d_root = env.DISABLE_ROOT
              if d_root:
                  if env.verbosity:
                      print env.host, 'DISABLING ROOT'
                  sudo("usermod -L %s"% 'root')
  
      return True