docs: def set_user_access(self, uid, channel=None, callback=False,
                          link_auth=True, ipmi_msg=True, privilege_level='user'):
          """Set user access
  
          :param uid: user number [1:16]
  
          :param channel: number [1:7]
  
          :parm callback: User Restricted to Callback
          False = User Privilege Limit is determined by the User Privilege Limit
              parameter, below, for both callback and non-callback connections.
          True  = User Privilege Limit is determined by the User Privilege Limit
              parameter for callback connections, but is restricted to Callback
              level for non-callback connections. Thus, a user can only initiate
              a Callback when they 'call in' to the BMC, but once the callback
              connection has been made, the user could potentially establish a
              session as an Operator.
  
          :param link_auth: User Link authentication
          enable/disable (used to enable whether this
          user's name and password information will be used for link
          authentication, e.g. PPP CHAP) for the given channel. Link
          authentication itself is a global setting for the channel and is
          enabled/disabled via the serial/modem configuration parameters.
  
          :param ipmi_msg: User IPMI Messaginge:
          (used to enable/disable whether
          this user's name and password information will be used for IPMI
          Messaging. In this case, 'IPMI Messaging' refers to the ability to
          execute generic IPMI commands that are not associated with a
          particular payload type. For example, if IPMI Messaging is disabled for
          a user, but that user is enabled for activatallow_authing the SOL
          payload type, then IPMI commands associated with SOL and session
          management, such as Get SOL Configuration Parameters and Close Session
          are available, but generic IPMI commands such as Get SEL Time are
          unavailable.)
  
          :param privilege_level:
          User Privilege Limit. (Determines the maximum privilege level that the
          user is allowed to switch to on the specified channel.)
              * callback
              * user
              * operator
              * administrator
              * proprietary
              * no_access
          """
          if channel is None:
              channel = self.get_network_channel()
          b = 0b10000000
          if callback:
              b |= 0b01000000
          if link_auth:
              b |= 0b00100000
          if ipmi_msg:
              b |= 0b00010000
          b |= channel & 0b00001111
          privilege_levels = {
              'reserved': 0,
              'callback': 1,
              'user': 2,
              'operator': 3,
              'administrator': 4,
              'proprietary': 5,
              'no_access': 0x0F,
          }
          self.oem_init()
          self._oem.set_user_access(
              uid, channel, callback, link_auth, ipmi_msg, privilege_level)
          data = [b, uid & 0b00111111,
                  privilege_levels[privilege_level] & 0b00001111, 0]
          response = self.raw_command(netfn=0x06, command=0x43, data=data)
          if 'error' in response:
              raise Exception(response['error'])
          return True