Man page - keyctl(2)
Packages contains this manual
- __malloc_initialize_hook(3)
- getpwuid(3)
- frexpl(3)
- fchown(2)
- setttyent(3)
- pthread_attr_setstacksize(3)
- calloc(3)
- clog(3)
- seteuid(2)
- res_nquerydomain(3)
- y0l(3)
- catanl(3)
- catanh(3)
- inet_addr(3)
- getcwd(2)
- epoll_create1(2)
- atol(3)
- pciconfig_write(2)
- htonl(3)
- timer_settime(2)
- munmap(2)
- cexpl(3)
- rt_sigsuspend(2)
- msgctl(2)
- tan(3)
- get_mempolicy(2)
- roundf(3)
- towctrans(3)
- xdr_opaque(3)
- psignal(3)
- error_at_line(3)
- xdrmem_create(3)
- select(2)
- getdate_r(3)
- getprotobyname_r(3)
- nrand48_r(3)
- inet_netof(3)
- inet_ntoa(3)
- nextafterl(3)
- innetgr(3)
- on_exit(3)
- expm1l(3)
- strfmon(3)
- strdup(3)
- getservbyport(3)
- arch_prctl(2)
- j0(3)
- wait4(2)
- personality(2)
- bpf(2)
- pvalloc(3)
- getresuid32(2)
- des_setparity(3)
- prctl(2)
- clog10(3)
- aio_init(3)
- pthread_getconcurrency(3)
- csinl(3)
- linkat(2)
- vsscanf(3)
- isascii(3)
- xdr_union(3)
- nan(3)
- utimensat(2)
- ioctl_vt(2)
- _newselect(2)
- ldexpl(3)
- fabsf(3)
- chown(2)
- mkstemps(3)
- pthread_attr_getstacksize(3)
- listxattr(2)
- getpgrp(2)
- xdr_short(3)
- tcflush(3)
- pthread_cond_wait(3)
- argz_add(3)
- wcpncpy(3)
- reallocarray(3)
- llrintf(3)
- outsl(2)
- qsort(3)
- authnone_create(3)
- tzname(3)
- setresuid32(2)
- isspace(3)
- open_by_handle_at(2)
- drem(3)
- conjf(3)
- nanosleep(2)
- pthread_kill(3)
- putc(3)
- pthread_condattr_destroy(3)
- getpwuid_r(3)
- strverscmp(3)
- res_init(3)
- cacosl(3)
- qecvt_r(3)
- iswgraph(3)
- gethostbyname(3)
- ntohl(3)
- acct(2)
- asinl(3)
- envz_merge(3)
- strdupa(3)
- idle(2)
- getopt_long_only(3)
- hstrerror(3)
- fanotify_init(2)
- fputs_unlocked(3)
- sleep(3)
- vfprintf(3)
- scalb(3)
- nanl(3)
- lchown32(2)
- getnetent_r(3)
- fcntl(2)
- inw(2)
- rintl(3)
- arc4random(3)
- getsockopt(2)
- ilogbl(3)
- clog2(3)
- encrypt(3)
- sqrtf(3)
- isspace_l(3)
- tanl(3)
- cfmakeraw(3)
- assert(3)
- strtoull(3)
- xdrstdio_create(3)
- optopt(3)
- setrlimit(2)
- lround(3)
- xdr_accepted_reply(3)
- fmin(3)
- mq_notify(3)
- svcerr_auth(3)
- sbrk(2)
- recv(2)
- mq_unlink(2)
- strxfrm(3)
- ctan(3)
- atoi(3)
- xcrypt(3)
- sgetspent(3)
- fread(3)
- isless(3)
- ceil(3)
- pthread_cond_broadcast(3)
- oldfstat(2)
- outl(2)
- times(2)
- wcslen(3)
- popen(3)
- wprintf(3)
- labs(3)
- getrpcbynumber(3)
- shmat(2)
- clock_gettime(2)
- btree(3)
- s390_sthyi(2)
- siggetmask(3)
- getgid32(2)
- puts(3)
- scalblnl(3)
- strpbrk(3)
- catanhl(3)
- vlimit(3)
- getrpcent(3)
- tgammal(3)
- strtoll(3)
- funlockfile(3)
- xdecrypt(3)
- pthread_key_delete(3)
- setgrent(3)
- wmemmove(3)
- gnu_dev_major(3)
- regexec(3)
- lrintl(3)
- __ppc_set_ppr_med(3)
- rmdir(2)
- io_getevents(2)
- request_key(2)
- ecvt(3)
- __ppc_mdoom(3)
- mktemp(3)
- key_gendes(3)
- le64toh(3)
- statvfs(3)
- rpc(3)
- getdate_err(3)
- munlockall(2)
- close(2)
- xdr_rejected_reply(3)
- dlerror(3)
- le32toh(3)
- feclearexcept(3)
- insque(3)
- clntraw_create(3)
- getutid(3)
- strtof(3)
- settimeofday(2)
- mkdir(2)
- rewind(3)
- logf(3)
- tmpnam(3)
- iswpunct(3)
- wcrtomb(3)
- epoll_pwait(2)
- getitimer(2)
- wordexp(3)
- clog2f(3)
- capset(2)
- strrchr(3)
- outsb(2)
- freeifaddrs(3)
- getwc_unlocked(3)
- ustat(2)
- bswap_16(3)
- program_invocation_short_name(3)
- ldiv(3)
- exp10f(3)
- vprintf(3)
- wcsncpy(3)
- iscntrl(3)
- readlink(2)
- semget(2)
- connect(2)
- psiginfo(3)
- epoll_ctl(2)
- removexattr(2)
- envz_strip(3)
- fgetxattr(2)
- atexit(3)
- putgrent(3)
- bswap(3)
- getegid32(2)
- qecvt(3)
- asinh(3)
- isfdtype(3)
- setenv(3)
- readdir(3)
- rtime(3)
- nearbyint(3)
- getgroups32(2)
- statx(2)
- modify_ldt(2)
- cpow(3)
- eventfd_read(3)
- sendfile64(2)
- getnetbyname(3)
- fremovexattr(2)
- uselib(2)
- inet(3)
- endutxent(3)
- clnt_spcreateerror(3)
- pututline(3)
- nexttowardl(3)
- getipnodebyaddr(3)
- fts_set(3)
- memmem(3)
- fmodl(3)
- setfsuid32(2)
- wordfree(3)
- fadvise64(2)
- getppid(2)
- qsort_r(3)
- toupper(3)
- getwc(3)
- fputws(3)
- mrand48(3)
- preadv(2)
- sincosf(3)
- fstatat64(2)
- dirfd(3)
- jnf(3)
- static_assert(3)
- wctype(3)
- vwarn(3)
- setfsent(3)
- listen(2)
- wcstok(3)
- argz_insert(3)
- select_tut(2)
- ctanl(3)
- getunwind(2)
- difftime(3)
- daylight(3)
- sigpause(3)
- wcscat(3)
- dlclose(3)
- __ppc_set_ppr_med_low(3)
- pread(2)
- fstatvfs(3)
- cbrtf(3)
- strnlen(3)
- sinhl(3)
- inl_p(2)
- setregid32(2)
- putwc(3)
- register_printf_type(3)
- nextafterf(3)
- opendir(3)
- strtod(3)
- tgamma(3)
- malloc_get_state(3)
- aio_write(3)
- timezone(3)
- xdr_pmaplist(3)
- sysfs(2)
- index(3)
- svcerr_noproc(3)
- envz(3)
- klogctl(3)
- pselect(2)
- get_current_dir_name(3)
- xdr_char(3)
- asinhf(3)
- preadv2(2)
- inotify_init1(2)
- pthread_attr_setstackaddr(3)
- getline(3)
- tanhf(3)
- rtnetlink(3)
- pkey_alloc(2)
- edata(3)
- stailq(3)
- isastream(2)
- setregid(2)
- copy_file_range(2)
- rcmd_af(3)
- futex(2)
- prof(2)
- siglongjmp(3)
- hdestroy(3)
- catan(3)
- pthread_cond_signal(3)
- mkfifoat(3)
- clntudp_create(3)
- getentropy(3)
- vsprintf(3)
- fabs(3)
- lseek64(3)
- pthread_setname_np(3)
- conjl(3)
- chroot(2)
- ccoshf(3)
- erand48_r(3)
- wcsnrtombs(3)
- rindex(3)
- fputc_unlocked(3)
- setresgid32(2)
- gettimeofday(2)
- cexp(3)
- inotify_add_watch(2)
- set_robust_list(2)
- nice(2)
- strtold(3)
- mq_getattr(3)
- xdr(3)
- getxattr(2)
- getrandom(2)
- splice(2)
- strerror(3)
- fcntl64(2)
- fnmatch(3)
- ungetwc(3)
- getspnam_r(3)
- clearenv(3)
- atan2(3)
- get_myaddress(3)
- open(2)
- pthread_setcancelstate(3)
- newlocale(3)
- open_memstream(3)
- setprotoent(3)
- logbf(3)
- ilogb(3)
- wmemcpy(3)
- tcsendbreak(3)
- be16toh(3)
- perfmonctl(2)
- strtoq(3)
- getgrgid_r(3)
- pthread_timedjoin_np(3)
- memfd_create(2)
- getttynam(3)
- mcheck_pedantic(3)
- _llseek(2)
- renameat2(2)
- ioperm(2)
- ecb_crypt(3)
- pthread_condattr_init(3)
- fminl(3)
- lio_listio(3)
- envz_add(3)
- setbuf(3)
- setkey(3)
- expm1(3)
- strtoul(3)
- getcwd(3)
- setutxent(3)
- getrpcent_r(3)
- unimplemented(2)
- fclose(3)
- epoll_create(2)
- getfsent(3)
- key_secretkey_is_set(3)
- vserver(2)
- vswprintf(3)
- sigsuspend(2)
- pututxline(3)
- clnt_freeres(3)
- cacheflush(2)
- ioprio_set(2)
- alarm(2)
- fgetc(3)
- __fpurge(3)
- getlogin_r(3)
- vfork(2)
- bstring(3)
- div(3)
- getrusage(2)
- gettid(2)
- dprintf(3)
- strtoumax(3)
- jrand48(3)
- iswcntrl(3)
- vwarnx(3)
- cacos(3)
- ccoshl(3)
- fesetexceptflag(3)
- res_nclose(3)
- shmop(2)
- mcheck_check_all(3)
- vscanf(3)
- tolower(3)
- landlock_add_rule(2)
- argz_next(3)
- lroundl(3)
- ruserok(3)
- glob(3)
- brk(2)
- rename(2)
- strcspn(3)
- sched_getscheduler(2)
- wcstoumax(3)
- dbopen(3)
- xdr_bytes(3)
- fegetenv(3)
- scalbf(3)
- pkey_free(2)
- fgetgrent(3)
- strchrnul(3)
- fork(2)
- log1pf(3)
- strtoimax(3)
- fputs(3)
- putspent(3)
- ttyname_r(3)
- iswlower(3)
- epoll_wait(2)
- minor(3)
- wcsspn(3)
- sendmmsg(2)
- pthread_attr_getsigmask_np(3)
- erand48(3)
- setpgrp(2)
- db(3)
- readv(2)
- cimagf(3)
- pthread_sigmask(3)
- getresuid(2)
- gamma(3)
- logwtmp(3)
- imaxabs(3)
- y1(3)
- swapoff(2)
- svcerr_weakauth(3)
- mbtowc(3)
- madvise(2)
- __fbufsize(3)
- swapon(2)
- towlower(3)
- asin(3)
- initgroups(3)
- svc_getreqset(3)
- pthread_attr_destroy(3)
- scalblnf(3)
- ispunct(3)
- casin(3)
- xdr_pmap(3)
- sigvec(3)
- dlmopen(3)
- localeconv(3)
- tcgetattr(3)
- mempcpy(3)
- clnt_perrno(3)
- clock_getcpuclockid(3)
- setaliasent(3)
- clock(3)
- ftok(3)
- svc_run(3)
- getsubopt(3)
- coshf(3)
- pow(3)
- getpwent(3)
- ntp_gettime(3)
- xdrrec_skiprecord(3)
- symlink(2)
- shmctl(2)
- mq_timedreceive(2)
- malloc(3)
- tgkill(2)
- l64a(3)
- unlockpt(3)
- mallopt(3)
- creal(3)
- syscalls(2)
- set_tid_address(2)
- exp2f(3)
- fstatfs(2)
- statfs(2)
- dreml(3)
- feenableexcept(3)
- ftw(3)
- fanotify_mark(2)
- clnt_sperror(3)
- realpath(3)
- sysconf(3)
- _syscall(2)
- set_mempolicy(2)
- mq_unlink(3)
- freehostent(3)
- rresvport_af(3)
- nl_langinfo_l(3)
- fmaxl(3)
- iscntrl_l(3)
- copysignf(3)
- llseek(2)
- bzero(3)
- ioctl_fsmap(2)
- remquof(3)
- malloc_trim(3)
- pthread_getattr_default_np(3)
- isalnum_l(3)
- mlock(2)
- nearbyintf(3)
- confstr(3)
- sinf(3)
- ioctl_eventpoll(2)
- sigstack(3)
- seed48_r(3)
- utmpname(3)
- malloc_stats(3)
- stpncpy(3)
- getservbyport_r(3)
- cabsl(3)
- isblank(3)
- sigprocmask(2)
- isinfl(3)
- isinff(3)
- pathconf(3)
- xdr_u_short(3)
- acos(3)
- timerfd_create(2)
- key_encryptsession(3)
- log2f(3)
- oldlstat(2)
- res_querydomain(3)
- memcmp(3)
- gethostbyaddr(3)
- sighold(3)
- gtty(2)
- xdr_void(3)
- getmsg(2)
- io_setup(2)
- ttyslot(3)
- recno(3)
- cuserid(3)
- nanf(3)
- pthread_getaffinity_np(3)
- if_indextoname(3)
- remainderf(3)
- putpwent(3)
- pow10f(3)
- pwritev(2)
- swapcontext(3)
- cfsetospeed(3)
- envz_remove(3)
- cosh(3)
- a64l(3)
- uselocale(3)
- yn(3)
- msgget(2)
- pthread_equal(3)
- prlimit(2)
- setspent(3)
- newfstatat(2)
- renameat(2)
- truncf(3)
- pthread_yield(3)
- tkill(2)
- islessequal(3)
- isnanf(3)
- sethostent(3)
- setvbuf(3)
- gnu_get_libc_release(3)
- atoll(3)
- getgrnam(3)
- get_robust_list(2)
- __ppc_yield(3)
- __memalign_hook(3)
- eventfd2(2)
- mq_setattr(3)
- tmpnam_r(3)
- pmap_getport(3)
- svcfd_create(3)
- getfsspec(3)
- setgid(2)
- getlogin(3)
- get_nprocs(3)
- canonicalize_file_name(3)
- pthread_mutexattr_getrobust(3)
- strerrorname_np(3)
- csinh(3)
- malloc_set_state(3)
- tcgetsid(3)
- ssignal(3)
- secure_getenv(3)
- significandl(3)
- wcschr(3)
- isgraph(3)
- pthread_mutexattr_gettype(3)
- creat(2)
- cabsf(3)
- __ppc_set_ppr_med_high(3)
- fchdir(2)
- backtrace_symbols(3)
- exp10l(3)
- euidaccess(3)
- sync_file_range(2)
- getutxline(3)
- isdigit(3)
- sinhf(3)
- lgetxattr(2)
- getaliasent(3)
- memrchr(3)
- io_submit(2)
- clnt_create(3)
- __setfpucw(3)
- _flushlbf(3)
- lcong48_r(3)
- clog10l(3)
- pmap_getmaps(3)
- memalign(3)
- xdr_authunix_parms(3)
- execl(3)
- getdate(3)
- cfsetispeed(3)
- tanhl(3)
- wmempcpy(3)
- outw_p(2)
- faccessat(2)
- rresvport(3)
- nextup(3)
- fgetgrent_r(3)
- getopt(3)
- xdr_vector(3)
- aio_error(3)
- frexpf(3)
- getpw(3)
- sscanf(3)
- mprotect(2)
- exp(3)
- sched_getaffinity(2)
- accept4(2)
- remainderl(3)
- pthread_key_create(3)
- endian(3)
- setmntent(3)
- get_phys_pages(3)
- argz(3)
- _exit(2)
- towupper_l(3)
- lrand48(3)
- csqrt(3)
- hdestroy_r(3)
- remquo(3)
- feof_unlocked(3)
- isprint(3)
- pivot_root(2)
- arc4random_uniform(3)
- strfroml(3)
- getdomainname(2)
- va_end(3)
- getresgid(2)
- cosf(3)
- endhostent(3)
- setgid32(2)
- ioctl_fs(2)
- getaddrinfo(3)
- fgetwc(3)
- lock(2)
- getservbyname_r(3)
- sys_nerr(3)
- insb(2)
- usleep(3)
- security(2)
- cfree(3)
- tanf(3)
- fprintf(3)
- pthread_mutexattr_setpshared(3)
- xprt_unregister(3)
- alphasort(3)
- getgrent(3)
- scandirat(3)
- iruserok(3)
- ttyname(3)
- tdestroy(3)
- strcasecmp(3)
- getpgid(2)
- drand48_r(3)
- mmap(2)
- sigtimedwait(2)
- pthread_once(3)
- mq_receive(3)
- pthread_mutexattr_setkind_np(3)
- iopl(2)
- s390_runtime_instr(2)
- lckpwdf(3)
- memmove(3)
- __fpending(3)
- mbsrtowcs(3)
- restart_syscall(2)
- memset(3)
- significandf(3)
- openat2(2)
- timeradd(3)
- conj(3)
- flockfile(3)
- madvise1(2)
- inet_aton(3)
- fstatfs64(2)
- fmax(3)
- fmemopen(3)
- fmaf(3)
- lseek(2)
- registerrpc(3)
- kexec_file_load(2)
- gammal(3)
- feof(3)
- pidfd_open(2)
- crealf(3)
- clogl(3)
- getutmp(3)
- umount(2)
- inet_pton(3)
- flistxattr(2)
- xdr_wrapstring(3)
- socketcall(2)
- setrpcent(3)
- rint(3)
- vm86(2)
- sincosl(3)
- getprotoent_r(3)
- mknod(2)
- getdents64(2)
- gai_cancel(3)
- srandom_r(3)
- getnetbyname_r(3)
- sigaddset(3)
- htole16(3)
- endnetent(3)
- nextafter(3)
- timerisset(3)
- getgrent_r(3)
- freeaddrinfo(3)
- endprotoent(3)
- mbind(2)
- sigorset(3)
- pthread_rwlockattr_setkind_np(3)
- cimag(3)
- waitid(2)
- abs(3)
- unlink(2)
- recvmsg(2)
- getaliasbyname(3)
- wctrans(3)
- kill(2)
- strtol(3)
- __ppc_set_ppr_very_low(3)
- membarrier(2)
- getnetbyaddr_r(3)
- writev(2)
- errx(3)
- tfind(3)
- clone3(2)
- __freading(3)
- outw(2)
- regfree(3)
- accept(2)
- timer_getoverrun(2)
- shmdt(2)
- svcerr_decode(3)
- getnameinfo(3)
- endusershell(3)
- execvpe(3)
- cbc_crypt(3)
- res_send(3)
- xdr_destroy(3)
- getcontext(3)
- pkey_mprotect(2)
- twalk_r(3)
- isalnum(3)
- timercmp(3)
- setxattr(2)
- pthread_cleanup_pop_restore_np(3)
- stat(2)
- isupper(3)
- vsyslog(3)
- strlen(3)
- pthread_attr_setinheritsched(3)
- xdr_inline(3)
- strtouq(3)
- raise(3)
- getpeername(2)
- capget(2)
- atanl(3)
- ferror_unlocked(3)
- isxdigit_l(3)
- modfl(3)
- pthread_mutexattr_init(3)
- pthread_mutexattr_getkind_np(3)
- phys(2)
- llabs(3)
- sched_rr_get_interval(2)
- asprintf(3)
- explicit_bzero(3)
- asctime(3)
- clone(2)
- munlock(2)
- __realloc_hook(3)
- atof(3)
- rt_tgsigqueueinfo(2)
- syslog(2)
- inet_makeaddr(3)
- epoll_pwait2(2)
- iswalpha(3)
- netlink(3)
- sched_setattr(2)
- sigdescr_np(3)
- access(2)
- getc_unlocked(3)
- dysize(3)
- inet_net_pton(3)
- sched_setparam(2)
- timerfd_settime(2)
- nexttowardf(3)
- expf(3)
- svcerr_progvers(3)
- getwchar(3)
- ftime(3)
- if_nametoindex(3)
- argz_add_sep(3)
- vasprintf(3)
- unlinkat(2)
- putenv(3)
- pthread_mutexattr_setrobust_np(3)
- error_message_count(3)
- setfsgid(2)
- cmsg(3)
- setpwent(3)
- cfgetospeed(3)
- end(3)
- pidfd_send_signal(2)
- scalbn(3)
- closelog(3)
- srandom(3)
- argz_replace(3)
- ioctl_tty(2)
- va_arg(3)
- towlower_l(3)
- isblank_l(3)
- remove(3)
- expl(3)
- fscanf(3)
- versionsort(3)
- pow10(3)
- hsearch(3)
- gethostid(3)
- fchownat(2)
- group_member(3)
- getchar_unlocked(3)
- getservbyname(3)
- pthread_mutexattr_destroy(3)
- setpgid(2)
- acosf(3)
- ctanhf(3)
- shm_open(3)
- towupper(3)
- getdents(2)
- chown32(2)
- hypotf(3)
- undocumented(3)
- drand48(3)
- csinf(3)
- ctime_r(3)
- setlinebuf(3)
- ulimit(3)
- spu_create(2)
- fcvt_r(3)
- ipc(2)
- ftruncate64(2)
- fdopen(3)
- svcerr_noprog(3)
- getrpcport(3)
- csin(3)
- sinh(3)
- nrand48(3)
- openpty(3)
- xdr_double(3)
- pthread_attr_getscope(3)
- vfscanf(3)
- catanhf(3)
- inb(2)
- wcpcpy(3)
- ldexp(3)
- getopt_long(3)
- strerrordesc_np(3)
- mbsinit(3)
- argz_stringify(3)
- setbuffer(3)
- byteorder(3)
- expm1f(3)
- pthread_attr_setscope(3)
- gnu_dev_makedev(3)
- pipe(2)
- updwtmp(3)
- fts_read(3)
- ioctl_fat(2)
- h_errno(3)
- sem_getvalue(3)
- iswupper(3)
- lrint(3)
- perror(3)
- xdr_u_int(3)
- timer_create(2)
- iswdigit(3)
- fgetspent(3)
- fwrite_unlocked(3)
- reboot(2)
- ftruncate(2)
- getutmpx(3)
- pwrite64(2)
- getauxval(3)
- xdr_pointer(3)
- getprotobynumber(3)
- svc_destroy(3)
- vmsplice(2)
- inet_network(3)
- readdir_r(3)
- setsockopt(2)
- rexec(3)
- flock(2)
- getw(3)
- mmap2(2)
- j1f(3)
- cprojf(3)
- mkstemp(3)
- symlinkat(2)
- tempnam(3)
- pthread_attr_getaffinity_np(3)
- gethostbyname_r(3)
- signalfd4(2)
- sys_siglist(3)
- erfc(3)
- truncate64(2)
- verr(3)
- pthread_kill_other_threads_np(3)
- eaccess(3)
- fsetpos(3)
- slist(3)
- pmap_unset(3)
- modf(3)
- ioctl_pipe(2)
- vfwprintf(3)
- getresgid32(2)
- statfs64(2)
- cexp2(3)
- stdio_ext(3)
- login_tty(3)
- xdr_long(3)
- dlsym(3)
- clog2l(3)
- malloc_usable_size(3)
- fegetexceptflag(3)
- basename(3)
- fwrite(3)
- vhangup(2)
- printf(3)
- setnetent(3)
- gethostbyname2(3)
- mallinfo2(3)
- signbit(3)
- clnt_broadcast(3)
- sched_yield(2)
- sem_open(3)
- sigsetjmp(3)
- cacoshl(3)
- sem_unlink(3)
- setresuid(2)
- signgam(3)
- putw(3)
- imaxdiv(3)
- regex(3)
- alloc_hugepages(2)
- modff(3)
- exp10(3)
- cprojl(3)
- utime(2)
- clogf(3)
- pthread_mutex_unlock(3)
- erff(3)
- ioctl_userfaultfd(2)
- iswprint(3)
- roundl(3)
- sqrtl(3)
- fpurge(3)
- getusershell(3)
- fcloseall(3)
- xdr_opaque_auth(3)
- gethostent_r(3)
- fgetwc_unlocked(3)
- fchmod(2)
- strptime(3)
- lutimes(3)
- htole64(3)
- putchar_unlocked(3)
- create_module(2)
- isascii_l(3)
- sigaction(2)
- stdout(3)
- geteuid32(2)
- xprt_register(3)
- freopen(3)
- ccosl(3)
- pthread_setschedprio(3)
- rt_sigaction(2)
- getmntent(3)
- putwchar_unlocked(3)
- logl(3)
- remque(3)
- unsetenv(3)
- sigwaitinfo(2)
- pthread_mutexattr_getrobust_np(3)
- initstate_r(3)
- getfsfile(3)
- exp2l(3)
- isatty(3)
- lgamma_r(3)
- lrintf(3)
- outb(2)
- __clone2(2)
- strcpy(3)
- clnt_call(3)
- hypot(3)
- fegetexcept(3)
- tcsetpgrp(3)
- gets(3)
- malloc_info(3)
- nextupf(3)
- pthread_attr_getdetachstate(3)
- getaliasent_r(3)
- fstat64(2)
- futimesat(2)
- dl_iterate_phdr(3)
- posix_madvise(3)
- endnetgrent(3)
- tolower_l(3)
- pthread_attr_setstack(3)
- pread64(2)
- sigsetops(3)
- stty(2)
- process_vm_readv(2)
- isfinite(3)
- gethostbyaddr_r(3)
- cproj(3)
- gai_strerror(3)
- key_decryptsession(3)
- inet_ntop(3)
- __ppc_mdoio(3)
- btowc(3)
- setstate_r(3)
- if_nameindex(3)
- fdetach(2)
- random_r(3)
- iruserok_af(3)
- truncl(3)
- clearerr(3)
- lgammaf(3)
- lfind(3)
- ctanf(3)
- strcat(3)
- pthread_attr_getschedpolicy(3)
- pthread_rwlockattr_getkind_np(3)
- sigrelse(3)
- daemon(3)
- pthread_setcanceltype(3)
- sigevent(7)
- iswalnum(3)
- pmap_set(3)
- stdin(3)
- ceilf(3)
- asctime_r(3)
- poll(2)
- svc_unregister(3)
- isnanl(3)
- carg(3)
- getprotobyname(3)
- arm_fadvise(2)
- optind(3)
- mount_setattr(2)
- dlvsym(3)
- ntp_adjtime(3)
- abort(3)
- pthread_getname_np(3)
- execlp(3)
- bind(2)
- bsearch(3)
- endspent(3)
- register_printf_specifier(3)
- landlock_create_ruleset(2)
- mkostemp(3)
- setgroups(2)
- toupper_l(3)
- argz_extract(3)
- sigblock(3)
- j0l(3)
- argz_delete(3)
- setusershell(3)
- getspnam(3)
- optarg(3)
- vm86old(2)
- sigandset(3)
- getdtablesize(3)
- getsockname(2)
- pthread_sigqueue(3)
- ptsname(3)
- j1(3)
- lgamma(3)
- getpagesize(2)
- pthread_mutex_lock(3)
- setsid(2)
- strncat(3)
- ioctl_kd(2)
- tsearch(3)
- mq_notify(2)
- fcvt(3)
- clntudp_bufcreate(3)
- getpwent_r(3)
- pthread_getspecific(3)
- memfrob(3)
- arc4random_buf(3)
- forkpty(3)
- powl(3)
- dlopen(3)
- stderr(3)
- set_thread_area(2)
- query_module(2)
- sem_close(3)
- strndup(3)
- __malloc_hook(3)
- setjmp(3)
- stdio(3)
- bdflush(2)
- sendto(2)
- mpx(2)
- fopen(3)
- setpriority(2)
- nextdownl(3)
- mprobe(3)
- oldstat(2)
- sem_destroy(3)
- bcopy(3)
- remap_file_pages(2)
- isgreaterequal(3)
- getpass(3)
- seekdir(3)
- break(2)
- authunix_create_default(3)
- tty_ioctl(4)
- process_madvise(2)
- endfsent(3)
- atoq(3)
- strftime(3)
- fts(3)
- getgrgid(3)
- isxdigit(3)
- ftello(3)
- regcomp(3)
- error(3)
- getenv(3)
- clnt_sperrno(3)
- readahead(2)
- y0(3)
- roundup(3)
- io_destroy(2)
- vsnprintf(3)
- lgammal(3)
- eventfd_write(3)
- pthread_mutex_trylock(3)
- lchown(2)
- dladdr(3)
- error_print_progname(3)
- pthread_mutexattr_settype(3)
- strspn(3)
- __after_morecore_hook(3)
- localtime(3)
- fsync(2)
- ether_aton(3)
- csinhl(3)
- trunc(3)
- xdr_u_char(3)
- syslog(3)
- y1f(3)
- ioctl_nsfs(2)
- wmemcmp(3)
- ffsll(3)
- ether_ntohost(3)
- bswap_32(3)
- umount2(2)
- sigfillset(3)
- landlock_restrict_self(2)
- pthread_join(3)
- sysinfo(2)
- clock_settime(2)
- llrint(3)
- s390_guarded_storage(2)
- getc(3)
- inet_lnaof(3)
- tcgetpgrp(3)
- clock_getres(2)
- etext(3)
- strfmon_l(3)
- putwc_unlocked(3)
- xdr_replymsg(3)
- scalbl(3)
- fdim(3)
- getspent(3)
- sem_timedwait(3)
- posix_fallocate(3)
- res_nmkquery(3)
- pthread_spin_unlock(3)
- mq_timedsend(2)
- opterr(3)
- getloadavg(3)
- strsignal(3)
- finite(3)
- inw_p(2)
- csinhf(3)
- execveat(2)
- seed48(3)
- sigset(3)
- setgroups32(2)
- logbl(3)
- wcsdup(3)
- clnt_geterr(3)
- sys_errlist(3)
- inotify_rm_watch(2)
- qgcvt(3)
- wcspbrk(3)
- sin(3)
- lookup_dcookie(2)
- s390_pci_mmio_read(2)
- wcscmp(3)
- getutxent(3)
- pciconfig_read(2)
- initstate(3)
- backtrace(3)
- putc_unlocked(3)
- fedisableexcept(3)
- rt_sigprocmask(2)
- clock_adjtime(2)
- fwprintf(3)
- jnl(3)
- grantpt(3)
- cimagl(3)
- getgrnam_r(3)
- remquol(3)
- swprintf(3)
- mbrtowc(3)
- fileno_unlocked(3)
- readlinkat(2)
- sigignore(3)
- strndupa(3)
- semctl(2)
- assert_perror(3)
- sendfile(2)
- shm_unlink(3)
- log(3)
- ungetc(3)
- erf(3)
- qfcvt(3)
- pthread_atfork(3)
- login(3)
- setservent(3)
- jrand48_r(3)
- wcsnlen(3)
- tcflow(3)
- pthread_cond_destroy(3)
- inl(2)
- srand48_r(3)
- erfcf(3)
- iconv(3)
- pthread_mutex_consistent_np(3)
- fabsl(3)
- pclose(3)
- nfsservctl(2)
- gai_error(3)
- wcsncmp(3)
- islower_l(3)
- iswctype(3)
- svc_register(3)
- arm_sync_file_range(2)
- strfry(3)
- strfromd(3)
- getttyent(3)
- rand(3)
- fchown32(2)
- ctime(3)
- fsetxattr(2)
- feupdateenv(3)
- random(3)
- getpwnam_r(3)
- sigwait(3)
- aio_fsync(3)
- mq_open(2)
- tanh(3)
- localtime_r(3)
- bsd_signal(3)
- strsep(3)
- mknodat(2)
- cexpf(3)
- cacosh(3)
- mbrlen(3)
- aio_cancel(3)
- mq_getsetattr(2)
- fdatasync(2)
- htons(3)
- sem_post(3)
- htobe16(3)
- vtimes(3)
- fgetpwent_r(3)
- getwchar_unlocked(3)
- mkdirat(2)
- dup(2)
- free_hugepages(2)
- feraiseexcept(3)
- lockf(3)
- userfaultfd(2)
- pthread_attr_setaffinity_np(3)
- memcpy(3)
- prlimit64(2)
- ferror(3)
- ldexpf(3)
- aio_return(3)
- adjtimex(2)
- execle(3)
- tailq(3)
- cabs(3)
- endaliasent(3)
- execvp(3)
- hasmntopt(3)
- if_freenameindex(3)
- signal(2)
- dn_comp(3)
- pthread_attr_getstack(3)
- ether_hostton(3)
- re_comp(3)
- cexp2l(3)
- getwd(3)
- llroundl(3)
- cos(3)
- pthread_mutex_consistent(3)
- isalpha_l(3)
- io_cancel(2)
- frexp(3)
- finitel(3)
- perf_event_open(2)
- pthread_exit(3)
- ioctl_console(2)
- timelocal(3)
- timersub(3)
- setresgid(2)
- semop(2)
- getgroups(2)
- envz_entry(3)
- xdr_u_long(3)
- seccomp(2)
- ftrylockfile(3)
- setuid(2)
- wcwidth(3)
- llround(3)
- cacoshf(3)
- pthread_attr_setschedpolicy(3)
- fgetpos(3)
- xdr_array(3)
- sprintf(3)
- wmemset(3)
- setcontext(3)
- copysignl(3)
- be64toh(3)
- matherr(3)
- hypotl(3)
- rawmemchr(3)
- fmodf(3)
- mount(2)
- mktime(3)
- stdarg(3)
- clnttcp_create(3)
- string(3)
- profil(3)
- clnt_perror(3)
- getpriority(2)
- regerror(3)
- clone2(2)
- getgid(2)
- pthread_spin_lock(3)
- iswblank(3)
- ftell(3)
- dup3(2)
- toascii(3)
- strncpy(3)
- mrand48_r(3)
- setstate(3)
- sigqueue(3)
- cpowf(3)
- setlogmask(3)
- sched_getcpu(3)
- htobe32(3)
- list(3)
- isdigit_l(3)
- chdir(2)
- fstat(2)
- pwritev2(2)
- get_thread_area(2)
- freelocale(3)
- acoshl(3)
- socketpair(2)
- scalbln(3)
- fpclassify(3)
- getpwnam(3)
- pthread_getcpuclockid(3)
- ioprio_get(2)
- strtok_r(3)
- exit_group(2)
- scalbnf(3)
- xdrrec_create(3)
- pthread_mutex_destroy(3)
- sqrt(3)
- dirname(3)
- exit(2)
- ulckpwdf(3)
- cargl(3)
- powerof2(3)
- simpleq(3)
- process_vm_writev(2)
- fdopendir(3)
- getpt(3)
- floorl(3)
- va_start(3)
- lcong48(3)
- strerror_l(3)
- xdrrec_eof(3)
- key_setsecret(3)
- lstat64(2)
- memfd_secret(2)
- sigreturn(2)
- casinhf(3)
- valloc(3)
- stat64(2)
- jn(3)
- sinl(3)
- pthread_testcancel(3)
- cfgetispeed(3)
- dup2(2)
- getnetent(3)
- pthread_setconcurrency(3)
- memccpy(3)
- rt_sigqueueinfo(2)
- ccosf(3)
- sincos(3)
- tcdrain(3)
- ccos(3)
- chmod(2)
- cacosf(3)
- lstat(2)
- pthread_spin_trylock(3)
- sigisemptyset(3)
- getrpcbyname(3)
- fpathconf(3)
- copysign(3)
- round(3)
- wmemchr(3)
- qfcvt_r(3)
- fattach(2)
- __fsetlocking(3)
- adjtime(3)
- makedev(3)
- des_crypt(3)
- iswspace(3)
- twalk(3)
- exec(3)
- link(2)
- fileno(3)
- endpwent(3)
- logb(3)
- wcscspn(3)
- console_ioctl(4)
- fgetpwent(3)
- setegid(2)
- clnt_destroy(3)
- getaddrinfo_a(3)
- svc_getargs(3)
- addmntent(3)
- globfree(3)
- islower(3)
- muntrace(3)
- clnt_pcreateerror(3)
- llrintl(3)
- clnt_control(3)
- fgetspent_r(3)
- strstr(3)
- putmsg(2)
- __fwritable(3)
- res_nsearch(3)
- fseeko(3)
- mq_timedreceive(3)
- log10(3)
- fexecve(3)
- gammaf(3)
- pthread_setschedparam(3)
- wcscpy(3)
- xdr_float(3)
- pthread_attr_setdetachstate(3)
- sem_wait(3)
- pow10l(3)
- re_exec(3)
- rand_r(3)
- putpmsg(2)
- getdelim(3)
- utimes(2)
- mq_close(3)
- setutent(3)
- creall(3)
- mq_send(3)
- telldir(3)
- powf(3)
- erfl(3)
- pthread_self(3)
- pselect6(2)
- unlocked_stdio(3)
- insw(2)
- cfsetspeed(3)
- argz_create(3)
- xdr_string(3)
- pthread_attr_getguardsize(3)
- finitef(3)
- setlocale(3)
- bcmp(3)
- fmtmsg(3)
- sendmsg(2)
- pthread_cleanup_push(3)
- inb_p(2)
- mmap64(3)
- getuid32(2)
- truncate(2)
- mlock2(2)
- fegetround(3)
- ugetrlimit(2)
- getprotobynumber_r(3)
- utmpxname(3)
- isinf(3)
- clearerr_unlocked(3)
- stime(2)
- nftw(3)
- duplocale(3)
- svcraw_create(3)
- svc_getcaller(3)
- ctanhl(3)
- cbrt(3)
- floorf(3)
- sethostid(3)
- sigemptyset(3)
- sigaltstack(2)
- mkfifo(3)
- lsearch(3)
- getservent_r(3)
- islessgreater(3)
- floor(3)
- argz_append(3)
- tzset(3)
- res_mkquery(3)
- fstatat(2)
- strchr(3)
- semtimedop(2)
- bindresvport(3)
- tcsetattr(3)
- warn(3)
- getservent(3)
- atanhl(3)
- tdelete(3)
- ynf(3)
- ether_ntoa_r(3)
- fesetenv(3)
- mq_timedsend(3)
- quotactl(2)
- init_module(2)
- rcmd(3)
- fenv(3)
- getutxid(3)
- pthread_mutexattr_getpshared(3)
- scalbnl(3)
- atan2l(3)
- argz_count(3)
- rpmatch(3)
- timerfd_gettime(2)
- ualarm(3)
- pthread_attr_init(3)
- vdprintf(3)
- pthread_cancel(3)
- fflush(3)
- setkey_r(3)
- mbstowcs(3)
- mremap(2)
- strcasestr(3)
- hcreate_r(3)
- siginterrupt(3)
- offsetof(3)
- atan(3)
- wctomb(3)
- getutent(3)
- significand(3)
- arm_fadvise64_64(2)
- dremf(3)
- wcswidth(3)
- syscall(2)
- rintf(3)
- bswap_64(3)
- pthread_attr_getschedparam(3)
- lroundf(3)
- timegm(3)
- posix_fadvise(2)
- getrlimit(2)
- svc_freeargs(3)
- xdr_enum(3)
- hcreate(3)
- ptrace(2)
- backtrace_symbols_fd(3)
- fetestexcept(3)
- ccosh(3)
- htole32(3)
- kexec_load(2)
- fallocate(2)
- timer_gettime(2)
- tgammaf(3)
- errno(3)
- sched_get_priority_max(2)
- xdr_getpos(3)
- vwprintf(3)
- ssetmask(2)
- ether_ntoa(3)
- waitpid(2)
- sched_getattr(2)
- inotify_init(2)
- fma(3)
- gnu_get_libc_version(3)
- svctcp_create(3)
- wcstombs(3)
- gethostname(2)
- strerror_r(3)
- sigismember(3)
- fgetws_unlocked(3)
- hash(3)
- circleq(3)
- getrpcbynumber_r(3)
- pthread_cond_timedwait(3)
- uname(2)
- fgetc_unlocked(3)
- mq_open(3)
- cosl(3)
- rewinddir(3)
- nextdown(3)
- longjmp(3)
- execv(3)
- iconv_open(3)
- xencrypt(3)
- ctermid(3)
- isgraph_l(3)
- move_pages(2)
- isunordered(3)
- msgsnd(2)
- rt_sigtimedwait(2)
- syncfs(2)
- mlockall(2)
- pthread_getschedparam(3)
- lsetxattr(2)
- getutid_r(3)
- log1pl(3)
- catanf(3)
- passwd2des(3)
- iconv_close(3)
- aligned_alloc(3)
- sched_setscheduler(2)
- gmtime(3)
- __free_hook(3)
- acoshf(3)
- mtrace(3)
- resolver(3)
- clog10f(3)
- sethostname(2)
- pthread_attr_setguardsize(3)
- tuxcall(2)
- atanh(3)
- ispunct_l(3)
- svcudp_bufcreate(3)
- ctanh(3)
- j1l(3)
- log10l(3)
- alloca(3)
- sigpending(2)
- nexttoward(3)
- isnormal(3)
- svc_getreq(3)
- putchar(3)
- getnetbyaddr(3)
- cpowl(3)
- get_kernel_syms(2)
- getutline_r(3)
- pthread_setaffinity_np(3)
- isnan(3)
- getprotoent(3)
- catclose(3)
- getsid(2)
- endrpcent(3)
- fts_close(3)
- gnu_dev_minor(3)
- ruserok_af(3)
- getutent_r(3)
- getegid(2)
- sgetmask(2)
- posix_memalign(3)
- atanf(3)
- unshare(2)
- lremovexattr(2)
- strncasecmp(3)
- endutent(3)
- updwtmpx(3)
- outsw(2)
- sched_getparam(2)
- setuid32(2)
- catgets(3)
- nextupl(3)
- openat(2)
- logout(3)
- free(3)
- setfsuid(2)
- getutline(3)
- svc_sendreply(3)
- fadvise64_64(2)
- cargf(3)
- __ppc_set_ppr_low(3)
- casinh(3)
- outb_p(2)
- fputwc(3)
- log10f(3)
- getnetgrent(3)
- fputws_unlocked(3)
- ffsl(3)
- endttyent(3)
- isgreater(3)
- sigmask(3)
- sgetspent_r(3)
- fmaxf(3)
- openlog(3)
- strncmp(3)
- closedir(3)
- rexec_af(3)
- exp2(3)
- mcheck(3)
- isalpha(3)
- pthread_mutex_init(3)
- catopen(3)
- clock_nanosleep(2)
- ioctl(2)
- remainder(3)
- olduname(2)
- getcpu(2)
- setns(2)
- asinhl(3)
- wcscasecmp(3)
- nearbyintl(3)
- atan2f(3)
- wctob(3)
- nextdownf(3)
- gmtime_r(3)
- fmal(3)
- setfsgid32(2)
- dlinfo(3)
- posix_spawnp(3)
- fgets_unlocked(3)
- major(3)
- fseek(3)
- xdr_callhdr(3)
- execve(2)
- exit(3)
- makecontext(3)
- sysctl(2)
- oldolduname(2)
- getgrouplist(3)
- pthread_getattr_np(3)
- ffs(3)
- sem_init(3)
- gcvt(3)
- fts_children(3)
- rt_sigreturn(2)
- mallinfo(3)
- insl(2)
- geteuid(2)
- signalfd(2)
- erfcl(3)
- sched_get_priority_min(2)
- sched_setaffinity(2)
- wcsrchr(3)
- xdr_reference(3)
- snprintf(3)
- delete_module(2)
- j0f(3)
- malloc_hook(3)
- casinf(3)
- y0f(3)
- endgrent(3)
- y1l(3)
- pthread_create(3)
- wcsncasecmp(3)
- pidfd_getfd(2)
- htobe64(3)
- _sysctl(2)
- lrand48_r(3)
- warnx(3)
- lgammaf_r(3)
- verrx(3)
- finit_module(2)
- gsignal(3)
- recvfrom(2)
- log2(3)
- fflush_unlocked(3)
- getaliasbyname_r(3)
- pthread_mutexattr_setrobust(3)
- getdirentries(3)
- getrpcbyname_r(3)
- ppoll(2)
- tmpfile(3)
- isupper_l(3)
- xdr_free(3)
- res_nquery(3)
- fts_open(3)
- shutdown(2)
- xdr_callmsg(3)
- coshl(3)
- ntp_gettimex(3)
- afs_syscall(2)
- be32toh(3)
- fchmodat(2)
- addseverity(3)
- pause(2)
- strcmp(3)
- mkostemps(3)
- wcsrtombs(3)
- scandir(3)
- __freadable(3)
- killpg(3)
- add_key(2)
- strcoll(3)
- migrate_pages(2)
- pthread_setattr_default_np(3)
- pthread_attr_setsigmask_np(3)
- sigabbrev_np(3)
- readdir(2)
- subpage_prot(2)
- strfromf(3)
- sysv_signal(3)
- gethostbyname2_r(3)
- outl_p(2)
- sync(2)
- pthread_attr_getinheritsched(3)
- socket(2)
- msgrcv(2)
- fgetws(3)
- pthread_cleanup_push_defer_np(3)
- getnetgrent_r(3)
- ynl(3)
- endservent(3)
- srand(3)
- endmntent(3)
- cbrtl(3)
- setitimer(2)
- pmap_rmtcall(3)
- svcerr_systemerr(3)
- fesetround(3)
- ilogbf(3)
- __fwriting(3)
- log1p(3)
- futimens(3)
- xdrrec_endofrecord(3)
- setreuid32(2)
- swab(3)
- pthread_spin_init(3)
- memchr(3)
- fminf(3)
- getipnodebyname(3)
- msgop(2)
- wait(2)
- ether_aton_r(3)
- open_wmemstream(3)
- xdr_bool(3)
- pthread_tryjoin_np(3)
- xdr_int(3)
- inet_net_ntop(3)
- fdimf(3)
- srand48(3)
- xdr_setpos(3)
- asinf(3)
- program_invocation_name(3)
- write(2)
- mkdtemp(3)
- pthread_cleanup_pop(3)
- ptsname_r(3)
- lgammal_r(3)
- pthread_attr_getstackaddr(3)
- authunix_create(3)
- getpmsg(2)
- ceill(3)
- cexp2f(3)
- kcmp(2)
- setup(2)
- err(3)
- sync_file_range2(2)
- getpid(2)
- wcsncat(3)
- envz_get(3)
- futimes(3)
- mincore(2)
- herror(3)
- ether_line(3)
- feholdexcept(3)
- fputc(3)
- keyctl(2)
- timer_delete(2)
- posix_spawn(3)
- faccessat2(2)
- setnetgrent(3)
- pwrite(2)
- aio_read(3)
- shmget(2)
- acosh(3)
- sigdelset(3)
- __ppc_get_timebase(3)
- __flbf(3)
- dladdr1(3)
- argz_create_sep(3)
- mblen(3)
- gethostent(3)
- pciconfig_iobase(2)
- recvmmsg(2)
- isprint_l(3)
- csqrtf(3)
- wcstoimax(3)
- hsearch_r(3)
- svcudp_create(3)
- setreuid(2)
- le16toh(3)
- name_to_handle_at(2)
- strftime_l(3)
- pthread_attr_setschedparam(3)
- eventfd(2)
- atanhf(3)
- pthread_setspecific(3)
- pthread_cond_init(3)
- acosl(3)
- llistxattr(2)
- fputwc_unlocked(3)
- scanf(3)
- getmntent_r(3)
- getchar(3)
- res_ninit(3)
- error_one_per_line(3)
- sigsetmask(3)
- putwchar(3)
- llroundf(3)
- rt_sigpending(2)
- send(2)
- wcsstr(3)
- log2l(3)
- fmod(3)
- va_copy(3)
- res_search(3)
- res_nsend(3)
- res_query(3)
- wait3(2)
- encrypt_r(3)
- system(3)
- close_range(2)
- ecvt_r(3)
- read(2)
- auth_destroy(3)
- realloc(3)
- pipe2(2)
- dn_expand(3)
- timerclear(3)
- get_avphys_pages(3)
- mbsnrtowcs(3)
- strtok(3)
- fwide(3)
- __ppc_get_timebase_freq(3)
- gai_suspend(3)
- stpcpy(3)
- lldiv(3)
- iswxdigit(3)
- posix_openpt(3)
- s390_pci_mmio_write(2)
- pthread_spin_destroy(3)
- callrpc(3)
- getifaddrs(3)
- aio_suspend(3)
- fread_unlocked(3)
- get_nprocs_conf(3)
- getuid(2)
- spu_run(2)
- termios(3)
- umask(2)
- csqrtl(3)
- register_printf_modifier(3)
- sem_trywait(3)
- tee(2)
- msync(2)
- mpool(3)
- setdomainname(2)
- fopencookie(3)
- nl_langinfo(3)
- sockatmark(3)
- getspent_r(3)
- casinhl(3)
- fdiml(3)
- ntohs(3)
- fgets(3)
- time(2)
- casinl(3)
- pthread_detach(3)
- seccomp_unotify(2)
apt-get install manpages-dev
Available languages:
en fr ruManual
keyctl
NOMBIBLIOTHĂQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYĂE
ERREURS
VERSIONS
STANDARDS
HISTORIQUE
EXEMPLES
Source du programme
VOIR AUSSI
TRADUCTION
NOM
keyctl - Manipuler la gestion des clés du noyau
BIBLIOTHĂQUE
BibliothĂšque C standard ( libc , -lc )
Sinon, les utilitaires de gestion de clefs Linux ( libkeyutils , -lkeyutils ); consultez VERSIONS.
SYNOPSIS
#include
<linux/keyctl.h>
/* Définition des
constantes
KEY*
*/
#include <sys/syscall.h>
/* Définition des
constantes
SYS_*
*/
#include <unistd.h>
long
syscall(SYS_keyctl, int
operation
, unsigned
long
arg2
,
unsigned long
arg3
, unsigned long
arg4
,
unsigned long
arg5
);
Note : la glibc ne fournit pas dâenveloppe pour keyctl (), nĂ©cessitant lâutilisation de syscall (2).
DESCRIPTION
keyctl () permet aux programmes de lâespace utilisateur de manipuler des clĂ©s.
LâopĂ©ration quâeffectue keyctl () dĂ©pend de la valeur du paramĂštre operation . Chacune de ces opĂ©rations fait partie de lâenveloppe de la bibliothĂšque libkeyutils (fournie par le paquet keyutils ) en tant que fonctions individuelles (indiquĂ©es ci-dessous) pour permettre au compilateur de vĂ©rifier les types.
Les valeurs
autorisées pour
operation
sont :
KEYCTL_GET_KEYRING_ID
(depuis Linux 2.6.10)
Associer lâidentifiant dâune clĂ© spĂ©ciale Ă celui dâune clĂ© rĂ©elle pour ce processus.
Cette
opération recherche la clé spéciale
dont lâidentifiant est fourni dans
arg2
(transmis Ă
key_serial_t
). Si la clé
spĂ©ciale est trouvĂ©e, lâidentifiant de
la clé réelle correspondante est
renvoyé en tant que résultat de la fonction.
Les valeurs suivantes peuvent ĂȘtre indiquĂ©es
dans
arg2
:
KEY_SPEC_THREAD_KEYRING
Pour indiquer le trousseau spécifique au thread du thread appelant. Voir thread-keyring (7).
KEY_SPEC_PROCESS_KEYRING
Pour indiquer le trousseau spĂ©cifique au processus de lâappelant. Voir process-keyring (7).
KEY_SPEC_SESSION_KEYRING
Pour indiquer le trousseau spĂ©cifique Ă la session de lâappelant. Voir session-keyring (7).
KEY_SPEC_USER_KEYRING
Pour indiquer le trousseau spĂ©cifique Ă lâUID de lâappelant. Voir user-keyring (7).
KEY_SPEC_USER_SESSION_KEYRING
Pour indiquer le trousseau spĂ©cifique Ă la session de lâUID de lâappelant. Voir user-session-keyring (7).
KEY_SPEC_REQKEY_AUTH_KEY (depuis Linux 2.6.16)
Cela indique la clĂ© dâautorisation créée par request_key (2) et passĂ©e au processus quâil produit pour gĂ©nĂ©rer une clĂ©. Cette clĂ© nâest disponible que dans un programme Ă la maniĂšre de request-key (8) oĂč une clĂ© dâautorisation a Ă©tĂ© passĂ©e par le noyau et cesse dâĂȘtre disponible lorsque la clĂ© demandĂ©e a Ă©tĂ© instanciĂ©e ; voir request_key (2).
KEY_SPEC_REQUESTOR_KEYRING (depuis Linux 2.6.29)
Cela indique lâidentifiant de la clĂ© pour le trousseau de destination request_key (2). Ce trousseau nâest disponible que dans un programme dans le style de request-key (8) oĂč une clĂ© dâautorisation a Ă©tĂ© passĂ©e par le noyau et cesse dâĂȘtre disponible une fois que la clĂ© demandĂ©e a Ă©tĂ© instanciĂ©e ; voir request_key (2).
Si la clĂ© indiquĂ©e dans arg2 nâexiste pas, le comportement dĂ©pend de la valeur de arg3 (diffusĂ©e dans int ). Si arg3 contient une valeur non nulle â et sâil est utile de le faire (comme pour rechercher un utilisateur, une session utilisateur ou une clĂ© de session) â, une nouvelle clĂ© est créée et son identifiant de clĂ© rĂ©elle est renvoyĂ© en tant que rĂ©sultat de la fonction. Sinon, lâopĂ©ration Ă©choue avec lâerreur ENOKEY .
Si un identifiant de clĂ© valable est indiquĂ© dans arg2 et si la clĂ© existe, cette opĂ©ration renvoie simplement lâidentifiant de la clĂ©. Si la clĂ© nâexiste pas, lâappel Ă©choue avec lâerreur ENOKEY .
Lâappelant doit avoir le droit search sur un trousseau pour quâil soit trouvable.
Les paramÚtres arg4 et arg5 sont ignorés.
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_get_keyring_ID (3).
KEYCTL_JOIN_SESSION_KEYRING (depuis Linux 2.6.10)
Remplacer le trousseau de la session à laquelle le processus est rattaché par un nouveau trousseau de session.
Si arg2 vaut NULL, un trousseau anonyme dont la description est « _ses » est créé et le processus est inscrit à ce trousseau en tant que trousseau de sa session, remplaçant le trousseau de la session précédente.
Sinon, arg2 (diffusĂ© dans char * ) est traitĂ© comme la description (le nom) dâun trousseau et le comportement est ainsi :
|
- |
Si un trousseau ayant une description correspondante existe, le processus tentera de sâinscrire Ă ce trousseau en tant que trousseau de session si câest possible ; sans quoi une erreur est renvoyĂ©e. Pour sâinscrire au trousseau, lâappelant doit avoir le droit search sur le trousseau. |
||
|
- |
Si un trousseau avec une description correspondante nâexiste pas, un nouveau trousseau ayant la description indiquĂ©e est créé et le processus est inscrit Ă ce trousseau en tant que trousseau de session. |
Les paramÚtres arg3 , arg4 et arg5 sont ignorés.
Cette opération est mise à disposition par libkeyutils par la fonction keyctl_join_session_keyring (3).
KEYCTL_UPDATE (depuis Linux 2.6.10)
Mettre Ă jour la charge utile des donnĂ©es dâune clĂ©.
Le paramĂštre arg2 (diffusĂ© sur key_serial_t ) indique lâidentifiant de la clĂ© Ă mettre Ă jour. Le paramĂštre arg3 (diffusĂ© sur void * ) pointe vers la nouvelle charge utile et arg4 (diffusĂ© sur size_t ) contient la taille de la nouvelle charge utile (en octets).
Lâappelant doit avoir les droits write sur la clĂ© indiquĂ©e et le type de clĂ© doit gĂ©rer les mises Ă jour.
Une clĂ© instanciĂ©e nĂ©gativement (voir la description de KEYCTL_REJECT ) peut ĂȘtre instanciĂ©e positivement avec cette opĂ©ration.
Le paramÚtre arg5 est ignoré.
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_update (3).
KEYCTL_REVOKE (depuis Linux 2.6.10)
RĂ©voquer la clĂ© dont lâidentifiant est fourni dans arg2 (diffusĂ© sur key_serial_t ). La clĂ© est vouĂ©e Ă aller Ă la poubelle ; elle ne sera plus trouvable et ne sera plus disponible pour de futures opĂ©rations. Les futures tentatives dâutiliser la clĂ© Ă©choueront avec lâerreur EKEYREVOKED .
Lâappelant doit avoir les droits write ou setattr sur la clĂ©.
Les paramÚtres arg3 , arg4 et arg5 sont ignorés.
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_revoke (3).
KEYCTL_CHOWN (depuis Linux 2.6.10)
Changer le propriĂ©taire (identifiant de lâutilisateur et du groupe) dâune clĂ©.
Le paramĂštre arg2 (diffusĂ© sur key_serial_t ) contient lâidentifiant de la clĂ©. Le paramĂštre arg3 (diffusĂ© sur uid_t ) contient lâidentifiant du nouvel utilisateur (ou -1 sâil ne doit pas ĂȘtre modifiĂ©). Le paramĂštre arg4 (diffusĂ© sur gid_t ) contient lâidentifiant du nouveau groupe (ou -1 sâil ne doit pas ĂȘtre modifiĂ©).
La clĂ© doit accorder le droit setattr Ă lâappelant.
Pour pouvoir modifier lâidentifiant utilisateur ou utiliser un identifiant de groupe dont lâappelant nâest pas membre, lâappelant doit avoir la capacitĂ© CAP_SYS_ADMIN (voir capabilities (7)).
Si lâidentifiant utilisateur doit ĂȘtre modifiĂ©, le nouvel utilisateur doit avoir un quota suffisant pour accepter la clĂ©. La dĂ©duction du quota sera dĂ©placĂ©e de lâancien utilisateur vers le nouveau Ă condition que lâUID ait changĂ©.
Le paramÚtre arg5 est ignoré.
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_chown (3).
KEYCTL_SETPERM (depuis Linux 2.6.10)
Passer les droits de la clĂ© dont lâidentifiant est fourni dans le paramĂštre arg2 (diffusĂ© sur key_serial_t ) Ă ceux fournis dans le paramĂštre arg3 (diffusĂ© sur key_perm_t ).
Si lâappelant nâa pas la capacitĂ© CAP_SYS_ADMIN , il ne peut modifier que les droits des clĂ©s quâil possĂšde. (Plus prĂ©cisĂ©ment, lâUID du systĂšme de fichiers de lâappelant doit correspondre Ă lâUID de la clĂ©.)
La clĂ© doit accorder le droit setattr Ă lâappelant indĂ©pendamment de ses capacitĂ©s.
Les droits dans
arg3
indiquent les masques des opérations
disponibles pour chacune des catégories suivantes
dâutilisateur :
possessor
(depuis Linux 2.6.14)
Il sâagit des droits accordĂ©s Ă un processus possĂ©dant la clĂ© (en tant quâil est rattachĂ© Ă un des trousseaux du processus trouvables) ; voir keyrings (7).
|
user |
Il sâagit du droit accordĂ© Ă un processus dont lâidentifiant utilisateur du systĂšme de fichiers correspond Ă celui de la clĂ©. |
||
|
group |
Il sâagit du droit accordĂ© au processus dont lâidentifiant de groupe du systĂšme de fichiers ou un de ses identifiants de groupes supplĂ©mentaires correspond Ă celui de la clĂ©. |
||
|
other |
Il sâagit du droit accordĂ© aux autres processus qui ne rentrent pas dans les catĂ©gories user et group . |
Les catĂ©gories user , group et other sont exclusives : si un processus rentre dans la catĂ©gorie user , il ne recevra pas de droits dans la catĂ©gorie group ; sâil rentre dans la catĂ©gorie user ou group , il ne recevra aucun droit de la catĂ©gorie other .
La catĂ©gorie possessor accorde des droits qui sâajoutent Ă ceux accordĂ©s en vertu des catĂ©gories user , group ou other .
Chaque masque de droits pÚse huit bits, dont seuls six sont actuellement utilisés. Les droits disponibles sont :
|
view |
Droit de lire les attributs dâune clĂ©. |
Ce droit est nĂ©cessaire pour lâopĂ©ration KEYCTL_DESCRIBE .
Les bits de droit pour chaque catégorie sont KEY_POS_VIEW , KEY_USR_VIEW , KEY_GRP_VIEW et KEY_OTH_VIEW .
|
read |
Lire la charge utile dâune clĂ©. |
Ce droit est nĂ©cessaire pour lâopĂ©ration KEYCTL_READ .
Les bits de droit pour chaque catégorie sont KEY_POS_READ , KEY_USR_READ , KEY_GRP_READ et KEY_OTH_READ .
|
write |
Mettre Ă jour ou instancier une clĂ©. Pour un trousseau, attacher ou dĂ©tacher des clĂ©s dâun trousseau. |
Ce droit est nécessaire pour les opérations KEYCTL_UPDATE , KEYCTL_REVOKE , KEYCTL_CLEAR , KEYCTL_LINK et KEYCTL_UNLINK .
Les bits des droits pour chaque catégorie sont KEY_POS_WRITE , KEY_USR_WRITE , KEY_GRP_WRITE et KEY_OTH_WRITE .
|
search |
Rechercher dans les trousseaux et rendre les clés trouvables. Les recherches ne peuvent parcourir des trousseaux imbriqués que si les droits search y sont positionnés. |
Ce droit est nécessaire pour les opérations KEYCTL_GET_KEYRING_ID , KEYCTL_JOIN_SESSION_KEYRING , KEYCTL_SEARCH et KEYCTL_INVALIDATE .
Les bits de droit pour chaque catégorie sont KEY_POS_SEARCH , KEY_USR_SEARCH , KEY_GRP_SEARCH et KEY_OTH_SEARCH .
|
link |
Rattacher une clé ou un trousseau. |
Ce droit est nécessaire pour les opérations KEYCTL_LINK et KEYCTL_SESSION_TO_PARENT .
Les bits des droits pour cette catégorie sont KEY_POS_LINK , KEY_USR_LINK , KEY_GRP_LINK et KEY_OTH_LINK .
setattr (depuis Linux 2.6.15).
Modifier un identifiant dâutilisateur, de groupe ou le masque de droits dâune clĂ©.
Ce droit est nécessaire pour les opérations KEYCTL_REVOKE , KEYCTL_CHOWN et KEYCTL_SETPERM .
Les bits de droits pour chaque catégorie sont KEY_POS_SETATTR , KEY_USR_SETATTR , KEY_GRP_SETATTR et KEY_OTH_SETATTR .
Par commoditĂ©, les macros suivantes sont dĂ©finies en tant que masques pour tous les bits de droits de chacune des catĂ©gories de lâutilisateur : KEY_POS_ALL , KEY_USR_ALL , KEY_GRP_ALL et KEY_OTH_ALL .
Les paramÚtres arg4 et arg5 sont ignorés.
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_setperm (3).
KEYCTL_DESCRIBE (depuis Linux 2.6.10)
Obtenir une chaĂźne dĂ©crivant les attributs dâune clĂ© indiquĂ©e.
Lâidentifiant de la clĂ© Ă dĂ©crire est indiquĂ© dans arg2 (diffusĂ© sur key_serial_t ). La chaĂźne de description est renvoyĂ©e dans le tampon vers lequel pointe arg3 (diffusĂ© sur char * ) ; arg4 (diffusĂ© sur size_t ) indique la taille de ce tampon en octets.
La clĂ© doit accorder le droit view Ă lâappelant.
La chaßne renvoyée se termine par NULL et contient les informations suivantes sur la clé :
type ; uid ; gid ; perm ; description
Dans ce qui précÚde, type et description sont des chaßnes, uid et gid sont des chaßnes décimales et perm est un masque de droits hexadécimal. La chaßne de description est écrite dans le format suivant :
%s;%d;%d;%08x;%s
Note : lâobjectif est dâĂ©tendre la chaĂźne de description dans les futures versions du noyau . En particulier, le champ description ne contiendra pas de point-virgule ; elle doit ĂȘtre analysĂ©e en partant de la fin pour chercher le dernier point-virgule. Cela permettra, Ă lâavenir, dâinsĂ©rer des champs dĂ©limitĂ©s avec des points-virgules.
Une tentative dâĂ©crire dans le tampon nâa lieu que lorsque arg3 nâest pas NULL et quand la taille du tampon indiquĂ©e est assez grande pour accepter la chaĂźne de description (y compris lâoctet NULL final). Afin de dĂ©terminer si la taille du tampon Ă©tait trop petite, vĂ©rifiez que la valeur de retour de lâopĂ©ration est supĂ©rieure Ă arg4 .
Le paramÚtre arg5 est ignoré.
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_describe (3).
KEYCTL_CLEAR
Vider le contenu (Ă savoir dĂ©tacher les clĂ©s) dâun trousseau.
Lâidentifiant de la clĂ© (qui doit ĂȘtre de type trousseau) est fourni dans arg2 (diffusĂ© sur key_serial_t ).
Lâappelant doit avoir le droit write sur le trousseau.
Les paramÚtres arg3 , arg4 et arg5 sont ignorés.
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_clear (3).
KEYCTL_LINK (depuis Linux 2.6.10)
CrĂ©er un lien dâun trousseau vers une clĂ©.
La clé à rattacher est indiquée dans arg2 (diffusé sur key_serial_t ) ; le trousseau est indiqué dans arg3 (diffusé sur key_serial_t ).
Si une clĂ© du mĂȘme type et ayant la mĂȘme description se trouve dĂ©jĂ rattachĂ©e au trousseau, elle est Ă©liminĂ©e du trousseau.
Avant de crĂ©er le rattachement, le noyau vĂ©rifie la profondeur des trousseaux et renvoie les erreurs adĂ©quates si le rattachement crĂ©e une boucle ou si la profondeur des trousseaux serait trop importante (la limite de profondeur est dĂ©finie par la constante KEYRING_SEARCH_MAX_DEPTH du noyau, fixĂ©e Ă 6, et elle est nĂ©cessaire pour empĂȘcher les dĂ©bordements de de la pile du noyau lors dâune recherche rĂ©cursive de trousseaux).
Lâappelant doit avoir le droit link sur la clĂ© Ă ajouter et celui write sur le trousseau.
Les paramÚtres arg4 et arg5 sont ignorés.
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_link (3).
KEYCTL_UNLINK (depuis Linux 2.6.10)
Supprimer une clĂ© dâun trousseau.
Lâidentifiant de la clĂ© Ă dĂ©tacher est indiquĂ© dans arg2 (diffusĂ© sur key_serial_t ) ; lâidentifiant du trousseau dâoĂč la clĂ© doit ĂȘtre dĂ©tachĂ©e est indiquĂ© dans arg3 (diffusĂ© sur key_serial_t ).
Si la clĂ© nâest pas rattachĂ©e au trousseau, cela produit une erreur.
Lâappelant doit avoir le droit write sur le trousseau dâoĂč doit ĂȘtre dĂ©tachĂ©e la clĂ©.
Si le dernier rattachement dâune clĂ© est supprimĂ©, cette clĂ© sera mise en destruction.
Les paramÚtres arg4 et arg5 sont ignorés.
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_unlink (3).
KEYCTL_SEARCH (depuis Linux 2.6.10)
Chercher une clĂ© dans lâarborescence dâun trousseau, renvoyer son identifiant et, Ă©ventuellement, la rattacher Ă un trousseau indiquĂ©.
Lâarborescence oĂč doit sâeffectuer la recherche est indiquĂ©e en passant lâidentifiant de la clĂ© de tĂȘte Ă arg2 (diffusĂ© sur key_serial_t ). La recherche sâeffectue en largeur et rĂ©cursivement.
Les paramĂštres arg3 et arg4 indiquent la clĂ© Ă rechercher : arg3 (diffusĂ© en tant que char * ) contient le type de clĂ© (une chaĂźne de caractĂšres se terminant par NULL et mesurant jusquâĂ 32 octets en comptant lâoctet NULL final), et arg4 (diffusĂ© en tant que char * ) contient la description de la clĂ© (une chaĂźne de caractĂšres se terminant par NULL et mesurant jusquâĂ 4096 octets en comptant lâoctet NULL final).
Le trousseau dâorigine doit autoriser lâappelant Ă search . Pendant la recherche rĂ©cursive, seuls les trousseaux accordant le droit search Ă lâappelant seront explorĂ©s. Seules les clĂ©s pour lesquelles lâappelant a le droit search seront trouvĂ©es.
Si la clé est trouvée, son identifiant est renvoyé en tant que résultat de la fonction.
Si la clĂ© est trouvĂ©e et si arg5 (diffusĂ© sur key_serial_t ) nâest pas zĂ©ro, la clĂ© est rattachĂ©e au trousseau indiquĂ© dont lâidentifiant est indiquĂ© dans arg5 , avec les mĂȘmes contraintes et les mĂȘmes rĂšgles que KEYCTL_LINK . Si le trousseau cible indiquĂ© dans arg5 contient dĂ©jĂ une clĂ© rattachĂ©e du mĂȘme type et Ă la mĂȘme description, cet attachement sera remplacĂ© par un autre avec la clĂ© trouvĂ©e avec cette opĂ©ration.
PlutĂŽt que des identifiants de trousseaux existants valables, les trousseaux dâorigine ( arg2 ) et cible ( arg5 ) peuvent ĂȘtre un des identifiants de trousseau de clĂ©s spĂ©ciales indiquĂ© dans KEYCTL_GET_KEYRING_ID .
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_search (3).
KEYCTL_READ (depuis Linux 2.6.10)
Lire les donnĂ©es de la charge utile ( payload ) dâune clĂ©.
Lâidentifiant de la clĂ© dont la charge utile va ĂȘtre lue est indiquĂ© dans arg2 (diffusĂ© sur key_serial_t ). Il peut sâagir de lâidentifiant dâune clĂ© existante ou un identifiant de clĂ© spĂ©ciale listĂ© dans KEYCTL_GET_KEYRING_ID .
La charge utile est mise dans le tampon vers lequel pointe arg3 (diffusĂ© sur char * ) ; la taille de ce tampon doit ĂȘtre indiquĂ©e dans arg4 (diffusĂ© sur size_t ).
Les donnĂ©es renvoyĂ©es seront traitĂ©es pour ĂȘtre prĂ©sentĂ©es en fonction du type de clĂ©. Par exemple, un trousseau renverra un tableau dâentrĂ©es key_serial_t qui reprĂ©sentent les identifiants de toutes les clĂ©s qui y sont rattachĂ©es. Le type de clĂ© user renverra ses donnĂ©es telles quelles. Si un type de clĂ© nâimplĂ©mente pas cette fonction, lâopĂ©ration Ă©choue avec lâerreur EOPNOTSUPP .
Si arg3 nâest pas NULL, autant de donnĂ©es que possible de la charge utile seront copiĂ©es dans le tampon. En cas de renvoi dâun succĂšs, la valeur est toujours la taille totale des donnĂ©es de la charge utile. Pour savoir si le tampon Ă©tait de taille suffisante, vĂ©rifiez que la valeur de retour est infĂ©rieure ou Ă©gale Ă celle fournie dans arg4 .
La clĂ© doit accorder Ă lâappelant le droit read , ou bien lui accorder le droit search quand elle est recherchĂ©e depuis les trousseaux dâun processus (Ă savoir quand elle est dĂ©tenue).
Le paramÚtre arg5 est ignoré.
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_read (3).
KEYCTL_INSTANTIATE (depuis Linux 2.6.10)
Instancier (positivement) une clé non instanciée avec une charge utile indiquée
Lâidentifiant de la clĂ© Ă instancier est fournie dans arg2 (diffusĂ©e sur key_serial_t ).
La charge utile de la clé est indiquée dans le tampon vers lequel pointe arg3 (diffusé sur void * ) ; la taille de ce tampon est indiquée dans arg4 (diffusée sur size_t ).
La charge utile peut ĂȘtre un pointeur NULL et la taille du tampon peut ĂȘtre de 0 si cela est pris en charge par le type de clĂ© (si câest un trousseau, par exemple).
LâopĂ©ration peut Ă©chouer si les donnĂ©es de charge utile sont dans un mauvais format ou non valables pour toute autre raison.
Si arg5 (diffusĂ© sur key_serial_t ) nâest pas zĂ©ro, la clĂ© instanciĂ©e est rattachĂ©e au trousseau dont lâidentifiant a Ă©tĂ© indiquĂ© dans arg5 , avec les mĂȘmes contraintes et les mĂȘmes rĂšgles que KEYCTL_LINK .
Lâappelant doit avoir la clĂ© dâautorisation adĂ©quate, et une fois que la clĂ© non instanciĂ©e a Ă©tĂ© instanciĂ©e, la clĂ© dâautorisation est rĂ©voquĂ©e. Autrement dit, cette opĂ©ration nâest disponible quâĂ partir dâun programme de style request-key (8). Voir request_key (2) pour une explication sur les clĂ©s non instanciĂ©es et lâinstanciation de clĂ©s.
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_instantiate (3).
KEYCTL_NEGATE (depuis Linux 2.6.10)
Instancier négativement une clé non instanciée.
Cette opĂ©ration est Ă©quivalente Ă lâappel :
keyctl(KEYCTL_REJECT, arg2, arg3, ENOKEY, arg4);
Le paramÚtre arg5 est ignoré.
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_negate (3).
KEYCTL_SET_REQKEY_KEYRING (depuis Linux 2.6.10)
DĂ©finir le trousseau par dĂ©faut auquel les clĂ©s demandĂ©es implicitement seront rattachĂ©es pour ce thread et renvoyer la configuration prĂ©cĂ©dente. Les requĂȘtes de clĂ© implicites sont celles que des composants du noyau effectuent en interne, comme par exemple lors de lâouverture de fichiers sur des systĂšmes de fichiers AFS ou NFS. Le fait de dĂ©finir un trousseau par dĂ©faut produit Ă©galement des effets lors dâune demande de clĂ© depuis lâespace utilisateur ; voir request_key (2) pour les dĂ©tails.
Le
paramĂštre
arg2
(diffusé sur
int
)
doit contenir une des valeurs suivantes pour indiquer le
nouveau trousseau par défaut :
KEY_REQKEY_DEFL_NO_CHANGE
Ne pas modifier le trousseau par défaut. Cela peut servir à rechercher le trousseau par défaut actuel (sans le modifier).
KEY_REQKEY_DEFL_DEFAULT
Cela sĂ©lectionne le comportement par dĂ©faut qui consiste Ă utiliser le trousseau spĂ©cifique au thread sâil y en a un, ou sinon celui spĂ©cifique au processus sâil y en a un, ou bien celui spĂ©cifique Ă la session sâil y en a un, ou sinon celui de la session spĂ©cifique de lâidentifiant utilisateur, ou celui spĂ©cifique Ă lâutilisateur.
KEY_REQKEY_DEFL_THREAD_KEYRING
Utiliser le trousseau spécifique du thread ( thread-keyring (7)) en tant que nouveau trousseau par défaut.
KEY_REQKEY_DEFL_PROCESS_KEYRING
Utiliser le trousseau spécifique au processus ( process-keyring (7)) en tant que nouveau trousseau par défaut.
KEY_REQKEY_DEFL_SESSION_KEYRING
Utiliser le trousseau spécifique à la session ( session-keyring (7)) en tant que nouveau trousseau par défaut.
KEY_REQKEY_DEFL_USER_KEYRING
Utiliser le trousseau spĂ©cifique Ă lâidentifiant utilisateur ( user-keyring (7)) en tant que nouveau trousseau par dĂ©faut.
KEY_REQKEY_DEFL_USER_SESSION_KEYRING
Utiliser le trousseau de la session spĂ©cifique de lâidentifiant utilisateur ( user-session-keyring (7)) en tant que nouveau trousseau par dĂ©faut.
KEY_REQKEY_DEFL_REQUESTOR_KEYRING (depuis Linux 2.6.29)
Utiliser le trousseau du demandeur.
Toutes les autres valeurs ne sont pas valables.
Les paramÚtres arg3 , arg4 et arg5 sont ignorés.
Le paramĂštre que contrĂŽle cette opĂ©ration est rĂ©cupĂ©rĂ© par lâenfant de fork (2) et conservĂ© durant un execve (2).
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_set_reqkey_keyring (3).
KEYCTL_SET_TIMEOUT (depuis Linux 2.6.10)
DĂ©finir un dĂ©lai dâexpiration sur une clĂ©.
Lâidentifiant de la clĂ© est indiquĂ© dans arg2 (diffusĂ© sur key_serial_t ). La valeur du dĂ©lai, en seconde Ă partir de lâheure actuelle, est indiquĂ©e dans arg3 (diffusĂ© sur unsigned int ). Le dĂ©lai se mesure par rapport Ă lâhorloge en temps rĂ©el.
Lâindication dâune valeur de dĂ©lai de 0 vide les dĂ©lais existants de la clĂ©.
Le fichier /proc/keys affiche le temps restant avant lâexpiration de chaque clĂ© (il sâagit de la seule mĂ©thode de recherche du temps de vie dâune clĂ©).
Lâappelant doit avoir le droit setattr sur la clĂ© ou dĂ©tenir un jeton dâautorisation dâinstanciation pour cette clĂ© (voir request_key (2)).
La clĂ© et les liens vis-Ă -vis dâelle seront automatiquement mis Ă la poubelle aprĂšs le dĂ©lai dâexpiration. Les futurs essais dây accĂ©der Ă©choueront avec lâerreur EKEYEXPIRED .
Cette opĂ©ration ne peut pas ĂȘtre utilisĂ©e pour poser des limites Ă des clĂ©s rĂ©voquĂ©es, expirĂ©es ou instanciĂ©es nĂ©gativement.
Les paramÚtres arg4 et arg5 sont ignorés.
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_set_timeout (3).
KEYCTL_ASSUME_AUTHORITY (depuis Linux 2.6.10)
Assumer (ou se dĂ©barrasser) de lâautoritĂ© pour le thread appelant pour instancier une clĂ©.
Ce paramĂštre arg2 (diffusĂ© sur key_serial_t ) fait assumer lâautoritĂ© Ă un identifiant de clĂ© autre que zĂ©ro, ou retire lâautoritĂ© grĂące Ă la valeur 0 .
Si arg2 nâest pas zĂ©ro, il indique un identifiant de clĂ© non instanciĂ©e qui devra assumer lâautoritĂ©. Cette clĂ© peut alors ĂȘtre instanciĂ©e en utilisant KEYCTL_INSTANTIATE , KEYCTL_INSTANTIATE_IOV , KEYCTL_REJECT ou KEYCTL_NEGATE . Quand la clĂ© a Ă©tĂ© instanciĂ©e, le thread se voit automatiquement retirer le pouvoir dâinstancier la clĂ©.
Une clĂ© ne peut assumer une autoritĂ© que si le thread appelant a dans ses trousseaux la clĂ© dâautorisation associĂ©e Ă la clĂ© (autrement dit, lâopĂ©ration KEYCTL_ASSUME_AUTHORITY nâest disponible quâĂ partir dâun programme du style request-key (8) ; voir request_key (2) pour une explication sur la maniĂšre dont cette opĂ©ration est utilisĂ©e). Lâappelant doit avoir le droit search sur la clĂ© dâautorisation.
Si la clĂ© indiquĂ©e a une clĂ© dâautorisation associĂ©e, lâidentifiant de cette clĂ© est renvoyĂ©. La clĂ© dâautorisation peut ĂȘtre lue ( KEYCTL_READ ) pour obtenir les informations dâappel transmises Ă request_key (2).
Si lâidentifiant fourni dans arg2 est 0 , lâautoritĂ© actuellement assumĂ©e est retirĂ©e et la valeur 0 est renvoyĂ©e.
Le mĂ©canisme KEYCTL_ASSUME_AUTHORITY permet Ă un programme tel que requestkey (8) dâassumer lâautoritĂ© nĂ©cessaire pour instancier une nouvelle clĂ© non instanciĂ©e créée suite Ă un appel Ă request_key (2). Pour plus dâinformations, voir request_key (2) et le fichier Documentation/security/keys-request-key.txt des sources du noyau.
Les paramÚtres arg3 , arg4 et arg5 sont ignorés.
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_assume_authority (3).
KEYCTL_GET_SECURITY (depuis Linux 2.6.26)
RĂ©cupĂ©rer lâĂ©tiquette de sĂ©curitĂ© LSM (Linux Security Module) de la clĂ© indiquĂ©e.
Lâidentifiant de la clĂ© dont lâĂ©tiquette doit ĂȘtre rĂ©cupĂ©rĂ©e est indiquĂ© dans arg2 (diffusĂ© sur key_serial_t ). LâĂ©tiquette de sĂ©curitĂ© (qui se termine par un octet NULL) sera mis dans le tampon vers lequel pointe arg3 (diffusĂ© sur char * ) ; la taille du tampon doit ĂȘtre fournie dans arg4 (diffusĂ©e sur size_t ).
Si arg3 est indiquĂ© en tant que NULL ou si la taille du tampon indiquĂ©e dans arg4 est trop petite, toute la taille de la chaĂźne de lâĂ©tiquette de sĂ©curitĂ© (y compris lâoctet NULL de fin) est renvoyĂ©e en tant que rĂ©sultat de la fonction et rien nâest copiĂ© dans le tampon.
Lâappelant doit avoir le droit view sur la clĂ© indiquĂ©e.
La chaĂźne de lâĂ©tiquette de sĂ©curitĂ© renvoyĂ©e sera affichĂ©e sous la bonne forme sur le LSM en mode force. Par exemple, avec SELinux, elle peut ressembler Ă Â :
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Si aucun LSM nâest en mode force, une chaĂźne vide est placĂ©e dans le tampon.
Le paramÚtre arg5 est ignoré.
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide des fonctions keyctl_get_security (3) et keyctl_get_security_alloc (3).
KEYCTL_SESSION_TO_PARENT (depuis Linux 2.6.32)
Remplacer le trousseau de session auquel est enregistré le parent du processus appelant par celui du processus appelant.
Le trousseau sera remplacĂ© dans le processus parent sur les prochains points de transition du parent entre lâespace noyau et lâespace utilisateur.
Le trousseau doit exister et accorder le droit link Ă lâappelant. Le processus parent doit ĂȘtre single-threaded et appartenir au mĂȘme utilisateur/groupe effectif que ce processus, et il ne doit pas ĂȘtre set-user-ID ou set-group-ID. Lâidentifiant utilisateur du trousseau de la session existante du processus parent (sâil en existe un) et celui du trousseau de session de lâappelant doivent correspondre Ă celui de lâidentifiant utilisateur effectif de lâappelant.
Le fait que le processus parent soit touchĂ© par cette opĂ©ration permet Ă un programme tel quâun interprĂ©teur de dĂ©marrer un processus enfant qui utilise cette opĂ©ration pour modifier le trousseau de session de lâinterprĂ©teur (câest ce que fait la commande new_session de keyctl (1)).
Les paramÚtres arg2 , arg3 , arg4 et arg5 sont ignorés.
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_session_to_parent (3).
KEYCTL_REJECT (depuis Linux 2.6.39)
Marquer une clĂ© comme Ă©tant instanciĂ©e nĂ©gativement et positionner une durĂ©e dâexpiration sur la clĂ©. Cette opĂ©ration ajoute un supplĂ©ment Ă lâopĂ©ration KEYCTL_NEGATE ci-dessus.
Lâidentifiant de la clĂ© Ă instancier nĂ©gativement est indiquĂ© dans arg2 (diffusĂ© sur key_serial_t ). Le paramĂštre arg3 (diffusĂ© sur unsigned int ) indique la durĂ©e de vie de la clĂ© en seconde. Le paramĂštre arg4 (diffusĂ© sur unsigned int ) indique lâerreur Ă renvoyer quand une recherche trouve cette clé ; gĂ©nĂ©ralement il sâagit de EKEYREJECTED , EKEYREVOKED ou EKEYEXPIRED .
Si arg5 (diffusĂ© sur key_serial_t ) nâest pas nul, la clĂ© instanciĂ©e nĂ©gativement est rattachĂ©e au trousseau dont lâidentifiant est indiquĂ© dans arg5 , avec les mĂȘmes contraintes et les mĂȘmes rĂšgles que KEYCTL_LINK .
Lâappelant doit avoir la clĂ© dâautorisation adĂ©quate. Autrement dit, cette opĂ©ration nâest disponible quâĂ partir dâun programme dans le style request-key (8). Voir request_key (2).
Lâappelant doit avoir la clĂ© dâautorisation adĂ©quate, et une fois que la clĂ© non instanciĂ©e a Ă©tĂ© instanciĂ©e, la clĂ© dâautorisation est rĂ©voquĂ©e. Autrement dit, cette opĂ©ration nâest disponible quâĂ partir dâun programme de style request-key (8). Voir request_key (2) pour une explication sur les clĂ©s non instanciĂ©es et lâinstanciation de clĂ©s.
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_reject (3).
KEYCTL_INSTANTIATE_IOV (depuis Linux 2.6.39)
Instancier une clĂ© non instanciĂ©e avec la charge utile indiquĂ©e Ă lâaide dâun vecteur de tampons.
Cette opĂ©ration est la mĂȘme que KEYCTL_INSTANTIATE , mais les donnĂ©es de la charge utile sont indiquĂ©es sous forme dâun tableau de structures iovec (voir iovec (3type)).
Le pointeur vers le vecteur de charge utile est indiquĂ© dans arg3 (diffusĂ© en tant que const struct iovec * ). Le nombre dâĂ©lĂ©ments du vecteur est indiquĂ© dans arg4 (diffusĂ© en tant que unsigned int ).
arg2 (identifiant de clé) et arg5 (identifiant de trousseau) sont interprétés avec KEYCTL_INSTANTIATE .
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_instantiate_iov (3).
KEYCTL_INVALIDATE (depuis Linux 3.5)
Marquer une clé comme non valable.
Lâidentifiant de la clĂ© Ă rendre non valable est indiquĂ© dans arg2 (diffusĂ© sur key_serial_t ).
Pour rendre une clĂ© non valable, lâappelant doit avoir le droit search sur la clĂ©.
Cette opĂ©ration marque la clĂ© comme non valable et programme sa mise immĂ©diate Ă la corbeille. Le ramasse-miettes, supprime les clĂ©s non valables de tous les trousseaux et efface la clĂ© quand son nombre de rĂ©fĂ©rences atteint 0 . AprĂšs cette opĂ©ration, cette clĂ© sera ignorĂ©e par toutes les recherches, mĂȘme si elle nâest pas encore effacĂ©e.
Les clĂ©s marquĂ©es comme non valables deviennent aussitĂŽt invisibles pour les opĂ©rations de clĂ© normales, bien quâelle soient encore visibles dans /proc/keys (avec un drapeau « i ») jusquâĂ ce quâelles soient totalement supprimĂ©es.
Les paramÚtres arg3 , arg4 et arg5 sont ignorés.
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_invalidate (3).
KEYCTL_GET_PERSISTENT (depuis Linux 3.13)
RĂ©cupĂ©rer le trousseau persistant ( persistent-keyring (7)) dâun utilisateur indiquĂ© et le rattacher au trousseau indiquĂ©.
Lâidentifiant utilisateur est indiquĂ© dans arg2 (diffusĂ© sur uid_t ). Si la valeur -1 est indiquĂ©e, lâidentifiant de lâutilisateur rĂ©el de lâappelant est utilisĂ©. Lâidentifiant du trousseau de destination est indiquĂ© dans arg3 (diffusĂ© sur key_serial_t ).
Lâappelant doit avoir la capacitĂ© CAP_SETUID dans son espace de noms utilisateur afin de rĂ©cupĂ©rer le trousseau persistant pour un identifiant utilisateur qui ne correspond pas Ă lâidentifiant utilisateur rĂ©el ou effectif de lâappelant.
Si lâappel rĂ©ussit, un lien vers le trousseau persistant est ajoutĂ© au trousseau dont lâidentifiant a Ă©tĂ© indiquĂ© dans arg3 .
Lâappelant doit avoir le droit write sur le trousseau.
Le trousseau persistant sera créé par le noyau sâil nâexiste pas encore.
Chaque fois que lâopĂ©ration KEYCTL_GET_PERSISTENT est effectuĂ©e, le trousseau persistant aura un dĂ©lai dâexpiration rĂ©initialisĂ© Ă la valeur dans :
/proc/sys/kernel/keys/persistent_keyring_expiry
Lorsque le dĂ©lai est atteint, le trousseau persistant sera supprimĂ© et son contenu pourra ĂȘtre collectĂ© par le ramasse-miettes.
Des trousseaux persistants ont été ajoutés dans Linux 3.13.
Les paramÚtres arg4 et arg5 sont ignorés.
Cette opĂ©ration est mise Ă disposition par libkeyutils Ă lâaide de la fonction keyctl_get_persistent (3).
KEYCTL_DH_COMPUTE (depuis Linux 4.7)
Calculer la clé secrÚte Diffie-Hellman partagée ou la clé publique, en appliquant éventuellement une fonction de dérivation de clé (KDF) au résultat.
Le paramÚtre arg2 est un pointeur vers un ensemble de paramÚtres contenant les numéros de série de trois clés « utilisateur » utilisés dans le calcul Diffie-Hellman, empaquetés dans une structure de la forme suivante :
struct
keyctl_dh_params {
int32_t private; /* La clé privée locale */
int32_t prime; /* Le nombre premier, connue des deux
cÎtés */
int32_t base; /* Lâentier de base : soit un
générateur partagé,
soit la clé publique distante */
};
Chacune des trois clĂ©s indiquĂ©es dans cette structure doit accorder le droit read Ă lâappelant. Les charges utiles de ces clĂ©s sont utilisĂ©es pour calculer le rĂ©sultat Diffie-Hellman ainsi :
base ^ private mod prime
Si la base est le générateur partagé, le résultat est la clé publique locale. Si la base est la clé publique distante, le résultat est le code secret partagé.
Le paramĂštre arg3 (diffusĂ© sur char * ) pointe vers un tampon oĂč est mis le rĂ©sultat du calcul. La taille de ce tampon est indiquĂ©e dans arg4 (diffusĂ© sur size_t ).
Le tampon doit ĂȘtre assez grand pour accueillir les donnĂ©es de sortie, sans quoi une erreur est renvoyĂ©e. Si arg4 vaut zĂ©ro, le tampon nâest pas utilisĂ© et lâopĂ©ration renvoie la taille minimale requise du tampon (Ă savoir la longueur du nombre premier).
Les calculs Diffie-Hellman peuvent ĂȘtre effectuĂ©s dans lâespace utilisateur mais exigent une bibliothĂšque multiprĂ©cision dâentiers (MPI). Le dĂ©placement de lâimplĂ©mentation dans le noyau donne accĂšs Ă lâimplĂ©mentation MPI du noyau et permet dâaccĂ©der Ă la sĂ©curisation et Ă lâaccĂ©lĂ©ration matĂ©rielle.
Lâajout de la prise en charge du calcul DH Ă lâappel systĂšme keyctl () a Ă©tĂ© considĂ©rĂ© comme convenable grĂące Ă lâutilisation de lâalgorithme DH pour faire dĂ©river les clĂ©s partagĂ©es ; cela permet aussi au type de clĂ© de dĂ©terminer lâimplĂ©mentation DH adĂ©quate (logicielle ou matĂ©rielle).
Si le paramĂštre arg5 vaut NULL , le rĂ©sultat DH lui-mĂȘme est renvoyĂ©. Sinon, (depuis Linux 4.12), il sâagit dâun pointeur vers une structure qui indique les paramĂštres de lâopĂ©ration KDF Ă appliquer :
struct
keyctl_kdf_params {
char *hashname; /* Nom de lâalgorithm de hachage */
char *otherinfo; /* SP800-56A OtherInfo */
__u32 otherinfolen; /* Taille des données otherinfo
*/
__u32 __spare[8]; /* Réservé */
};
Le champ hashname est une chaĂźne se terminant par NULL qui indique un nom de hachage (disponible dans lâAPI de chiffrement du noyau ; la liste des hachages disponibles est plutĂŽt difficile Ă examiner ; veuillez vous reporter Ă la documentation de la « Kernel Crypto API Architecture » pour des informations sur la maniĂšre dont les noms de hachage sont construits, et aux sources et Ă la configuration de votre noyau concernant les chiffrements et les modĂšles de type CRYPTO_ALG_TYPE_SHASH disponibles) Ă appliquer au rĂ©sultat DH dans lâopĂ©ration KDF.
Le champ otherinfo consiste dans des donnĂ©es OtherInfo comme dĂ©crit dans la section 5.8.1.2 de SP800-56A et il est spĂ©cifique Ă lâalgorithme. Ces donnĂ©es sont concatĂ©nĂ©es avec le rĂ©sultat de lâopĂ©ration DH et elles sont fournies comme entrĂ©e de lâopĂ©ration KDF. Leur taille est fournie dans le champ otherinfolen et limitĂ©e Ă la constante KEYCTL_KDF_MAX_OI_LEN dĂ©finie dans security/keys/internal.h Ă la valeur 64.
Le champ __spare est actuellement inusitĂ©. Il Ă©tait ignorĂ© jusquâĂ Linux 4.13 (mais il est encore visible par lâutilisateur puisquâil est copiĂ© dans le noyau) et il devrait contenir des zĂ©ros depuis Linux 4.13.
LâimplĂ©mentation KDF se conforme Ă SP800-56A et Ă SP800-108 (le compteur KDF).
Cette opĂ©ration est mise Ă disposition par libkeyutils (Ă partir de libkeyutils 1.5.10 jusquâĂ aujourdâhui) Ă lâaide de la fonction keyctl_dh_compute (3) et de keyctl_dh_compute_alloc (3).
KEYCTL_RESTRICT_KEYRING (depuis Linux 4.12)
Appliquer une restriction de
rattachement de clé à un trousseau dont
lâidentifiant est fourni dans
arg2
(diffusé sur
key_serial_t
). Lâappelant
doit avoir le droit
setattr
sur la clé. Si
arg3
vaut NULL, toute tentative dâajout au
trousseau est bloquée ; sinon il contient un
pointeur vers une chaĂźne contenant le nom du type de
clé et
arg4
contient un pointeur vers une
chaßne contenant la restriction spécifique au
type de clé. à partir de Linux 4.12, seul
le type « asymmetric » a des
restrictions définies :
builtin_trusted
Nâautoriser que les clĂ©s signĂ©es par une clĂ© rattachĂ©e au trousseau interne (« .builtin_trusted_keys »).
builtin_and_secondary_trusted
Nâautoriser que les clĂ©s signĂ©es par une clĂ© rattachĂ©e Ă un trousseau secondaire (« .secondary_trusted_keys ») ou, par extension, Ă une clĂ© du trousseau interne, puisque le deuxiĂšme est liĂ© au premier.
key_or_keyring:
key
key_or_keyring:
key
:chain
Si key indique lâidentifiant dâune clĂ© de type « asymmetric », seules les clĂ©s signĂ©es par cette clĂ© sont autorisĂ©es.
Si key indique lâidentifiant dâun trousseau, seules les clĂ©s signĂ©es par une clĂ© rattachĂ©e Ă ce trousseau sont autorisĂ©es.
Si « :chain » est indiquĂ©, les clĂ©s signĂ©es par une clĂ© rattachĂ©e au trousseau de destination (câest-Ă -dire le trousseau dont lâidentifiant est indiquĂ© dans le paramĂštre arg2 ) sont aussi autorisĂ©es.
Remarquez quâune restriction ne peut ĂȘtre configurĂ©e quâune fois pour le trousseau indiqué ; une fois quâune restriction est positionnĂ©e, elle ne peut pas ĂȘtre contournĂ©e.
Le paramÚtre arg5 est ignoré.
VALEUR RENVOYĂE
Pour quâun
appel réussisse, le code de retour dépend de
lâopĂ©ration :
KEYCTL_GET_KEYRING_ID
Lâidentifiant du trousseau demandĂ©.
KEYCTL_JOIN_SESSION_KEYRING
Lâidentifiant du trousseau de la session quâon vient de rejoindre.
KEYCTL_DESCRIBE
La taille de la description (comprenant lâoctet NULL de fin) indĂ©pendamment de la taille du tampon fournie.
KEYCTL_SEARCH
Lâidentifiant de la clĂ© trouvĂ©e.
KEYCTL_READ
La quantité de données disponibles dans la clé, indépendamment de la taille du tampon fournie.
KEYCTL_SET_REQKEY_KEYRING
Lâidentifiant du trousseau par dĂ©faut prĂ©cĂ©dent auquel ont Ă©tĂ© rattachĂ©es implicitement les clĂ©s sollicitĂ©es (un parmi KEY_REQKEY_DEFL_USER_* ).
KEYCTL_ASSUME_AUTHORITY
0 si lâidentifiant donnĂ© valait 0 , ou lâidentifiant de la clĂ© dâautorisation correspondant Ă la clĂ© indiquĂ©e, si un identifiant de clĂ© autre que zĂ©ro a Ă©tĂ© fourni.
KEYCTL_GET_SECURITY
La taille de la chaĂźne de lâĂ©tiquette de sĂ©curitĂ© LSM (y compris lâoctet NULL de fin), indĂ©pendamment de la taille du tampon fourni.
KEYCTL_GET_PERSISTENT
Lâidentifiant du trousseau persistant.
KEYCTL_DH_COMPUTE
Le nombre dâoctets copiĂ©s dans le tampon ou, si arg4 vaut 0 , la taille du tampon nĂ©cessaire.
Toutes les autres opérations :
Zéro.
En cas dâerreur, la valeur de retour est -1 et errno est dĂ©finie pour prĂ©ciser lâerreur.
ERREURS
|
EACCES |
LâopĂ©ration demandĂ©e nâĂ©tait pas autorisĂ©e. |
||
|
EAGAIN |
operation Ă©tait KEYCTL_DH_COMPUTE et une erreur sâest produite lors de lâinitialisation du module de chiffrement. |
EDEADLK
operation était KEYCTL_LINK et le rattachement demandé conduirait à une boucle.
EDEADLK
operation était KEYCTL_RESTRICT_KEYRING et la restriction de trousseau demandée aboutirait à une boucle.
|
EDQUOT |
Le quota de clĂ©s de lâutilisateur appelant serait dĂ©passĂ© si la clĂ© Ă©tait créée ou ajoutĂ©e au trousseau. |
||
|
EEXIST |
operation était KEYCTL_RESTRICT_KEYRING et le trousseau fourni dans le paramÚtre arg2 comporte déjà une restriction. |
||
|
EFAULT |
operation était KEYCTL_DH_COMPUTE et une des actions suivantes a échoué : |
-
|
copie de la struct keyctl_dh_params , fournie dans le paramĂštre arg2 , depuis lâespace utilisateur ; |
|||
|
- |
copie de la struct keyctl_kdf_params , fournie dans lâargument non NULL arg5 , depuis lâespace utilisateur (si le noyau gĂšre lâopĂ©ration KDF lors du rĂ©sultat de lâopĂ©ration DH) ; |
||
|
- |
copie des donnĂ©es vers lesquelles pointe le champ hashname de la struct keyctl_kdf_params Ă partir de lâespace utilisateur ; |
||
|
- |
copie des donnĂ©es vers lesquelles pointe le champ otherinfo de la struct keyctl_kdf_params depuis lâespace utilisateur si le champ otherinfolen nâĂ©tait pas zĂ©ro ; |
||
|
- |
copie du rĂ©sultat vers lâespace utilisateur. |
||
|
EINVAL |
operation était KEYCTL_SETPERM et un bit de droit non valable a été indiqué dans arg3 .
|
EINVAL |
operation Ă©tait KEYCTL_SEARCH et la taille de la description (comprenant lâoctet NULL de fin) dĂ©passait 4096 octets. |
||
|
EINVAL |
la taille de la chaĂźne (y compris lâoctet NULL final) indiquĂ©e dans arg3 (le type de clĂ©) ou dans arg4 (la description de la clĂ©) dĂ©passait les limites (respectivement 32 et 4096 octets). |
EINVAL (avant Linux 4.12)
operation Ă©tait KEYCTL_DH_COMPUTE , le paramĂštre arg5 nâĂ©tait pas NULL.
|
EINVAL |
operation Ă©tait KEYCTL_DH_COMPUTE et la taille de lâempreinte numĂ©rique de lâalgorithme de hachage fourni est de zĂ©ro. |
||
|
EINVAL |
operation Ă©tait KEYCTL_DH_COMPUTE et la taille du tampon fournie nâest pas suffisante pour contenir le rĂ©sultat. Mettez 0 en tant que taille de tampon pour obtenir la taille minimale du tampon. |
||
|
EINVAL |
operation Ă©tait KEYCTL_DH_COMPUTE et le nom de hachage fourni dans le champ hashname de la struct keyctl_kdf_params vers laquelle pointe le paramĂštre arg5 est trop grand (la limite est spĂ©cifique Ă lâimplĂ©mentation et varie entre les versions du noyau, mais elle est considĂ©rĂ©e comme suffisante pour tous les noms dâalgorithmes valables). |
||
|
EINVAL |
operation était KEYCTL_DH_COMPUTE et le champ __spare de la struct keyctl_kdf_params fournie dans le paramÚtre arg5 contient des valeurs autres que zéro. |
EKEYEXPIRED
Une clé expirée a été trouvée ou spécifiée.
EKEYREJECTED
Une clé rejetée a été trouvée ou spécifiée.
EKEYREVOKED
Une clé révoquée a été trouvée ou spécifiée.
|
ELOOP |
operation Ă©tait KEYCTL_LINK et le rattachement demandĂ© ferait dĂ©passer la profondeur maximale dâimbrication des trousseaux. |
EMSGSIZE
operation était KEYCTL_DH_COMPUTE et la longueur du tampon dépasse KEYCTL_KDF_MAX_OUTPUT_LEN (qui est actuellement de 1024) ou le champ otherinfolen de la struct keyctl_kdf_parms fournie dans arg5 dépasse KEYCTL_KDF_MAX_OI_LEN (qui est actuellement de 64).
ENFILE (avant Linux 3.13)
operation Ă©tait KEYCTL_LINK et le trousseau est complet (avant Linux 3.13, lâespace disponible de stockage de rattachements de trousseaux Ă©tait limitĂ© Ă une seule page mĂ©moire ; depuis Linux 3.13, il nây a pas de limite fixĂ©e).
|
ENOENT |
operation Ă©tait KEYCTL_UNLINK et la clĂ© Ă dĂ©tacher nâest pas rattachĂ©e au trousseau. |
||
|
ENOENT |
operation Ă©tait KEYCTL_DH_COMPUTE et lâalgorithme de hachage indiquĂ© dans le champ hashname de la struct keyctl_kdf_params vers laquelle pointe le paramĂštre arg5 nâa pas Ă©tĂ© trouvĂ©. |
||
|
ENOENT |
operation était KEYCTL_RESTRICT_KEYRING et le type fourni dans le paramÚtre arg3 ne gÚre pas la définition de restrictions de rattachement de clés. |
||
|
ENOKEY |
Aucune clĂ© correspondante nâa Ă©tĂ© trouvĂ©e, ou une clĂ© non valable a Ă©tĂ© spĂ©cifiĂ©e. |
||
|
ENOKEY |
La valeur KEYCTL_GET_KEYRING_ID Ă©tait indiquĂ©e dans operation , la clĂ© indiquĂ©e dans arg2 nâexistait pas et arg3 valait zĂ©ro (ce qui veut dire ne pas crĂ©er de clĂ© si elle nâexiste pas). |
||
|
ENOMEM |
Une des routines de lâallocation mĂ©moire du noyau a Ă©chouĂ© lors de lâexĂ©cution de lâappel systĂšme. |
ENOTDIR
Une clĂ© de type trousseau Ă©tait attendue mais lâidentifiant dâune clĂ© de type diffĂ©rent a Ă©tĂ© fourni.
EOPNOTSUPP
operation était KEYCTL_READ et le type de clé ne gÚre pas la lecture (par exemple, le type est « login » ).
EOPNOTSUPP
operation était KEYCTL_UPDATE et le type de clé ne gÚre pas les mises à jour.
EOPNOTSUPP
operation était KEYCTL_RESTRICT_KEYRING , le type fourni dans le paramÚtre arg3 était « asymmetric », et la clé indiquée dans la spécification de la restriction fournie dans arg4 a un autre type que « asymmetric » ou « keyring ».
|
EPERM |
operation Ă©tait KEYCTL_GET_PERSISTENT , arg2 indiquait un identifiant utilisateur diffĂ©rent de celui de lâutilisateur rĂ©el ou effectif du thread appelant, et lâappelant nâavait pas la capacitĂ© CAP_SETUID . |
||
|
EPERM |
operation Ă©tait KEYCTL_SESSION_TO_PARENT et : soit tous les identifiants utilisateur (ou de groupe) du processus parent ne correspondent pas Ă celui effectif du processus appelant ; soit lâidentifiant utilisateur du trousseau de session du parent, ou celui du trousseau de session de lâappelant, ne correspondait pas Ă lâidentifiant de lâutilisateur effectif de lâappelant ; soit le processus parent se compose de plus dâun thread ; soit le processus parent est init (1) ou un thread du noyau. |
ETIMEDOUT
operation Ă©tait KEYCTL_DH_COMPUTE et lâinitialisation des modules de chiffrement a dĂ©passĂ© le dĂ©lai.
VERSIONS
Une enveloppe est fournie dans la bibliothĂšque libkeyutils . (Le paquet accompagnant fournit le fichier dâen-tĂȘte <keyutils.h> .) Cependant, plutĂŽt que dâutiliser cet appel systĂšme directement, vous voudrez probablement utiliser les fonctions de la bibliothĂšque mentionnĂ©es dans les descriptions des opĂ©rations individuelles ci-dessus.
STANDARDS
Linux.
HISTORIQUE
Linux 2.6.10.
EXEMPLES
Le programme ci-dessous fournit un sous-ensemble de fonctions du programme request-key (8) fourni par le paquet keyutils . Pour information, le programme enregistre diverses informations dans un fichier journal.
Comme indiquĂ© dans request_key (2), le programme request-key (8) est appelĂ© avec les paramĂštres de la ligne de commande qui dĂ©crivent une clĂ© Ă instancier. Le programme exemple rĂ©cupĂšre et enregistre ces arguments. Le programme endosse lâautoritĂ© dâinstancier la clĂ© demandĂ©e, puis il instancie cette clĂ©.
La session dâinterprĂ©teur suivante montre lâutilisation de ce programme. Dans la session, nous compilons le programme, puis nous lâutilisons pour remplacer temporairement le programme request-key (8) standard (remarquez que la dĂ©sactivation temporaire du programme standard request-key (8) peut ne pas ĂȘtre sure sur certains systĂšmes). Tant que notre programme exemple est installĂ©, nous utilisons le programme exemple prĂ©sent dans request_key (2) pour demander une clĂ©.
$
cc -o
key_instantiate key_instantiate.c -lkeyutils
$
sudo mv /sbin/request-key /sbin/request-key.backup
$
sudo cp key_instantiate /sbin/request-key
$
./t_request_key user mykey somepayloaddata
Lâidentifiant de clĂ© est 20d035bf
$
sudo mv /sbin/request-key.backup
/sbin/request-key
En regardant le fichier journal créé par ce programme, on peut voir les paramÚtres de la ligne de commande fournis à notre programme exemple :
$
cat
/tmp/key_instantiate.log
Time: Mon Nov 7 13:06:47 2016
Command line arguments:
argv[0]: /sbin/request-key
operation: create
key_to_instantiate: 20d035bf
UID: 1000
GID: 1000
thread_keyring: 0
process_keyring: 0
session_keyring: 256e6a6
Les derniÚres lignes de la sortie ci-dessus montrent que le programme exemple a pu récupérer :
|
- |
la description de la clé à instanciée, qui incluait le nom de la clé ( mykey ) ; |
||
|
- |
la charge utile de la clĂ© dâautorisation, qui consistait dans des donnĂ©es ( somepayloaddata ) passĂ©es Ă request_key (2) ; |
||
|
- |
le trousseau de destination indiquĂ© dans lâappel Ă request_key (2) ; |
||
|
- |
la description de la clĂ© dâautorisation oĂč on peut voir que le nom de la clĂ© correspond Ă lâidentifiant de celle Ă instancier ( 20d035bf ). |
Le programme exemple dans request_key (2) indiquait le trousseau de destination en tant que KEY_SPEC_SESSION_KEYRING . En examinant le contenu de /proc/keys , on peut voir que cela a Ă©tĂ© transcrit dans lâidentifiant du trousseau de destination ( 0256e6a6 ) affichĂ© dans le fichier journal ci-dessus ; on peut aussi voir la clĂ© nouvellement créée dont le nom est mykey et lâidentifiant est 20d035bf .
$
cat
/proc/keys | egrep 'mykey|256e6a6'
0256e6a6 I--Q--- 194 perm 3f030000 1000 1000 keyring _ses: 3
20d035bf I--Q--- 1 perm 3f010000 1000 1000 user mykey:
16
Source du programme
/*
key_instantiate.c */
#include <errno.h>
#include <keyutils.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <time.h>
#ifndef KEY_SPEC_REQUESTOR_KEYRING
#define KEY_SPEC_REQUESTOR_KEYRING (-8)
#endif
int
main(int argc, char *argv[])
{
int akp_size; /* Taille de auth_key_payload */
int auth_key;
char dbuf[256];
char auth_key_payload[256];
char *operation;
FILE *fp;
gid_t gid;
uid_t uid;
time_t t;
key_serial_t key_to_instantiate, dest_keyring;
key_serial_t thread_keyring, process_keyring,
session_keyring;
if (argc != 8) {
fprintf(stderr, "Usage : %s op key uid gid
thread_keyring "
"process_keyring session_keyring\n", argv[0]);
exit(EXIT_FAILURE);
}
fp = fopen("/tmp/key_instantiate.log",
"w");
if (fp == NULL)
exit(EXIT_FAILURE);
setbuf(fp, NULL);
t = time(NULL);
fprintf(fp, "Time: %s\n", ctime(&t));
/*
* Le noyau passe un ensemble fixe de paramĂštres au
programme
* quâil exĂ©cute ; les rĂ©cupĂ©rer.
*/
operation = argv[1];
key_to_instantiate = atoi(argv[2]);
uid = atoi(argv[3]);
gid = atoi(argv[4]);
thread_keyring = atoi(argv[5]);
process_keyring = atoi(argv[6]);
session_keyring = atoi(argv[7]);
fprintf(fp, "ParamĂštres de la ligne de commande
:\n");
fprintf(fp, " argv[0]: %s\n", argv[0]);
fprintf(fp, " operation: %s\n", operation);
fprintf(fp, " key_to_instantiate: %jx\n",
(uintmax_t) key_to_instantiate);
fprintf(fp, " UID: %jd\n", (intmax_t) uid);
fprintf(fp, " GID: %jd\n", (intmax_t) gid);
fprintf(fp, " thread_keyring: %jx\n",
(uintmax_t) thread_keyring);
fprintf(fp, " process_keyring: %jx\n",
(uintmax_t) process_keyring);
fprintf(fp, " session_keyring: %jx\n",
(uintmax_t) session_keyring);
fprintf(fp, "\n");
/*
* Assumer lâautoritĂ© pour instancier la
clé nommée dans argv[2].
*/
if (keyctl(KEYCTL_ASSUME_AUTHORITY, key_to_instantiate) ==
-1) {
fprintf(fp, "KEYCTL_ASSUME_AUTHORITY a
échoué : %s\n",
strerror(errno));
exit(EXIT_FAILURE);
}
/*
* Récupérer la description de la clé
Ă instancier.
*/
if (keyctl(KEYCTL_DESCRIBE, key_to_instantiate,
dbuf, sizeof(dbuf)) == -1) {
fprintf(fp, "KEYCTL_DESCRIBE a échoué :
%s\n", strerror(errno));
exit(EXIT_FAILURE);
}
fprintf(fp, "Description de clé : %s\n",
dbuf);
/*
* Récupérer la charge utile de la clé
dâautorisation, qui est en fait
* les donnĂ©es dâappel (callout) donnĂ©es
Ă request_key().
*/
akp_size = keyctl(KEYCTL_READ, KEY_SPEC_REQKEY_AUTH_KEY,
auth_key_payload, sizeof(auth_key_payload));
if (akp_size == -1) {
fprintf(fp, "KEYCTL_READ a échoué :
%s\n", strerror(errno));
exit(EXIT_FAILURE);
}
auth_key_payload[akp_size] = '\0';
fprintf(fp, "Charge utile de la clĂ© dâauth
: %s\n", auth_key_payload);
/*
* Par intĂ©rĂȘt, rĂ©cupĂ©rer
lâidentifiant de la clĂ© dâautorisation et
* lâafficher.
*/
auth_key = keyctl(KEYCTL_GET_KEYRING_ID,
KEY_SPEC_REQKEY_AUTH_KEY);
if (auth_key == -1) {
fprintf(fp, "KEYCTL_GET_KEYRING_ID a
échoué : %s\n",
strerror(errno));
exit(EXIT_FAILURE);
}
fprintf(fp, "Identifiant de la clĂ© dâauth
: %jx\n", (uintmax_t) auth_key);
/*
* RĂ©cupĂ©rer lâidentifiant de clĂ©
pour le trousseau de destination
* request_key(2).
*/
dest_keyring = keyctl(KEYCTL_GET_KEYRING_ID,
KEY_SPEC_REQUESTOR_KEYRING);
if (dest_keyring == -1) {
fprintf(fp, "KEYCTL_GET_KEYRING_ID a
échoué : %s\n",
strerror(errno));
exit(EXIT_FAILURE);
}
fprintf(fp, "Trousseau de destination : %jx\n",
(uintmax_t) dest_keyring);
/*
* Récupérer la description de la clé
dâautorisation. Cela nous permet
* de voir le type de clĂ©, lâidentifiant
utilisateur et de groupe, les
* droits et la description (nom) de la clé. Entre
autres choses,
* on verra que le nom de la clé est une chaßne
hexadécimale représentant
* lâidentifiant de la clĂ© Ă instancier.
*/
if (keyctl(KEYCTL_DESCRIBE, KEY_SPEC_REQKEY_AUTH_KEY,
dbuf, sizeof(dbuf)) == -1)
{
fprintf(fp, "KEYCTL_DESCRIBE a échoué :
%s\n", strerror(errno));
exit(EXIT_FAILURE);
}
fprintf(fp, "Description de la clĂ© dâauth
: %s\n", dbuf);
/*
* Instancier la clé en utilisant les données
de lâappel (callout)
* fournies dans la charge utile de la clé
dâautorisation.
*/
if (keyctl(KEYCTL_INSTANTIATE, key_to_instantiate,
auth_key_payload, akp_size + 1, dest_keyring) == -1)
{
fprintf(fp, "KEYCTL_INSTANTIATE a échoué
: %s\n",
strerror(errno));
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
VOIR AUSSI
keyctl (1), add_key (2), request_key (2), keyctl (3), keyctl_assume_authority (3), keyctl_chown (3), keyctl_clear (3), keyctl_describe (3), keyctl_describe_alloc (3), keyctl_dh_compute (3), keyctl_dh_compute_alloc (3), keyctl_get_keyring_ID (3), keyctl_get_persistent (3), keyctl_get_security (3), keyctl_get_security_alloc (3), keyctl_instantiate (3), keyctl_instantiate_iov (3), keyctl_invalidate (3), keyctl_join_session_keyring (3), keyctl_link (3), keyctl_negate (3), keyctl_read (3), keyctl_read_alloc (3), keyctl_reject (3), keyctl_revoke (3), keyctl_search (3), keyctl_session_to_parent (3), keyctl_set_reqkey_keyring (3), keyctl_set_timeout (3), keyctl_setperm (3), keyctl_unlink (3), keyctl_update (3), recursive_key_scan (3), recursive_session_key_scan (3), capabilities (7), credentials (7), keyrings (7), keyutils (7), persistent-keyring (7), process-keyring (7), session-keyring (7), thread-keyring (7), user-keyring (7), user_namespaces (7), user-session-keyring (7), request-key (8)
Les fichiers sources du noyau Documentation/security/keys/ (ou avant Linux 4.13, dans le fichier Documentation/security/keys.txt ).
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Philippe MENGUAL <jpmengual@debian.org>
Cette traduction est une documentation libre ; veuillez vous reporter Ă la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il nây a aucune RESPONSABILITĂ LĂGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .