summaryrefslogtreecommitdiffstats
path: root/src/lib/ccapi/msg.c
blob: f5f074aa04beef93a879cdb92b34b322c7572b5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
/* $Copyright:
 *
 * Copyright 2004 by the Massachusetts Institute of Technology.
 * 
 * All rights reserved.
 * 
 * Export of this software from the United States of America may require a
 * specific license from the United States Government.  It is the
 * responsibility of any person or organization contemplating export to
 * obtain such a license before exporting.
 * 
 * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and distribute
 * this software and its documentation for any purpose and without fee is
 * hereby granted, provided that the above copyright notice appear in all
 * copies and that both that copyright notice and this permission notice
 * appear in supporting documentation, and that the name of M.I.T. not be
 * used in advertising or publicity pertaining to distribution of the
 * software without specific, written prior permission.  Furthermore if you
 * modify this software you must label your software as modified software
 * and not distribute it in such a fashion that it might be confused with
 * the original MIT software. M.I.T. makes no representations about the
 * suitability of this software for any purpose.  It is provided "as is"
 * without express or implied warranty.
 * 
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 * 
 * Individual source code files are copyright MIT, Cygnus Support,
 * OpenVision, Oracle, Sun Soft, FundsXpress, and others.
 * 
 * Project Athena, Athena, Athena MUSE, Discuss, Hesiod, Kerberos, Moira,
 * and Zephyr are trademarks of the Massachusetts Institute of Technology
 * (MIT).  No commercial use of these trademarks may be made without prior
 * written permission of MIT.
 * 
 * "Commercial use" means use of a name in a product or other for-profit
 * manner.  It does NOT prevent a commercial firm from referring to the MIT
 * trademarks in order to convey information (although in doing so,
 * recognition of their trademark status should be given).
 * $
 */

/*
 * Verifiable, extensible message format.
 */

#include "CredentialsCache.h"
#include "msg.h"
#include "datastore.h"

#include <stdlib.h>
#include <memory.h>
#include <stdio.h>
#include <string.h>

/**
 * cci_msg_new()
 *
 * Purpose: Allocate and initialize a new cc_msg_t structure
 *
 * Return:  non-NULL, the msg
 *          NULL, failure
 *
 * Errors:  ccErrNoMem
 *
 */
cc_int32
cci_msg_new(cc_uint32 type, cc_msg_t** msgpp) 
{
    // type should be validated.  If invalid set error to ccErrBadParam
    cc_msg_t* msg;
    
    if ( type > CC_MSG_MAX_TYPE || msgpp == NULL )
        return ccErrBadParam;

    msg = (cc_msg_t*)malloc(sizeof(cc_msg_t));
    if (msg == NULL)
        return ccErrNoMem;

    msg->type = type;
    msg->flat = NULL;
    msg->header = NULL;
    msg->flat_len = 0;
    msg->header_len = 0;
    msg->magic = 0;
    cci_generic_list_new(&msg->data_blobs);
    if (msg->data_blobs == NULL) {
        // pass on error from previous call
        free(msg);
        return ccErrNoMem;
    }

    *msgpp = msg;     
    return ccNoError;
}

/**
 * cci_msg_calc_header_size()
 *
 * Purpose: Calculates the size of the header
 *
 * Return:  the size in bytes
 *
 * Errors:  ccErrBadParam
 *
 */
cc_int32
cci_msg_calc_header_size(cc_msg_t* msg, cc_uint32 * lenp) 
{
    int header_len = 12; /* header size, entire size, type */

    if ( msg == NULL || lenp == NULL )
        return ccErrBadParam;

    header_len += msg->header_len;
    *lenp = header_len;
    return ccNoError;
}

/**
 * cci_msg_calc_size()
 *
 * Purpose: Calculates the size of the message
 *          (does not include the magic bytes)
 *
 * Return:  the size in bytes
 *
 * Errors:  ccErrBadParam
 *
 */
cc_int32 
cci_msg_calc_size(cc_msg_t* msg, cc_uint32 * lenp) 
{
    cc_uint32 flat_len;
    cc_generic_list_node_t* gen_node;
    cc_generic_iterate_t* gen_iterator;
	cc_int32 code;

    if ( msg == NULL || lenp == NULL ) 
        return ccErrBadParam;

    code = cci_msg_calc_header_size(msg, &flat_len);
    if (code != ccNoError)
        goto bad;

    code = cci_generic_list_iterator(msg->data_blobs, &gen_iterator);
    if ( code != ccNoError )
        goto bad;

    while (cci_generic_iterate_has_next(gen_iterator)) {
        code = cci_generic_iterate_next(gen_iterator, &gen_node);
        if (code != ccNoError)
            break;
        flat_len += gen_node->len + BLOB_LEN;
    }
    cci_generic_free_iterator(gen_iterator);
    if (code != ccNoError)
        goto bad;

    flat_len += MAGIC_HEAD_LEN + MAGIC_DATA_LEN;
    *lenp = flat_len;

  bad:
    return code;
}

/**
 * cci_msg_add_data_blob()
 *
 * Purpose: Adds 'len' bytes of data to the msg
 *
 * Return: 
 *
 * Errors: 
 *
 */
cc_int32 
cci_msg_add_data_blob(cc_msg_t* msg, void *data, cc_uint32 len, cc_uint32 *lenp) 
{
    cc_int32 code;

    if (msg == NULL || data == NULL || len <= 0 || lenp == NULL)
        return ccErrBadParam;

    code = cci_generic_list_append(msg->data_blobs, data, len, NULL);
    if ( code != ccNoError )
        return code;
    return cci_msg_calc_blob_pos(msg, data, len, lenp);
}

/**
 * cc_msg_
 *
 * Purpose:
 *
 * Return: 
 *
 * Errors: 
 *
 */
cc_int32 
cci_msg_calc_blob_pos(cc_msg_t* msg, void *data, cc_uint32 len, cc_uint32 * posp) 
{
    cc_uint32 pos;
    cc_generic_list_node_t* gen_node;
    cc_generic_iterate_t* gen_iterator;
    cc_int32 code;

    code = cci_msg_calc_header_size(msg, &pos);
    pos += sizeof(cc_uint32); /*+ sizeof(cc_uint32) for magic*/

    code = cci_generic_list_iterator(msg->data_blobs, &gen_iterator);
    while (cci_generic_iterate_has_next(gen_iterator)) {
        code = cci_generic_iterate_next(gen_iterator, &gen_node);
        if (gen_node->len != len && gen_node->data != data) {
            pos += gen_node->len + sizeof(cc_uint32);
        } else {
            cci_generic_free_iterator(gen_iterator);
            *posp = pos + sizeof(cc_uint32);
            return ccNoError;
        }
    }
    
    cci_generic_free_iterator(gen_iterator);
    return ccIteratorEnd;
}

/**
 * cc_msg_
 *
 * Purpose:
 *
 * Return: 
 *
 * Errors: 
 *
 */
cc_int32 
cci_msg_add_header(cc_msg_t* msg, void *header, cc_uint32 header_len) 
{
    if ( msg == NULL || header == NULL )
        return ccErrBadParam;

    msg->header = header;
    msg->header_len = header_len;
    return ccNoError;
}


/**
 * cc_msg_
 *
 * Purpose:
 *
 * Return: 
 *
 * Errors: 
 *
 */
cc_int32
cci_msg_flatten(cc_msg_t* msg, void **flatpp) 
{
    cc_generic_list_node_t* gen_node;
    cc_generic_iterate_t* gen_iterator;
    char *cur_pos;
    cc_uint32 zero = 0;
    cc_uint32 magic = 0;
    cc_uint32 msg_len;
    cc_int32 code;

    if (msg == NULL || flatpp == NULL)
        return ccErrBadParam;

    code = cci_msg_calc_size(msg,&msg->flat_len);
    if ( code != ccNoError )
        return code;

    if (msg->flat_len > CC_MSG_MAX_SIZE)
        return ccErrBadParam;

    msg->flat = (void *)malloc(msg->flat_len);
    if (msg->flat == NULL)
        return ccErrNoMem;
    
    cur_pos = msg->flat;

    memcpy(cur_pos,&msg->header_len,sizeof(cc_uint32));
    cur_pos+=sizeof(cc_uint32);

    memcpy(cur_pos,&msg->flat_len,sizeof(cc_uint32));
    cur_pos+=sizeof(cc_uint32);

    memcpy(cur_pos,&msg->type,sizeof(cc_uint32));
    cur_pos+=sizeof(cc_uint32);

    memcpy(cur_pos, msg->header, msg->header_len);
    cur_pos += msg->header_len;

    memcpy(cur_pos, &zero, sizeof(cc_uint32)); /*will be magic number later*/
    cur_pos += sizeof(cc_uint32);

    code = cci_generic_list_iterator(msg->data_blobs,&gen_iterator);
    if ( code != ccNoError ) {
        free(msg->flat);
        return code;
    }

    while (cci_generic_iterate_has_next(gen_iterator)) {
        code = cci_generic_iterate_next(gen_iterator, &gen_node);
        if (code != ccNoError) {
            free(gen_iterator);
            free(msg->flat);
            return code;
        }
        memcpy(cur_pos, &gen_node->len, sizeof(cc_uint32));
        cur_pos+=sizeof(cc_uint32);
		
        memcpy(cur_pos, gen_node->data, gen_node->len);
        cur_pos += gen_node->len;
    }
    free(gen_iterator);

    memcpy(cur_pos, &zero, sizeof(cc_uint32)); /*magic number will go here later*/
    cur_pos += sizeof(cc_uint32);

    if (cur_pos - (char *)msg->flat != msg->flat_len) {
        printf("ERRORR cur_pos - msg->flat = %d\n",msg->flat_len);
    }

    cci_msg_calc_magic(msg->flat, msg->flat_len, &magic);
    printf("magic = %d\n",magic);
	
    cci_msg_calc_header_size(msg, &msg_len);
    memcpy((char *)msg->flat + msg_len, &magic, sizeof(cc_uint32));
    memcpy((char *)msg->flat + msg->flat_len - sizeof(cc_uint32), &magic, sizeof(cc_uint32));

    if ( flatpp != NULL )
        *flatpp = msg->flat;
    return ccNoError;
}

