libcli/security: implement SECURITY_GUEST
authorStefan Metzmacher <metze@samba.org>
Wed, 20 Apr 2016 14:29:42 +0000 (16:29 +0200)
committerStefan Metzmacher <metze@samba.org>
Thu, 28 Apr 2016 14:51:17 +0000 (16:51 +0200)
SECURITY_GUEST is not exactly the same as SECURITY_ANONYMOUS.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=11847

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Günther Deschner <gd@samba.org>
libcli/security/security_token.c
libcli/security/security_token.h
libcli/security/session.c
libcli/security/session.h

index 6812d42ba01119a94717c2bf7b5bc23b34e4f590..2e5a87be5043d29d0518bd0ec88da6a320b935d0 100644 (file)
@@ -130,6 +130,11 @@ bool security_token_has_sid_string(const struct security_token *token, const cha
        return ret;
 }
 
+bool security_token_has_builtin_guests(const struct security_token *token)
+{
+       return security_token_has_sid(token, &global_sid_Builtin_Guests);
+}
+
 bool security_token_has_builtin_administrators(const struct security_token *token)
 {
        return security_token_has_sid(token, &global_sid_Builtin_Administrators);
index b8ca990035c8b788874a9df7f45c3234d3ba490a..5c5b30bac1c4ba05479d35449443e0948dd89122 100644 (file)
@@ -51,6 +51,8 @@ bool security_token_has_sid(const struct security_token *token, const struct dom
 
 bool security_token_has_sid_string(const struct security_token *token, const char *sid_string);
 
+bool security_token_has_builtin_guests(const struct security_token *token);
+
 bool security_token_has_builtin_administrators(const struct security_token *token);
 
 bool security_token_has_nt_authenticated_users(const struct security_token *token);
index 0c32556fa446e47f82c292455bfd0aca090da921..0fbb87d584eb5f0e232a1488c13af4c44f8750e2 100644 (file)
@@ -38,6 +38,10 @@ enum security_user_level security_session_user_level(struct auth_session_info *s
                return SECURITY_ANONYMOUS;
        }
 
+       if (security_token_has_builtin_guests(session_info->security_token)) {
+               return SECURITY_GUEST;
+       }
+
        if (security_token_has_builtin_administrators(session_info->security_token)) {
                return SECURITY_ADMINISTRATOR;
        }
index ee9187d2c9be870436f102979616bdee0030b4ca..31e950ed449d0dcd563858d2403ec44196415c53 100644 (file)
@@ -24,6 +24,7 @@
 
 enum security_user_level {
        SECURITY_ANONYMOUS            = 0,
+       SECURITY_GUEST                = 1,
        SECURITY_USER                 = 10,
        SECURITY_RO_DOMAIN_CONTROLLER = 20,
        SECURITY_DOMAIN_CONTROLLER    = 30,