Package jcifs.smb
Class SID
- java.lang.Object
-
- jcifs.dcerpc.ndr.NdrObject
-
- jcifs.dcerpc.rpc.sid_t
-
- jcifs.smb.SID
-
- All Implemented Interfaces:
SID
public class SID extends rpc.sid_t implements SID
Internal representation of SIDs A Windows SID is a numeric identifier used to represent Windows accounts. SIDs are commonly represented using a textual format such as S-1-5-21-1496946806-2192648263-3843101252-1029 but they may also be resolved to yield the name of the associated Windows account such as Administrators or MYDOM\alice.Consider the following output of examples/SidLookup.java:
toString: S-1-5-21-4133388617-793952518-2001621813-512 toDisplayString: WNET\Domain Admins getType: 2 getTypeText: Domain group getDomainName: WNET getAccountName: Domain Admins
-
-
Field Summary
Fields Modifier and Type Field Description static SID
CREATOR_OWNER
Well known SID: CREATOR_OWNERstatic SID
EVERYONE
Well known SID: EVERYONEstatic int
SID_FLAG_RESOLVE_SIDS
static SID
SYSTEM
Well known SID: SYSTEM-
Fields inherited from class jcifs.dcerpc.rpc.sid_t
identifier_authority, revision, sub_authority, sub_authority_count
-
Fields inherited from interface jcifs.SID
SID_TYPE_ALIAS, SID_TYPE_DELETED, SID_TYPE_DOM_GRP, SID_TYPE_DOMAIN, SID_TYPE_INVALID, SID_TYPE_UNKNOWN, SID_TYPE_USE_NONE, SID_TYPE_USER, SID_TYPE_WKN_GRP
-
-
Constructor Summary
Constructors Constructor Description SID(byte[] src, int si)
Construct a SID from it's binary representation.SID(String textual)
Construct a SID from it's textual representation such as S-1-5-21-1496946806-2192648263-3843101252-1029.SID(rpc.sid_t sid, int type, String domainName, String acctName, boolean decrementAuthority)
SID(SID domsid, int rid)
Construct a SID from a domain SID and an RID (relative identifier).SID(SID domsid, SID id)
Construct a relative SID
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object obj)
String
getAccountName()
Return the sAMAccountName of this SID unless it could not be resolved in which case the numeric RID is returned.String
getDomainName()
Return the domain name of this SID unless it could not be resolved in which case the numeric representation is returned.SID
getDomainSid()
SID[]
getGroupMemberSids(String authorityServerName, CIFSContext tc, int flags)
Get members of the group represented by this SID, if it is one.int
getRid()
Get the RID This is the last subauthority identifierint
getType()
Returns the type of this SID indicating the state or type of account.String
getTypeText()
Return text representing the SID type suitable for display to users.int
hashCode()
void
initContext(String server, CIFSContext context)
boolean
isBlank()
boolean
isEmpty()
void
resolve(String authorityServerName, CIFSContext tc)
Manually resolve this SID.byte[]
toByteArray()
static byte[]
toByteArray(rpc.sid_t sid)
Convert a sid_t to byte arrayString
toDisplayString()
Return a String representing this SID ideal for display to users.String
toString()
Return the numeric representation of this sid such as S-1-5-21-1496946806-2192648263-3843101252-1029.<T> T
unwrap(Class<T> t)
-
-
-
Field Detail
-
SID_FLAG_RESOLVE_SIDS
public static final int SID_FLAG_RESOLVE_SIDS
- See Also:
- Constant Field Values
-
EVERYONE
public static SID EVERYONE
Well known SID: EVERYONE
-
CREATOR_OWNER
public static SID CREATOR_OWNER
Well known SID: CREATOR_OWNER
-
SYSTEM
public static SID SYSTEM
Well known SID: SYSTEM
-
-
Constructor Detail
-
SID
public SID(byte[] src, int si)
Construct a SID from it's binary representation.- Parameters:
src
-si
-
-
SID
public SID(String textual) throws SmbException
Construct a SID from it's textual representation such as S-1-5-21-1496946806-2192648263-3843101252-1029.- Parameters:
textual
-- Throws:
SmbException
-
SID
public SID(SID domsid, int rid)
Construct a SID from a domain SID and an RID (relative identifier). For example, a domain SID S-1-5-21-1496946806-2192648263-3843101252 and RID 1029 would yield the SID S-1-5-21-1496946806-2192648263-3843101252-1029.- Parameters:
domsid
-rid
-
-
-
Method Detail
-
toByteArray
public static byte[] toByteArray(rpc.sid_t sid)
Convert a sid_t to byte array- Parameters:
sid
-- Returns:
- byte encoded form
-
unwrap
public <T> T unwrap(Class<T> t)
- Specified by:
unwrap
in interfaceSID
- Returns:
- unwrapped instance
- See Also:
SID.unwrap(java.lang.Class)
-
toByteArray
public byte[] toByteArray()
- Returns:
- encoded SID
-
isEmpty
public boolean isEmpty()
- Returns:
- whether the SID is empty (no sub-authorities)
-
isBlank
public boolean isBlank()
- Returns:
- whether the SID is blank (all sub-authorities zero)
-
getDomainSid
public SID getDomainSid()
- Specified by:
getDomainSid
in interfaceSID
- Returns:
- domain SID
-
getRid
public int getRid()
Get the RID This is the last subauthority identifier
-
getType
public int getType()
Description copied from interface:SID
Returns the type of this SID indicating the state or type of account.SID types are described in the following table.
Type Name SID_TYPE_USE_NONE 0 SID_TYPE_USER User SID_TYPE_DOM_GRP Domain group SID_TYPE_DOMAIN Domain SID_TYPE_ALIAS Local group SID_TYPE_WKN_GRP Builtin group SID_TYPE_DELETED Deleted SID_TYPE_INVALID Invalid SID_TYPE_UNKNOWN Unknown
-
getTypeText
public String getTypeText()
Description copied from interface:SID
Return text representing the SID type suitable for display to users. Text includes 'User', 'Domain group', 'Local group', etc.- Specified by:
getTypeText
in interfaceSID
- Returns:
- textual representation of type
-
getDomainName
public String getDomainName()
Description copied from interface:SID
Return the domain name of this SID unless it could not be resolved in which case the numeric representation is returned.- Specified by:
getDomainName
in interfaceSID
- Returns:
- the domain name
-
getAccountName
public String getAccountName()
Description copied from interface:SID
Return the sAMAccountName of this SID unless it could not be resolved in which case the numeric RID is returned. If this SID is a domain SID, this method will return an empty String.- Specified by:
getAccountName
in interfaceSID
- Returns:
- the account name
-
toString
public String toString()
Return the numeric representation of this sid such as S-1-5-21-1496946806-2192648263-3843101252-1029.
-
toDisplayString
public String toDisplayString()
Description copied from interface:SID
Return a String representing this SID ideal for display to users. This method should return the same text that the ACL editor in Windows would display.Specifically, if the SID has been resolved and it is not a domain SID or builtin account, the full DOMAIN\name form of the account will be returned (e.g. MYDOM\alice or MYDOM\Domain Users). If the SID has been resolved but it is is a domain SID, only the domain name will be returned (e.g. MYDOM). If the SID has been resolved but it is a builtin account, only the name component will be returned (e.g. SYSTEM). If the sid cannot be resolved the numeric representation from toString() is returned.
- Specified by:
toDisplayString
in interfaceSID
- Returns:
- display format, potentially with resolved names
-
resolve
public void resolve(String authorityServerName, CIFSContext tc) throws IOException
Manually resolve this SID. Normally SIDs are automatically resolved. However, if a SID is constructed explicitly using a SID constructor, JCIFS will have no knowledge of the server that created the SID and therefore cannot possibly resolve it automatically. In this case, this method will be necessary.- Parameters:
authorityServerName
- The FQDN of the server that is an authority for the SID.tc
- Context to use- Throws:
IOException
-
getGroupMemberSids
public SID[] getGroupMemberSids(String authorityServerName, CIFSContext tc, int flags) throws IOException
Get members of the group represented by this SID, if it is one.- Parameters:
authorityServerName
-tc
-flags
-- Returns:
- the members of the group
- Throws:
IOException
-
initContext
public void initContext(String server, CIFSContext context)
- Parameters:
context
-server
-
-
-