/**
 * cc_msg_
 *
 * Purpose:
 *
 * Return: 
 *
 * Errors: 
 *
 */
cc_int32
cci_msg_calc_magic(void *flat, int flat_len, cc_uint32 * magicp)
{
    cc_uint32 magic = 0;
    int i;
	
    for (i = 0; i < flat_len; i += sizeof(cc_uint32)) {
        magic = magic ^ *(int *)((char *)flat + i);
    }
    *magicp = magic;
    return ccNoError;
}

/**
 * cc_msg_
 *
 * Purpose:
 *
 * Return: 
 *
 * Errors: 
 *
 */
cc_int32 
cci_msg_verify(void *flat, int flat_len, cc_uint32 * validp)  
{
    cc_uint32 *magic1, *magic2;
    cc_uint32 *pheader_len;
    cc_uint32 *ptotal_len;
    cc_uint32 *pblob_len;
    cc_uint32 *ptype;
    cc_uint32 num_blobs = 0;
    cc_uint32 zero = 0;
    cc_uint32 msg_magic, msg_magic2;

    if (flat == NULL || flat_len <= 0 || validp == NULL)
        return ccErrBadParam;

    pheader_len = flat;
    ptotal_len = (cc_uint32 *)((char *)pheader_len + sizeof(cc_uint32));
    ptype = (cc_uint32 *)((char *)ptotal_len + sizeof(cc_uint32));

    if (*ptotal_len != flat_len) {
        *validp = 0;
        return ccNoError;
    }
    
    if (*pheader_len > flat_len) {
        /*too weak. We could verify header_len against type spec header.*/
        *validp = 0;
        return ccNoError;
    }
    if (*ptype > CC_MSG_MAX_TYPE) {
        *validp = 0;
        return ccNoError;
    }

    magic1 = (cc_uint32 *)((char *)ptype + sizeof(cc_uint32) + *pheader_len); 
    if ((char *)magic1 - (char *)flat == (flat_len - 8)) {
        /*There are no data blobs*/
        magic2 = (cc_uint32 *)((char *)magic1 + sizeof(cc_uint32));
        num_blobs = 0;
    } else {
        pblob_len = (cc_uint32 *)((char *)magic1 + sizeof(cc_uint32));
        num_blobs = 1;

        while (*pblob_len + sizeof(cc_uint32) + ((char *)pblob_len - (char *)flat) < (flat_len - sizeof(cc_uint32))) {
            pblob_len = (cc_uint32 *)((char *)pblob_len + *pblob_len + sizeof(cc_uint32));
            num_blobs++;
        }

        if (*pblob_len + sizeof(cc_uint32) + ((char *)pblob_len - (char *)flat) != (flat_len - sizeof(cc_uint32))) {
            /*blobs didn't line up*/
            *validp = 0;
            return ccNoError;
        }
        magic2 = (cc_uint32 *)((char *)pblob_len + *pblob_len + sizeof(cc_uint32)); /*2nd magic should be directly after the last blob*/
    }
	
    if (*magic1 != *magic2) {
        *validp = 0;
        return ccNoError;
    }
    msg_magic = *magic1;

    printf("%d %d\n", (char *)magic1 - (char *)flat, (char *)magic2 - (char *)flat);

    memcpy(magic1, &zero, sizeof(cc_uint32));
    memcpy(magic2, &zero, sizeof(cc_uint32));
    cci_msg_calc_magic(flat, flat_len, &msg_magic2);
    if (msg_magic != msg_magic2) {
        *validp = 0;
        return ccNoError;
    }
    memcpy(magic1, &msg_magic, sizeof(cc_uint32));
    memcpy(magic2, &msg_magic, sizeof(cc_uint32));

    *validp = 1;
    return ccNoError;
}

/**
 * cc_msg_
 *
 * Purpose:
 *
 * Return: 
 *
 * Errors: 
 *
 */
cc_int32
cci_msg_unflatten(void *flat, int flat_len, cc_msg_t** msgpp) 
{
    cc_msg_t* msg;
    char *cur_pos;
    cc_uint32 blob_len;
    char *blob;
    cc_uint32 valid;
    cc_int32 code;

    if ( flat == NULL || flat_len <= 0 || msgpp == NULL )
        return ccErrBadParam;

    code = cci_msg_new(0, &msg);
    if (code)
        return code;

    cci_msg_verify(flat, flat_len, &valid);
    if (valid != 1) {
        cci_msg_destroy(msg);
        return ccErrBadParam;
    }

    cur_pos = flat;
    msg->flat = flat;

    msg->header_len = *(cc_uint32 *)cur_pos;
    cur_pos += sizeof(cc_uint32);

    msg->flat_len = *(cc_uint32 *)cur_pos;
    cur_pos += sizeof(cc_uint32);

    msg->type = *(cc_uint32 *)cur_pos;
    cur_pos += sizeof(cc_uint32);

    msg->header = (void *)malloc(msg->header_len);
    if (msg->header == NULL) {
        cci_msg_destroy(msg);
        return ccErrNoMem;
    }
    memcpy(msg->header, cur_pos, msg->header_len);
    cur_pos += msg->header_len;
	
    msg->magic = *(cc_uint32 *)cur_pos;
    cur_pos += sizeof(cc_uint32);

    if (cur_pos - (char *)flat != flat_len - 8) { /*at least 1 blob*/
        blob_len = *(cc_uint32 *)cur_pos;
        while (blob_len + (cur_pos - (char *)flat) + sizeof(cc_uint32) <= flat_len - sizeof(cc_uint32)) {
            blob = (void *)malloc(blob_len);
            if (blob == NULL) {
                cci_msg_destroy(msg);
                return ccErrNoMem;
            }
            memcpy(blob, cur_pos + sizeof(cc_uint32), blob_len);
            cci_generic_list_append(msg->data_blobs, blob, blob_len, NULL);

            cur_pos += sizeof(cc_uint32) + blob_len;
            blob_len = *(int *)cur_pos;
        }
    }
    *msgpp = msg;
    return ccNoError;
}

cc_int32
cci_msg_retrieve_blob(cc_msg_t* msg, cc_uint32 blob_offset, cc_uint32 blob_len, void **blobp) 
{
    cc_generic_iterate_t*	gen_iterator;
    cc_generic_list_node_t*	gen_node;
    void *ret;
    cc_uint32                   blob_pos;
    cc_int32                    code;

    /*Ensure that the message has been unflattened*/
    if ( msg == NULL || msg->flat == NULL || blob_offset > msg->flat_len || 
         blob_len > msg->flat_len - blob_offset || blobp == NULL)
        return ccErrBadParam;

    code = cci_generic_list_iterator(msg->data_blobs, &gen_iterator);
    while (cci_generic_iterate_has_next(gen_iterator)) {
        code = cci_generic_iterate_next(gen_iterator, &gen_node);
        code = cci_msg_calc_blob_pos(msg, gen_node->data, gen_node->len, &blob_pos);
        if (blob_pos == blob_offset && gen_node->len == blob_len)  {
            free(gen_iterator);
            ret = (void *)malloc(blob_len);
            if (ret == NULL)
                return ccErrNoMem;
            memcpy(ret,(char *)msg->flat + blob_offset, blob_len);	
            *blobp = ret;
            return ccNoError;
        }
    }
    free(gen_iterator);
    return ccIteratorEnd;
}

/**
 * cc_msg_
 *
 * Purpose:
 *
 * Return: 
 *
 * Errors: 
 *
 */
cc_int32 
cci_msg_destroy(cc_msg_t* msg) 
{
    if (msg->flat != NULL) 
        free(msg->flat);
    if (msg->header != NULL)
        free(msg->flat);
    cci_generic_list_destroy(msg->data_blobs);
    free(msg);
    return ccNoError;
}

r">"If a shell stored in central directory is allowed but not available, use " "this fallback" msgstr "" "Als een shell opgeslagen in de centrale map toegestaan is, maar niet " "beschikbaar, gebruik dan deze" #: src/config/SSSDConfig/__init__.py.in:73 msgid "Shell to use if the provider does not list one" msgstr "Te gebruiken shell als de aanbieder er geen aangeeft " #: src/config/SSSDConfig/__init__.py.in:74 msgid "How long will be in-memory cache records valid" msgstr "Hoe lang zullen cache records in het geheugen geldig blijven" #: src/config/SSSDConfig/__init__.py.in:77 msgid "How long to allow cached logins between online logins (days)" msgstr "Hoe lang zijn cached logins toegestaan tussen online logins (in dagen)" #: src/config/SSSDConfig/__init__.py.in:78 msgid "How many failed logins attempts are allowed when offline" msgstr "Hoe veel mislukte inlogpogingen zijn toegestaan in offline-modus" #: src/config/SSSDConfig/__init__.py.in:79 msgid "" "How long (minutes) to deny login after offline_failed_login_attempts has " "been reached" msgstr "" "Hoe lang (in minuten) logins weigeren nadat offline_failed_login_attempts is " "bereikt" #: src/config/SSSDConfig/__init__.py.in:80 msgid "What kind of messages are displayed to the user during authentication" msgstr "" "Welke boodschappen worden aan de gebruiker getoond tijdens authenticatie" #: src/config/SSSDConfig/__init__.py.in:81 msgid "How many seconds to keep identity information cached for PAM requests" msgstr "" "Hoeveel seconden moet de identiteit informatie in cache opgeslagen worden " "voor PAN aanvragen" #: src/config/SSSDConfig/__init__.py.in:82 msgid "How many days before password expiration a warning should be displayed" msgstr "" "Hoeveel dagen voor het verlopen van het wachtwoord moet een waarschuwing " "getoond worden" #: src/config/SSSDConfig/__init__.py.in:85 msgid "Whether to evaluate the time-based attributes in sudo rules" msgstr "" "Of de tijd-gebaseerde attributen in sudo regels moeten worden geëvalueerd" #: src/config/SSSDConfig/__init__.py.in:91 msgid "Whether to hash host names and addresses in the known_hosts file" msgstr "" "Moeten host namen en adressen gehashd worden in het known_hosts bestand" #: src/config/SSSDConfig/__init__.py.in:92 msgid "" "How many seconds to keep a host in the known_hosts file after its host keys " "were requested" msgstr "" "Hoeveel seconden moet een host in het known_hosts bestand blijven nadat de " "host sleutels ervan werden aangevraagd" #: src/config/SSSDConfig/__init__.py.in:95 msgid "List of UIDs or user names allowed to access the PAC responder" msgstr "" "Lijst met UID's of gebruikersnamen waarvoor toegang tot de PAC responder " "toegestaan is" #: src/config/SSSDConfig/__init__.py.in:98 msgid "Identity provider" msgstr "Identiteitaanbieder" #: src/config/SSSDConfig/__init__.py.in:99 msgid "Authentication provider" msgstr "Authentiecatieaanbieder" #: src/config/SSSDConfig/__init__.py.in:100 msgid "Access control provider" msgstr "Toegangscontroleaanbieder" #: src/config/SSSDConfig/__init__.py.in:101 msgid "Password change provider" msgstr "Wachtwoordwijzigingsaanbieder" #: src/config/SSSDConfig/__init__.py.in:102 msgid "SUDO provider" msgstr "SUDO provider" #: src/config/SSSDConfig/__init__.py.in:103 msgid "Autofs provider" msgstr "Autofs provider" #: src/config/SSSDConfig/__init__.py.in:104 msgid "Session-loading provider" msgstr "Session-loading provider" #: src/config/SSSDConfig/__init__.py.in:105 msgid "Host identity provider" msgstr "Host identity provider" #: src/config/SSSDConfig/__init__.py.in:108 msgid "Minimum user ID" msgstr "Minimum gebruiker ID" #: src/config/SSSDConfig/__init__.py.in:109 msgid "Maximum user ID" msgstr "Maximum gebruiker ID" #: src/config/SSSDConfig/__init__.py.in:110 msgid "Enable enumerating all users/groups" msgstr "Schakel enumeratie van alle gebruikers/groepen" #: src/config/SSSDConfig/__init__.py.in:111 msgid "Cache credentials for offline login" msgstr "Cache inloggegevens voor offline gebruik" #: src/config/SSSDConfig/__init__.py.in:112 msgid "Store password hashes" msgstr "Sla vingerafdrukken van wachtwoorden op" #: src/config/SSSDConfig/__init__.py.in:113 msgid "Display users/groups in fully-qualified form" msgstr "Laat gebruikers/groepen in volledige vorm zien" #: src/config/SSSDConfig/__init__.py.in:114 #: src/config/SSSDConfig/__init__.py.in:121 #: src/config/SSSDConfig/__init__.py.in:122 #: src/config/SSSDConfig/__init__.py.in:123 #: src/config/SSSDConfig/__init__.py.in:124 #: src/config/SSSDConfig/__init__.py.in:125 #: src/config/SSSDConfig/__init__.py.in:126 msgid "Entry cache timeout length (seconds)" msgstr "Entry cache timeout duur (in seconden)" #: src/config/SSSDConfig/__init__.py.in:115 msgid "" "Restrict or prefer a specific address family when performing DNS lookups" msgstr "" "Beperk of geef de voorkeur aan een specifieke adresfamilie wanneer er DNS-" "lookups uitgevoerd worden" #: src/config/SSSDConfig/__init__.py.in:116 msgid "How long to keep cached entries after last successful login (days)" msgstr "" "Hoe lang blijven gegevens opgeslagen na een succesvolle login (in dagen)" #: src/config/SSSDConfig/__init__.py.in:117 msgid "How long to wait for replies from DNS when resolving servers (seconds)" msgstr "" "Hoe lang te wachten op antwoord van de DSN bij het opzoeken van servers (in " "seconden)" #: src/config/SSSDConfig/__init__.py.in:118 msgid "The domain part of service discovery DNS query" msgstr "Het domeingedeelte van DNS queries die service discovery uitvoeren" #: src/config/SSSDConfig/__init__.py.in:119 msgid "Override GID value from the identity provider with this value" msgstr "Overschrijf GID waarde van de identiteit aanbieder met deze waarde" #: src/config/SSSDConfig/__init__.py.in:120 msgid "Treat usernames as case sensitive" msgstr "Behandel gebruikersnamen als hoofdlettergevoelig" #: src/config/SSSDConfig/__init__.py.in:129 msgid "IPA domain" msgstr "IPA-domein" #: src/config/SSSDConfig/__init__.py.in:130 msgid "IPA server address" msgstr "IPA-serveradres" #: src/config/SSSDConfig/__init__.py.in:131 msgid "Address of backup IPA server" msgstr "Adres van back-up IPA server" #: src/config/SSSDConfig/__init__.py.in:132 msgid "IPA client hostname" msgstr "IPA-clienthostname" #: src/config/SSSDConfig/__init__.py.in:133 msgid "Whether to automatically update the client's DNS entry in FreeIPA" msgstr "" "Of de DNS-gegevens van de client automatisch bijgewerkt moeten worden in " "FreeIPA" #: src/config/SSSDConfig/__init__.py.in:134 msgid "The interface whose IP should be used for dynamic DNS updates" msgstr "" "De adapter wiens IP-adres gebruikt moet worden voor het dynamisch bijwerken " "van de DNS" #: src/config/SSSDConfig/__init__.py.in:135 msgid "Search base for HBAC related objects" msgstr "Zoek basis voor HBAC gerelateerde objecten" #: src/config/SSSDConfig/__init__.py.in:136 msgid "" "The amount of time between lookups of the HBAC rules against the IPA server" msgstr "De tijdsduur tussen het opzoeken van HBAC regels voor de IPA server" #: src/config/SSSDConfig/__init__.py.in:137 msgid "If DENY rules are present, either DENY_ALL or IGNORE" msgstr "Als DENY regels aanwezig zijn, dat DENY_ALL of IGNORE" #: src/config/SSSDConfig/__init__.py.in:138 msgid "If set to false, host argument given by PAM will be ignored" msgstr "" "Als dit op false ingesteld is, wordt het host argument gegeven door PAM " "genegeerd" #: src/config/SSSDConfig/__init__.py.in:139 msgid "The automounter location this IPA client is using" msgstr "De automounter locatie die door deze IPA client wordt gebruikt" #: src/config/SSSDConfig/__init__.py.in:140 msgid "Search base for object containing info about IPA domain" msgstr "Zoek in base voor object die info over IPA domein bevat " #: src/config/SSSDConfig/__init__.py.in:141 msgid "Search base for objects containing info about ID ranges" msgstr "Zoek in base voor objecten die info over ID bereiken bevat" #: src/config/SSSDConfig/__init__.py.in:144 msgid "Active Directory domain" msgstr "Active Directory domein" #: src/config/SSSDConfig/__init__.py.in:145 msgid "Active Directory server address" msgstr "Active Directory server adres" #: src/config/SSSDConfig/__init__.py.in:146 msgid "Active Directory backup server address" msgstr "Active Directory back-up server adres" #: src/config/SSSDConfig/__init__.py.in:147 msgid "Active Directory client hostname" msgstr "Active Directory cliënt hostnaam" #: src/config/SSSDConfig/__init__.py.in:150 #: src/config/SSSDConfig/__init__.py.in:151 msgid "Kerberos server address" msgstr "Kerberos-serveradres" #: src/config/SSSDConfig/__init__.py.in:152 msgid "Kerberos backup server address" msgstr "Kerberos back-up server adres" #: src/config/SSSDConfig/__init__.py.in:153 msgid "Kerberos realm" msgstr "Kerberos-rijk" #: src/config/SSSDConfig/__init__.py.in:154 msgid "Authentication timeout" msgstr "Authenticatie timeout" #: src/config/SSSDConfig/__init__.py.in:157 msgid "Directory to store credential caches" msgstr "Werkmap waar authenticatiegegevens opgeslagen worden" #: src/config/SSSDConfig/__init__.py.in:158 msgid "Location of the user's credential cache" msgstr "Locatie van de authenticatiecache van de gebruiker" #: src/config/SSSDConfig/__init__.py.in:159 msgid "Location of the keytab to validate credentials" msgstr "Locatie van de keytab om authenticatiegegevens te valideren" #: src/config/SSSDConfig/__init__.py.in:160 msgid "Enable credential validation" msgstr "Schakel authenticatiegegevensvalidatie in" #: src/config/SSSDConfig/__init__.py.in:161 msgid "Store password if offline for later online authentication" msgstr "" "Sla het wachtwoord op indien offline voor later gebruik bij online " "authenticatie" #: src/config/SSSDConfig/__init__.py.in:162 msgid "Renewable lifetime of the TGT" msgstr "Vernieuwbare levensduur van de TGT" #: src/config/SSSDConfig/__init__.py.in:163 msgid "Lifetime of the TGT" msgstr "Levensduur van de TGT" #: src/config/SSSDConfig/__init__.py.in:164 msgid "Time between two checks for renewal" msgstr "Tijd tussen twee checks voor vernieuwing" #: src/config/SSSDConfig/__init__.py.in:165 msgid "Enables FAST" msgstr "Zet FAST aan" #: src/config/SSSDConfig/__init__.py.in:166 msgid "Selects the principal to use for FAST" msgstr "Selecteert de hoofdpersoon te gebruiken voor FAST " #: src/config/SSSDConfig/__init__.py.in:167 msgid "Enables principal canonicalization" msgstr "Zet hoofdpersoon sanctioneren aan" #: src/config/SSSDConfig/__init__.py.in:170 #: src/config/SSSDConfig/__init__.py.in:171 msgid "Server where the change password service is running if not on the KDC" msgstr "" "Server waar het wachtwoord wijzigingsservice draait indien niet op de KDC" #: src/config/SSSDConfig/__init__.py.in:174 msgid "ldap_uri, The URI of the LDAP server" msgstr "ldap_uri, de URI van de LDAP server" #: src/config/SSSDConfig/__init__.py.in:175 msgid "ldap_backup_uri, The URI of the LDAP server" msgstr "ldap_backup_uri, De URI van de LDAP server" #: src/config/SSSDConfig/__init__.py.in:176 msgid "The default base DN" msgstr "De standaard base DN" #: src/config/SSSDConfig/__init__.py.in:177 msgid "The Schema Type in use on the LDAP server, rfc2307" msgstr "Het schema type wat gebruikt wordt op de LDAP server, rfc2307" #: src/config/SSSDConfig/__init__.py.in:178 msgid "The default bind DN" msgstr "De standaard bind DN" #: src/config/SSSDConfig/__init__.py.in:179 msgid "The type of the authentication token of the default bind DN" msgstr "Het type authenticatietoken van de standaard bind DN" #: src/config/SSSDConfig/__init__.py.in:180 msgid "The authentication token of the default bind DN" msgstr "Het authenticatietoken van de standaard bind DN" #: src/config/SSSDConfig/__init__.py.in:181 msgid "Length of time to attempt connection" msgstr "Hoe lang pogen te verbinden" #: src/config/SSSDConfig/__init__.py.in:182 msgid "Length of time to attempt synchronous LDAP operations" msgstr "Hoe lang proberen synchroon LDAP te benaderen" #: src/config/SSSDConfig/__init__.py.in:183 msgid "Length of time between attempts to reconnect while offline" msgstr "" "Duur tussen pogingen om de verbinding opnieuw tot stand te brengen tijdens " "offline zijn" #: src/config/SSSDConfig/__init__.py.in:184 msgid "Use only the upper case for realm names" msgstr "Gebruik alleen hoofdletters voor gebiedsnamen" #: src/config/SSSDConfig/__init__.py.in:185 msgid "File that contains CA certificates" msgstr "Bestand dat de bekende CA-certificaten bevat" #: src/config/SSSDConfig/__init__.py.in:186 msgid "Path to CA certificate directory" msgstr "Pad naar de CA-certificatenmap" #: src/config/SSSDConfig/__init__.py.in:187 msgid "File that contains the client certificate" msgstr "Bestand dat het client certificaat bevat" #: src/config/SSSDConfig/__init__.py.in:188 msgid "File that contains the client key" msgstr "Bestand dat de client sleutel bevat" #: src/config/SSSDConfig/__init__.py.in:189 msgid "List of possible ciphers suites" msgstr "Lijst van mogelijke sleutel suites" #: src/config/SSSDConfig/__init__.py.in:190 msgid "Require TLS certificate verification" msgstr "Vereis verificatie van het TLS-certificaat" #: src/config/SSSDConfig/__init__.py.in:191 msgid "Specify the sasl mechanism to use" msgstr "Geef het SASL-mechanisme op wat gebruikt moet worden" #: src/config/SSSDConfig/__init__.py.in:192 msgid "Specify the sasl authorization id to use" msgstr "Geef het SASL-authorisatie-ID op wat gebruikt moet worden" #: src/config/SSSDConfig/__init__.py.in:193 msgid "Specify the sasl authorization realm to use" msgstr "Specificeer het te gebruiken sasl autorisatiegebied " #: src/config/SSSDConfig/__init__.py.in:194 msgid "Specify the minimal SSF for LDAP sasl authorization" msgstr "Specificeer de minimale SSF voor LDAP sasl autorisatie" #: src/config/SSSDConfig/__init__.py.in:195 msgid "Kerberos service keytab" msgstr "Kerberos service keytab" #: src/config/SSSDConfig/__init__.py.in:196 msgid "Use Kerberos auth for LDAP connection" msgstr "Gebruik Kerberos authenticatie voor LDAP-connectie" #: src/config/SSSDConfig/__init__.py.in:197 msgid "Follow LDAP referrals" msgstr "Volg LDAP-doorverwijzingen" #: src/config/SSSDConfig/__init__.py.in:198 msgid "Lifetime of TGT for LDAP connection" msgstr "Levensduur van TGT voor LDAP-connectie" #: src/config/SSSDConfig/__init__.py.in:199 msgid "How to dereference aliases" msgstr "Hoe moet de alias referentie verwijderd worden" #: src/config/SSSDConfig/__init__.py.in:200 msgid "Service name for DNS service lookups" msgstr "Service naam voor DNS service opzoeken" #: src/config/SSSDConfig/__init__.py.in:201 msgid "The number of records to retrieve in a single LDAP query" msgstr "" "Het aantal records dat opgehaald moet worden met een enkele LDAP bevraging" #: src/config/SSSDConfig/__init__.py.in:202 msgid "The number of members that must be missing to trigger a full deref" msgstr "" "Het aantal leden van moet ontbreken om een volledige de-referentie te " "veroorzaken" #: src/config/SSSDConfig/__init__.py.in:203 msgid "" "Whether the LDAP library should perform a reverse lookup to canonicalize the " "host name during a SASL bind" msgstr "" "Moet de LDAP bibliotheek omgekeerd opzoeken uitvoeren om de hostnaam te " "autoriseren tijdens een SASL binding" #: src/config/SSSDConfig/__init__.py.in:205 msgid "entryUSN attribute" msgstr "entryUSN attribuut" #: src/config/SSSDConfig/__init__.py.in:206 msgid "lastUSN attribute" msgstr "lastUSN attribuut" #: src/config/SSSDConfig/__init__.py.in:208 msgid "How long to retain a connection to the LDAP server before disconnecting" msgstr "" "Hoe lang een verbinding met de LDAP server gebouden moet blijven voordat het " "losgekoppeld wordt" #: src/config/SSSDConfig/__init__.py.in:210 msgid "Disable the LDAP paging control" msgstr "Het LDAP paging besturingselement uitschakelen" #: src/config/SSSDConfig/__init__.py.in:213 msgid "Length of time to wait for a search request" msgstr "Tijd om te wachten op een zoekopdracht" #: src/config/SSSDConfig/__init__.py.in:214 msgid "Length of time to wait for a enumeration request" msgstr "Tijdsduur te wachten voor een opsommingsverzoek" #: src/config/SSSDConfig/__init__.py.in:215 msgid "Length of time between enumeration updates" msgstr "Tijd om te wachten tussen enumeratie-updates" #: src/config/SSSDConfig/__init__.py.in:216 msgid "Length of time between cache cleanups" msgstr "Tijdsduur tussen cache opschoningen" #: src/config/SSSDConfig/__init__.py.in:217 msgid "Require TLS for ID lookups" msgstr "Vereis TLS voor het opzoeken van ID's" #: src/config/SSSDConfig/__init__.py.in:218 msgid "Use ID-mapping of objectSID instead of pre-set IDs" msgstr "Gebruik ID-mapping van objectSID gebruiken in plaats van pre-set ID's" #: src/config/SSSDConfig/__init__.py.in:219 msgid "Base DN for user lookups" msgstr "Base DN voor het opzoeken van gebruikers" #: src/config/SSSDConfig/__init__.py.in:220 msgid "Scope of user lookups" msgstr "Scope voor het opzoeken van gebruikers" #: src/config/SSSDConfig/__init__.py.in:221 msgid "Filter for user lookups" msgstr "Filter voor het opzoeken van gebruikers" #: src/config/SSSDConfig/__init__.py.in:222 msgid "Objectclass for users" msgstr "Objectclass voor gebruikers" #: src/config/SSSDConfig/__init__.py.in:223 msgid "Username attribute" msgstr "Username-attribuut" #: src/config/SSSDConfig/__init__.py.in:225 msgid "UID attribute" msgstr "UID-attribuut" #: src/config/SSSDConfig/__init__.py.in:226 msgid "Primary GID attribute" msgstr "Primair GID-attribuut" #: src/config/SSSDConfig/__init__.py.in:227 msgid "GECOS attribute" msgstr "GECOS-attribuut" #: src/config/SSSDConfig/__init__.py.in:228 msgid "Home directory attribute" msgstr "Gebruikersmap-attribuut" #: src/config/SSSDConfig/__init__.py.in:229 msgid "Shell attribute" msgstr "Shell-attribuut" #: src/config/SSSDConfig/__init__.py.in:230 msgid "UUID attribute" msgstr "UUID-attribuut" #: src/config/SSSDConfig/__init__.py.in:231 #: src/config/SSSDConfig/__init__.py.in:267 msgid "objectSID attribute" msgstr "objectSID attribuut" #: src/config/SSSDConfig/__init__.py.in:232 msgid "Active Directory primary group attribute for ID-mapping" msgstr "Active Directory primaire groep attribuut voor ID-mapping" #: src/config/SSSDConfig/__init__.py.in:233 msgid "User principal attribute (for Kerberos)" msgstr "Userprincipal-attribuut (voor Kerberos)" #: src/config/SSSDConfig/__init__.py.in:234 msgid "Full Name" msgstr "Volledige naam" #: src/config/SSSDConfig/__init__.py.in:235 msgid "memberOf attribute" msgstr "memberOf-attribuut" #: src/config/SSSDConfig/__init__.py.in:236 msgid "Modification time attribute" msgstr "Modification time-attribuut" #: src/config/SSSDConfig/__init__.py.in:238 msgid "shadowLastChange attribute" msgstr "shadowLastChange attribuut" #: src/config/SSSDConfig/__init__.py.in:239 msgid "shadowMin attribute" msgstr "shadowMin attribuut" #: src/config/SSSDConfig/__init__.py.in:240 msgid "shadowMax attribute" msgstr "shadowMax attribuut" #: src/config/SSSDConfig/__init__.py.in:241 msgid "shadowWarning attribute" msgstr "shadowWarning attribuut" #: src/config/SSSDConfig/__init__.py.in:242 msgid "shadowInactive attribute" msgstr "shadowInactive attribuut" #: src/config/SSSDConfig/__init__.py.in:243 msgid "shadowExpire attribute" msgstr "shadowExpire attribuut" #: src/config/SSSDConfig/__init__.py.in:244 msgid "shadowFlag attribute" msgstr "shadowFlag attribuut" #: src/config/SSSDConfig/__init__.py.in:245 msgid "Attribute listing authorized PAM services" msgstr "Attribuut voor tonen van geautoriseerde PAM services" #: src/config/SSSDConfig/__init__.py.in:246 msgid "Attribute listing authorized server hosts" msgstr "Attribuut dat geautoriseerde server hosts toont" #: src/config/SSSDConfig/__init__.py.in:247 msgid "krbLastPwdChange attribute" msgstr "krbLastPwdChange attribuut" #: src/config/SSSDConfig/__init__.py.in:248 msgid "krbPasswordExpiration attribute" msgstr "krbPasswordExpiration attribuut" #: src/config/SSSDConfig/__init__.py.in:249 msgid "Attribute indicating that server side password policies are active" msgstr "Attribuut welke aangeeft dat wachtwoordtactiek op de server actief is" #: src/config/SSSDConfig/__init__.py.in:250 msgid "accountExpires attribute of AD" msgstr "accountExpires attribuut van AD" #: src/config/SSSDConfig/__init__.py.in:251 msgid "userAccountControl attribute of AD" msgstr "userAccountControl attribuut van AD" #: src/config/SSSDConfig/__init__.py.in:252 msgid "nsAccountLock attribute" msgstr "nsAccountLock attribuut" #: src/config/SSSDConfig/__init__.py.in:253 msgid "loginDisabled attribute of NDS" msgstr "loginDisabled attribuut van NDS" #: src/config/SSSDConfig/__init__.py.in:254 msgid "loginExpirationTime attribute of NDS" msgstr "loginExpirationTime attribuut van NDS" #: src/config/SSSDConfig/__init__.py.in:255 msgid "loginAllowedTimeMap attribute of NDS" msgstr "loginAllowedTimeMap attribuut van NDS" #: src/config/SSSDConfig/__init__.py.in:256 msgid "SSH public key attribute" msgstr "SSH publieke sleutel attribuut" #: src/config/SSSDConfig/__init__.py.in:258 msgid "Base DN for group lookups" msgstr "Basis DN voor groep opzoeken" #: src/config/SSSDConfig/__init__.py.in:261 msgid "Objectclass for groups" msgstr "Objectklasse voor groepen" #: src/config/SSSDConfig/__init__.py.in:262 msgid "Group name" msgstr "Groepsnaam" #: src/config/SSSDConfig/__init__.py.in:263 msgid "Group password" msgstr "Groep wachtwoord" #: src/config/SSSDConfig/__init__.py.in:264 msgid "GID attribute" msgstr "GID attribuut" #: src/config/SSSDConfig/__init__.py.in:265 msgid "Group member attribute" msgstr "Groep deelnemer attribuut" #: src/config/SSSDConfig/__init__.py.in:266 msgid "Group UUID attribute" msgstr "Groep UUID attribuut" #: src/config/SSSDConfig/__init__.py.in:268 msgid "Modification time attribute for groups" msgstr "Verandertijd attribuut voor groepen" #: src/config/SSSDConfig/__init__.py.in:270 msgid "Maximum nesting level SSSd will follow" msgstr "Maximale nest niveau dat SSSd zal volgen" #: src/config/SSSDConfig/__init__.py.in:272 msgid "Base DN for netgroup lookups" msgstr "Basis DN voor netgroep opzoeken" #: src/config/SSSDConfig/__init__.py.in:273 msgid "Objectclass for netgroups" msgstr "Objectklasse voor netgroepen" #: src/config/SSSDConfig/__init__.py.in:274 msgid "Netgroup name" msgstr "Netgroep naam" #: src/config/SSSDConfig/__init__.py.in:275 msgid "Netgroups members attribute" msgstr "Netgroep leden attribuut" #: src/config/SSSDConfig/__init__.py.in:276 msgid "Netgroup triple attribute" msgstr "Netgroep triple attibuut" #: src/config/SSSDConfig/__init__.py.in:277 msgid "Netgroup UUID attribute" msgstr "Netgroep UUID attibuut" #: src/config/SSSDConfig/__init__.py.in:278 msgid "Modification time attribute for netgroups" msgstr "Verandertijd attribuut voor netgroepen" #: src/config/SSSDConfig/__init__.py.in:280 msgid "Base DN for service lookups" msgstr "Basis DN voor service lookups" #: src/config/SSSDConfig/__init__.py.in:281 msgid "Objectclass for services" msgstr "Objectclass voor services" #: src/config/SSSDConfig/__init__.py.in:282 msgid "Service name attribute" msgstr "Service naam attribuut" #: src/config/SSSDConfig/__init__.py.in:283 msgid "Service port attribute" msgstr "Service port attribuut" #: src/config/SSSDConfig/__init__.py.in:284 msgid "Service protocol attribute" msgstr "Service protocol attribuut" #: src/config/SSSDConfig/__init__.py.in:287 msgid "Lower bound for ID-mapping" msgstr "Ondergrens voor ID-mapping" #: src/config/SSSDConfig/__init__.py.in:288 msgid "Upper bound for ID-mapping" msgstr "Bovengrens voor ID-mapping" #: src/config/SSSDConfig/__init__.py.in:289 msgid "Number of IDs for each slice when ID-mapping" msgstr "Aantal ID's voor elk segment bij ID-mapping" #: src/config/SSSDConfig/__init__.py.in:290 msgid "Use autorid-compatible algorithm for ID-mapping" msgstr "Gebruik autorid-compatibel algoritme voor ID-mapping" #: src/config/SSSDConfig/__init__.py.in:291 msgid "Name of the default domain for ID-mapping" msgstr "Naam van het standaard domein voor ID-mapping" #: src/config/SSSDConfig/__init__.py.in:292 msgid "SID of the default domain for ID-mapping" msgstr "SID van het standaard domein voor ID-mapping" #: src/config/SSSDConfig/__init__.py.in:294 msgid "Use LDAP_MATCHING_RULE_IN_CHAIN for group lookups" msgstr "Gebruik LDAP_MATCHING_RULE_IN_CHAIN voor groep opzoeken" #: src/config/SSSDConfig/__init__.py.in:295 msgid "Use LDAP_MATCHING_RULE_IN_CHAIN for initgroup lookups" msgstr "Gebruik LDAP_MATCHING_RULE_IN_CHAIN voor initgroep opzoeken" #: src/config/SSSDConfig/__init__.py.in:298 msgid "Policy to evaluate the password expiration" msgstr "Policy om wacthwoordverloop mee te evalueren" #: src/config/SSSDConfig/__init__.py.in:301 msgid "LDAP filter to determine access privileges" msgstr "LDAP-filter om toegangsprivileges mee te bepalen" #: src/config/SSSDConfig/__init__.py.in:302 msgid "Which attributes shall be used to evaluate if an account is expired" msgstr "" "Welke attributen worden gebruikt voor evaluatie als het account verlopen is" #: src/config/SSSDConfig/__init__.py.in:303 msgid "Which rules should be used to evaluate access control" msgstr "" "Welke regels moeten gebruikt worden voor de evaluatie van toegangscontrole" #: src/config/SSSDConfig/__init__.py.in:306 msgid "URI of an LDAP server where password changes are allowed" msgstr "" "URI van een LDAP server waarop wachtwoord veranderingen toegestaan zijn" #: src/config/SSSDConfig/__init__.py.in:307 msgid "URI of a backup LDAP server where password changes are allowed" msgstr "" "URI van een back-up LDAP server waar wachtwoord veranderingen toegestaan zijn" #: src/config/SSSDConfig/__init__.py.in:308 msgid "DNS service name for LDAP password change server" msgstr "DNS service naam voor LDAP wachtwoord verander server" #: src/config/SSSDConfig/__init__.py.in:309 msgid "" "Whether to update the ldap_user_shadow_last_change attribute after a " "password change" msgstr "" "Moet het ldap_user_shadow_last_change attribuut vernieuwd worden na een " "wachtwoordwijziging" #: src/config/SSSDConfig/__init__.py.in:312 msgid "Base DN for sudo rules lookups" msgstr "Basis DN voor sudo regels lookups" #: src/config/SSSDConfig/__init__.py.in:313 msgid "Automatic full refresh period" msgstr "Automatische volledige ververs periode" #: src/config/SSSDConfig/__init__.py.in:314 msgid "Automatic smart refresh period" msgstr "Automatische slimme ververs periode" #: src/config/SSSDConfig/__init__.py.in:315 msgid "Whether to filter rules by hostname, IP addresses and network" msgstr "Moeten regels gefilterd worden volgens hostnaam, IP adres en netwerk" #: src/config/SSSDConfig/__init__.py.in:316 msgid "" "Hostnames and/or fully qualified domain names of this machine to filter sudo " "rules" msgstr "" "Hostnamen en/of volledig gekwalificeerde domeinnamen van deze machine voor " "het filteren van sudo regels" #: src/config/SSSDConfig/__init__.py.in:317 msgid "IPv4 or IPv6 addresses or network of this machine to filter sudo rules" msgstr "" "IPv4 of IPv6 adressen of netwerk van deze machine voor het filteren van sudo " "regels" #: src/config/SSSDConfig/__init__.py.in:318 msgid "Whether to include rules that contains netgroup in host attribute" msgstr "" "Moeten regels toegevoegd worden die netgroep bevatten in host attribuut " #: src/config/SSSDConfig/__init__.py.in:319 msgid "" "Whether to include rules that contains regular expression in host attribute" msgstr "" "Moeten regels toegevoegd worden die regulaire expressie bevatten in host " "attribuut " #: src/config/SSSDConfig/__init__.py.in:320 msgid "Object class for sudo rules" msgstr "Objectklasse voor sudo regels" #: src/config/SSSDConfig/__init__.py.in:321 msgid "Sudo rule name" msgstr "Sudo regelnaam" #: src/config/SSSDConfig/__init__.py.in:322 msgid "Sudo rule command attribute" msgstr "Sudo regel opdracht attribuut" #: src/config/SSSDConfig/__init__.py.in:323 msgid "Sudo rule host attribute" msgstr "Sudo regel host attribuut" #: src/config/SSSDConfig/__init__.py.in:324 msgid "Sudo rule user attribute" msgstr "Sudo regel gebruiker attribuut" #: src/config/SSSDConfig/__init__.py.in:325 msgid "Sudo rule option attribute" msgstr "Sudo regel optie attribuut" #: src/config/SSSDConfig/__init__.py.in:326 msgid "Sudo rule runasuser attribute" msgstr "Sudo regel runasuser attribuut" #: src/config/SSSDConfig/__init__.py.in:327 msgid "Sudo rule runasgroup attribute" msgstr "Sudo regel runasgroup attribuut" #: src/config/SSSDConfig/__init__.py.in:328 msgid "Sudo rule notbefore attribute" msgstr "Sudo regel notbefore attribuut" #: src/config/SSSDConfig/__init__.py.in:329 msgid "Sudo rule notafter attribute" msgstr "Sudo regel notafter attribuut" #: src/config/SSSDConfig/__init__.py.in:330 msgid "Sudo rule order attribute" msgstr "Sudo regel volgorde attribuut" #: src/config/SSSDConfig/__init__.py.in:333 msgid "Object class for automounter maps" msgstr "Object class voor automounter maps" #: src/config/SSSDConfig/__init__.py.in:334 msgid "Automounter map name attribute" msgstr "Automounter map naam attribuut" #: src/config/SSSDConfig/__init__.py.in:335 msgid "Object class for automounter map entries" msgstr "Objectklasse voor automounter map ingaven" #: src/config/SSSDConfig/__init__.py.in:336 msgid "Automounter map entry key attribute" msgstr "Automounter map sleutel ingave attribuut" #: src/config/SSSDConfig/__init__.py.in:337 msgid "Automounter map entry value attribute" msgstr "Automounter map ingavewaarde attribuut" #: src/config/SSSDConfig/__init__.py.in:338 msgid "Base DN for automounter map lookups" msgstr "Basis DN voor automounter kaart opzoeken" #: src/config/SSSDConfig/__init__.py.in:341 msgid "Comma separated list of allowed users" msgstr "Kommagescheiden lijst van toegestane gebruikers" #: src/config/SSSDConfig/__init__.py.in:342 msgid "Comma separated list of prohibited users" msgstr "Kommagescheiden lijst van geweigerde gebruikers" #: src/config/SSSDConfig/__init__.py.in:345 msgid "Default shell, /bin/bash" msgstr "Standaard shell, /bin/bash" #: src/config/SSSDConfig/__init__.py.in:346 msgid "Base for home directories" msgstr "Basis voor gebruikersmappen" #: src/config/SSSDConfig/__init__.py.in:349 msgid "The name of the NSS library to use" msgstr "De naam van de NSS-bibliotheek die gebruikt wordt" #: src/config/SSSDConfig/__init__.py.in:350 msgid "Whether to look up canonical group name from cache if possible" msgstr "Moet indien mogelijk canonieke groepsnaam in cache opgezocht worden " #: src/config/SSSDConfig/__init__.py.in:353 msgid "PAM stack to use" msgstr "PAM-stack die gebruikt wordt" #: src/monitor/monitor.c:2476 msgid "Become a daemon (default)" msgstr "Start in de achtergrond (standaard)" #: src/monitor/monitor.c:2478 msgid "Run interactive (not a daemon)" msgstr "Start interactief (standaard)" #: src/monitor/monitor.c:2480 src/tools/sss_debuglevel.c:71 msgid "Specify a non-default config file" msgstr "Geef een niet-standaard configuratiebestand op" #: src/monitor/monitor.c:2482 msgid "Print version number and exit" msgstr "Print versie nummer en sluit af" #: src/monitor/monitor.c:2599 msgid "SSSD is already running\n" msgstr "SSSD draait al\n" #: src/providers/krb5/krb5_child.c:1894 src/providers/ldap/ldap_child.c:432 #: src/util/util.h:94 msgid "Debug level" msgstr "Debug niveau" #: src/providers/krb5/krb5_child.c:1896 src/providers/ldap/ldap_child.c:434 #: src/util/util.h:98 msgid "Add debug timestamps" msgstr "Voeg tijdstempels toe aan debugberichten" #: src/providers/krb5/krb5_child.c:1898 src/providers/ldap/ldap_child.c:436 #: src/util/util.h:100 msgid "Show timestamps with microseconds" msgstr "Toon tijdstempel met microseconden" #: src/providers/krb5/krb5_child.c:1900 src/providers/ldap/ldap_child.c:438 msgid "An open file descriptor for the debug logs" msgstr "Een geopend bestand voor de debug logs" #: src/providers/data_provider_be.c:2365 msgid "Domain of the information provider (mandatory)" msgstr "Domein voor de informatie provider (verplicht)" #: src/sss_client/common.c:947 msgid "Privileged socket has wrong ownership or permissions." msgstr "Socket met privileges heeft verkeerde rechten of eigendom." #: src/sss_client/common.c:950 msgid "Public socket has wrong ownership or permissions." msgstr "Publiek socket heeft verkeerde rechten of eigendom." #: src/sss_client/common.c:953 msgid "Unexpected format of the server credential message." msgstr "Onverwacht formaat van het inloggegevensbericht van de server." #: src/sss_client/common.c:956 msgid "SSSD is not run by root." msgstr "SSSD wordt niet door root gestart." #: src/sss_client/common.c:961 msgid "An error occurred, but no description can be found." msgstr "" "Er is een fout opgetreden, maar er kan geen omschrijving gevonden worden." #: src/sss_client/common.c:967 msgid "Unexpected error while looking for an error description" msgstr "Onverwachtte fout bij het opzoeken van een omschrijving" #: src/sss_client/pam_sss.c:387 msgid "Passwords do not match" msgstr "Wachtwoorden komen niet overeen" #: src/sss_client/pam_sss.c:575 msgid "Password reset by root is not supported." msgstr "Wachtwoorden als root wijzigen wordt niet ondersteund." #: src/sss_client/pam_sss.c:616 msgid "Authenticated with cached credentials" msgstr "Geauthenticeerd met gecachte inloggegevens." #: src/sss_client/pam_sss.c:617 msgid ", your cached password will expire at: " msgstr ", uw wachtwoord verloopt op:" #: src/sss_client/pam_sss.c:647 #, c-format msgid "Your password has expired. You have %1$d grace login(s) remaining." msgstr "" "Je wachtwoord is verlopen. Je hebt nog slechts %1$d login(s) beschikbaar." #: src/sss_client/pam_sss.c:693 #, c-format msgid "Your password will expire in %1$d %2$s." msgstr "Je wachtwoord zal verlopen in %1$d %2$s." #: src/sss_client/pam_sss.c:742 msgid "Authentication is denied until: " msgstr "Inloggen wordt geweigerd tot:" #: src/sss_client/pam_sss.c:763 msgid "System is offline, password change not possible" msgstr "Systeem is offline, wachtwoord wijzigen niet mogelijk" #: src/sss_client/pam_sss.c:793 src/sss_client/pam_sss.c:806 msgid "Password change failed. " msgstr "Wijzigen van wachtwoord mislukt." #: src/sss_client/pam_sss.c:796 src/sss_client/pam_sss.c:807 msgid "Server message: " msgstr "Serverbericht:" #: src/sss_client/pam_sss.c:1231 msgid "New Password: " msgstr "Nieuw Wachtwoord: " #: src/sss_client/pam_sss.c:1232 msgid "Reenter new Password: " msgstr "Voer nieuw wachtwoord nogmaals in: " #: src/sss_client/pam_sss.c:1318 msgid "Password: " msgstr "Wachtwoord: " #: src/sss_client/pam_sss.c:1350 msgid "Current Password: " msgstr "Huidig wachtwoord:" #: src/sss_client/pam_sss.c:1497 msgid "Password expired. Change your password now." msgstr "Wachtwoord verlopen. Verander nu uw wachtwoord." #: src/sss_client/ssh/sss_ssh_authorizedkeys.c:40 #: src/sss_client/ssh/sss_ssh_knownhostsproxy.c:192 src/tools/sss_useradd.c:48 #: src/tools/sss_groupadd.c:41 src/tools/sss_groupdel.c:43 #: src/tools/sss_groupmod.c:42 src/tools/sss_groupshow.c:651 #: src/tools/sss_userdel.c:131 src/tools/sss_usermod.c:47 #: src/tools/sss_cache.c:350 src/tools/sss_debuglevel.c:69 msgid "The debug level to run with" msgstr "Het debugniveau waarmee gestart wordt" #: src/sss_client/ssh/sss_ssh_authorizedkeys.c:42 #: src/sss_client/ssh/sss_ssh_knownhostsproxy.c:196 msgid "The SSSD domain to use" msgstr "Hrt te gebruiken SSSD domein" #: src/sss_client/ssh/sss_ssh_authorizedkeys.c:58 src/tools/sss_useradd.c:73 #: src/tools/sss_groupadd.c:58 src/tools/sss_groupdel.c:52 #: src/tools/sss_groupmod.c:65 src/tools/sss_groupshow.c:662 #: src/tools/sss_userdel.c:148 src/tools/sss_usermod.c:74 #: src/tools/sss_cache.c:381 msgid "Error setting the locale\n" msgstr "Fout bij het zetten van de locale\n" #: src/sss_client/ssh/sss_ssh_authorizedkeys.c:65 #: src/sss_client/ssh/sss_ssh_authorizedkeys.c:91 msgid "Not enough memory\n" msgstr "Niet genoeg geheugen\n" #: src/sss_client/ssh/sss_ssh_authorizedkeys.c:84 msgid "User not specified\n" msgstr "Gebruiker niet gespecificeerd\n" #: src/sss_client/ssh/sss_ssh_authorizedkeys.c:105 msgid "Error looking up public keys\n" msgstr "Fout bij het opzoeken van publieke sleutels\n" #: src/sss_client/ssh/sss_ssh_knownhostsproxy.c:194 msgid "The port to use to connect to the host" msgstr "De te gebruiken poort voor het verbinden met de host" #: src/sss_client/ssh/sss_ssh_knownhostsproxy.c:238 msgid "Invalid port\n" msgstr "Ongeldige poort\n" #: src/sss_client/ssh/sss_ssh_knownhostsproxy.c:243 msgid "Host not specified\n" msgstr "Host niet gespecificeerd\n" #: src/sss_client/ssh/sss_ssh_knownhostsproxy.c:249 msgid "The path to the proxy command must be absolute\n" msgstr "Het pad naar het proxy commando moet absoluut zijn\n" #: src/tools/sss_useradd.c:49 src/tools/sss_usermod.c:48 msgid "The UID of the user" msgstr "Het UID van de gebruiker" #: src/tools/sss_useradd.c:50 src/tools/sss_usermod.c:50 msgid "The comment string" msgstr "Het commentaar" #: src/tools/sss_useradd.c:51 src/tools/sss_usermod.c:51 msgid "Home directory" msgstr "Gebruikersmap" #: src/tools/sss_useradd.c:52 src/tools/sss_usermod.c:52 msgid "Login shell" msgstr "Login shell" #: src/tools/sss_useradd.c:53 msgid "Groups" msgstr "Groepen" #: src/tools/sss_useradd.c:54 msgid "Create user's directory if it does not exist" msgstr "Maak gebruikersmap aan als deze niet bestaat" #: src/tools/sss_useradd.c:55 msgid "Never create user's directory, overrides config" msgstr "Maak nooit gebruikersmappen aan, overschrijft de configuratiewaarde" #: src/tools/sss_useradd.c:56 msgid "Specify an alternative skeleton directory" msgstr "Geef een alternatieve voorbeeldmap" #: src/tools/sss_useradd.c:57 src/tools/sss_usermod.c:57 msgid "The SELinux user for user's login" msgstr "De SELinux-gebruiker voor de login van de gebruiker" #: src/tools/sss_useradd.c:86 src/tools/sss_groupmod.c:78 #: src/tools/sss_usermod.c:87 msgid "Specify group to add to\n" msgstr "Geef group op om toe te voegen\n" #: src/tools/sss_useradd.c:110 msgid "Specify user to add\n" msgstr "Geef gebruiker op om toe te voegen\n" #: src/tools/sss_useradd.c:119 src/tools/sss_groupadd.c:84 #: src/tools/sss_groupdel.c:77 src/tools/sss_groupmod.c:111 #: src/tools/sss_groupshow.c:695 src/tools/sss_userdel.c:193 #: src/tools/sss_usermod.c:128 msgid "Error initializing the tools - no local domain\n" msgstr "Fout bij de initialisatie van de tools - geen lokaal domein\n" #: src/tools/sss_useradd.c:121 src/tools/sss_groupadd.c:86 #: src/tools/sss_groupdel.c:79 src/tools/sss_groupmod.c:113 #: src/tools/sss_groupshow.c:697 src/tools/sss_userdel.c:195 #: src/tools/sss_usermod.c:130 msgid "Error initializing the tools\n" msgstr "Fout bij de initialisatie van de tools\n" #: src/tools/sss_useradd.c:130 src/tools/sss_groupadd.c:95 #: src/tools/sss_groupdel.c:88 src/tools/sss_groupmod.c:121 #: src/tools/sss_groupshow.c:706 src/tools/sss_userdel.c:204 #: src/tools/sss_usermod.c:139 msgid "Invalid domain specified in FQDN\n" msgstr "Verkeerd domein gespecificeerd in de FQDN\n" #: src/tools/sss_useradd.c:139 src/tools/sss_groupmod.c:141 #: src/tools/sss_groupmod.c:168 src/tools/sss_usermod.c:162 #: src/tools/sss_usermod.c:189 msgid "Internal error while parsing parameters\n" msgstr "Interne fout bij het verwerken van de parameters\n" #: src/tools/sss_useradd.c:147 src/tools/sss_usermod.c:170 #: src/tools/sss_usermod.c:197 msgid "Groups must be in the same domain as user\n" msgstr "" "De groepen moeten zich in het zelfde domein als de gebruiker bevinden\n" #: src/tools/sss_useradd.c:155 #, c-format msgid "Cannot find group %1$s in local domain\n" msgstr "" "Kan groep %1$s niet in lokale domein vinden\n" "\n" #: src/tools/sss_useradd.c:170 src/tools/sss_userdel.c:214 msgid "Cannot set default values\n" msgstr "Kan de standaardwaarden niet zetten\n" #: src/tools/sss_useradd.c:177 src/tools/sss_usermod.c:153 msgid "The selected UID is outside the allowed range\n" msgstr "De geselecteerde UID valt buiten het toegestane bereik\n" #: src/tools/sss_useradd.c:206 src/tools/sss_usermod.c:243 msgid "Cannot set SELinux login context\n" msgstr "Kan de SELinux login context niet zetten\n" #: src/tools/sss_useradd.c:221 msgid "Cannot get info about the user\n" msgstr "Kan geen informatie ophalen over de gebruiker\n" #: src/tools/sss_useradd.c:233 msgid "User's home directory already exists, not copying data from skeldir\n" msgstr "De gebruikersmap bestaat reeds, voorbeeldmap niet gekopieerd\n" #: src/tools/sss_useradd.c:236 #, c-format msgid "Cannot create user's home directory: %1$s\n" msgstr "Kan persoonlijk map voor gebruiker niet aanmaken: %1$s\n" #: src/tools/sss_useradd.c:247 #, c-format msgid "Cannot create user's mail spool: %1$s\n" msgstr "Kan mail spool voor gebruiker niet aanmaken: %1$s\n" #: src/tools/sss_useradd.c:266 msgid "Could not allocate ID for the user - domain full?\n" msgstr "Kan geen ID vinden voor de gebruiker - zit het domein vol?\n" #: src/tools/sss_useradd.c:270 msgid "A user or group with the same name or ID already exists\n" msgstr "Een gebruiker of groep met een zelfde naam of ID bestaat reeds\n" #: src/tools/sss_useradd.c:276 msgid "Transaction error. Could not add user.\n" msgstr "Transactiefout. Kan de gebruiker niet toevoegen\n" #: src/tools/sss_groupadd.c:43 src/tools/sss_groupmod.c:48 msgid "The GID of the group" msgstr "De GID van de groep" #: src/tools/sss_groupadd.c:75 msgid "Specify group to add\n" msgstr "Geef groep op om toe te voegen\n" #: src/tools/sss_groupadd.c:104 src/tools/sss_groupmod.c:192 msgid "The selected GID is outside the allowed range\n" msgstr "De geselecteerde GID valt buiten het toegestane bereik\n" #: src/tools/sss_groupadd.c:141 msgid "Could not allocate ID for the group - domain full?\n" msgstr "Kan geen ID vinden voor de groep - zit het domein vol?\n" #: src/tools/sss_groupadd.c:145 msgid "A group with the same name or GID already exists\n" msgstr "Een groep met een zelfde naam of GID bestaat reeds\n" #: src/tools/sss_groupadd.c:150 msgid "Transaction error. Could not add group.\n" msgstr "Transactiefout. Kan de groep niet toevoegen\n" #: src/tools/sss_groupdel.c:68 msgid "Specify group to delete\n" msgstr "Geef groep op om te verwijderen\n" #: src/tools/sss_groupdel.c:101 #, c-format msgid "Group %1$s is outside the defined ID range for domain\n" msgstr "Groep %1$s ligt buiten het gedefinieerde ID gebied voor domein\n" #: src/tools/sss_groupdel.c:115 msgid "" "No such group in local domain. Removing groups only allowed in local " "domain.\n" msgstr "" "Groep niet gevonden in lokaal domein. Verwijderen van groepen is alleen " "toegestaan in lokaal domein.\n" #: src/tools/sss_groupdel.c:120 msgid "Internal error. Could not remove group.\n" msgstr "Interne fout. Kan de groep niet verwijden.\n" #: src/tools/sss_groupmod.c:44 msgid "Groups to add this group to" msgstr "Groepen waar deze groep aan toe te voegen" #: src/tools/sss_groupmod.c:46 msgid "Groups to remove this group from" msgstr "Groepen om deze groep uit te verwijderen" #: src/tools/sss_groupmod.c:86 src/tools/sss_usermod.c:95 msgid "Specify group to remove from\n" msgstr "Specificeer de groep waaruit verwijderd moet worden\n" #: src/tools/sss_groupmod.c:100 msgid "Specify group to modify\n" msgstr "Specificeer de groep die aangepast moet worden\n" #: src/tools/sss_groupmod.c:128 msgid "" "Cannot find group in local domain, modifying groups is allowed only in local " "domain\n" msgstr "" "Groep niet gevonden in lokaal domein, aanpassen van groepen is alleen " "toegestaan in lokaal domein.\n" #: src/tools/sss_groupmod.c:149 src/tools/sss_groupmod.c:176 msgid "Member groups must be in the same domain as parent group\n" msgstr "" "Lidmaatschappen moeten in het zelfde domein vallen als de daarboven liggende " "groep\n" #: src/tools/sss_groupmod.c:157 src/tools/sss_groupmod.c:184 #: src/tools/sss_usermod.c:178 src/tools/sss_usermod.c:205 #, c-format msgid "" "Cannot find group %1$s in local domain, only groups in local domain are " "allowed\n" msgstr "" "Kan groep %1$s niet in lokale domein vinden, alleen groepen in lokale domein " "zijn toegestaan\n" #: src/tools/sss_groupmod.c:229 msgid "Could not modify group - check if member group names are correct\n" msgstr "" "Kan de groep niet aanpassen - controleer of de namen van de lidmaatschappen " "correct zijn\n" #: src/tools/sss_groupmod.c:233 msgid "Could not modify group - check if groupname is correct\n" msgstr "" "Kan de groep niet aanpassen - controleer of de naam van de groep correct is\n" #: src/tools/sss_groupmod.c:237 msgid "Transaction error. Could not modify group.\n" msgstr "Transactiefout. Kan de groep niet aanpassen.\n" #: src/tools/sss_groupshow.c:598 #, c-format msgid "%1$s%2$sGroup: %3$s\n" msgstr "%1$s%2$sGroep: %3$s\n" #: src/tools/sss_groupshow.c:599 msgid "Magic Private " msgstr "Magic Private " #: src/tools/sss_groupshow.c:601 #, c-format msgid "%1$sGID number: %2$d\n" msgstr "%1$sGID nummer: %2$d\n" #: src/tools/sss_groupshow.c:603 #, c-format msgid "%1$sMember users: " msgstr "%1$sLid gebruikers: " #: src/tools/sss_groupshow.c:610 #, c-format msgid "" "\n" "%1$sIs a member of: " msgstr "" "\n" "%1$sIs lid van: " #: src/tools/sss_groupshow.c:617 #, c-format msgid "" "\n" "%1$sMember groups: " msgstr "" "\n" "%1$sLid groepen: " #: src/tools/sss_groupshow.c:653 msgid "Print indirect group members recursively" msgstr "Geef indirecte groepslidmaatschappen recursief weer" #: src/tools/sss_groupshow.c:686 msgid "Specify group to show\n" msgstr "Specificeer de te tonen groep\n" #: src/tools/sss_groupshow.c:725 msgid "" "No such group in local domain. Printing groups only allowed in local " "domain.\n" msgstr "" "Groep bestaat niet in het lokale domein. Weergave van groepen is alleen " "toegestaan in het lokale domein.\n"