pkey_alloc(2) - wariua/manpages-ko GitHub Wiki

NAME

pkey_alloc, pkey_free - 보호 ν‚€ ν• λ‹Ήν•˜κ³  ν•΄μ œν•˜κΈ°

SYNOPSIS

#define _GNU_SOURCE             /* feature_test_macros(7) */
#include <sys/mman.h>

int pkey_alloc(unsigned int flags, unsigned int access_rights);
int pkey_free(int pkey);

DESCRIPTION

pkey_alloc()은 보호 ν‚€(pkey)λ₯Ό ν• λ‹Ήν•œλ‹€. κ·Έ ν‚€λ₯Ό pkey_mprotect(2)에 전달할 수 μžˆλ‹€.

pkey_alloc()의 flagsλŠ” ν–₯ν›„ μš©λ„λ₯Ό μœ„ν•΄ μ˜ˆμ•½λ˜μ–΄ 있으며 ν˜„μž¬λŠ” 항상 0으둜 μ§€μ •ν•΄μ•Ό ν•œλ‹€.

pkey_alloc()의 access_rights μΈμžμ—λŠ” 0개 μ΄μƒμ˜ λΉ„ν™œμ„±ν™” λ™μž‘μ„ 담을 수 μžˆλ‹€.

PKEY_DISABLE_ACCESS
λ°˜ν™˜λœ 보호 ν‚€μ˜ λŒ€μƒ λ©”λͺ¨λ¦¬μ— λͺ¨λ“  데이터 접근을 λͺ» ν•˜κ²Œ ν•œλ‹€.
PKEY_DISABLE_WRITE
λ°˜ν™˜λœ 보호 ν‚€μ˜ λŒ€μƒ λ©”λͺ¨λ¦¬μ— μ“°κΈ° 접근을 λͺ» ν•˜κ²Œ ν•œλ‹€.

pkey_free()λŠ” 보호 ν‚€λ₯Ό ν•΄μ œν•˜κ³  이후 할당에 μ“Έ 수 있게 λ§Œλ“ λ‹€. 보호 ν‚€λ₯Ό ν•΄μ œν•œ ν›„μ—λŠ” μ–΄λ–€ 보호 ν‚€ κ΄€λ ¨ μž‘μ—…μ—λ„ λ”λŠ” μ‚¬μš©ν•  수 μ—†λ‹€.

pkey_mprotect(2)에 μ˜ν•΄ μ–΄λŠ μ£Όμ†Œ λ²”μœ„λ‘œ ν• λ‹Ήλ˜μ–΄μ„œ 아직 μ‚¬μš© 쀑인 보호 킀에 λŒ€ν•΄ μ‘μš©μ—μ„œ pkey_free()λ₯Ό ν˜ΈμΆœν•˜μ§€ 말아야 ν•œλ‹€. 이 경우의 λ™μž‘μ€ κ·œμ •λ˜μ–΄ μžˆμ§€ μ•ŠμœΌλ©° 였λ₯˜λ₯Ό μœ λ°œν•  μˆ˜λ„ μžˆλ‹€.

RETURN VALUE

성곡 μ‹œ pkey_alloc()은 μ–‘μˆ˜ 보호 ν‚€ 값을 λ°˜ν™˜ν•œλ‹€. 성곡 μ‹œ pkey_free()λŠ” 0을 λ°˜ν™˜ν•œλ‹€. 였λ₯˜ μ‹œ -1을 λ°˜ν™˜ν•˜λ©° errnoλ₯Ό 적절히 μ„€μ •ν•œλ‹€.

ERRORS

EINVAL
pkey, flags, access_rightsκ°€ μœ νš¨ν•˜μ§€ μ•Šλ‹€.
ENOSPC

(pkey_alloc()) ν˜„μž¬ ν”„λ‘œμ„ΈμŠ€μ—μ„œ μ“Έ 수 μžˆλŠ” λͺ¨λ“  보호 ν‚€κ°€ 이미 ν• λ‹Ήλ˜μ—ˆλ‹€. μ‚¬μš© κ°€λŠ₯ν•œ ν‚€ κ°œμˆ˜λŠ” μ•„ν‚€ν…μ²˜ 및 κ΅¬ν˜„μ— 따라 달라지며 컀널 λ‚΄λΆ€μ˜ νŠΉμ • ν‚€ μ‚¬μš© λ•Œλ¬Έμ— 쀄어듀 μˆ˜λ„ μžˆλ‹€. ν˜„μž¬ x86μ—μ„œλŠ” μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ—μ„œ 15개 ν‚€λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.

ν”„λ‘œμ„Έμ„œλ‚˜ 운영 μ²΄μ œμ—μ„œ 보호 ν‚€λ₯Ό μ§€μ›ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ—λ„ 이 였λ₯˜κ°€ λ°˜ν™˜λœλ‹€. μ‘μš©μ˜ ν†΅μ œ λ²”μœ„ λ°– μš”μΈλ“€ λ•Œλ¬Έμ— μ‚¬μš© κ°€λŠ₯ν•œ pkey κ°œμˆ˜κ°€ 쀄어듀 수 μžˆμœΌλ―€λ‘œ μ‘μš©μ—μ„œλŠ” μ–Έμ œλ‚˜ 이 였λ₯˜λ₯Ό λ‹€λ£° μ€€λΉ„κ°€ λ˜μ–΄ μžˆμ–΄μ•Ό ν•  것이닀.

VERSIONS

λ¦¬λˆ…μŠ€ 컀널 4.9μ—μ„œ pkey_alloc()κ³Ό pkey_free()κ°€ μΆ”κ°€λ˜μ—ˆλ‹€. glibc 2.27μ—μ„œ 라이브러리 지원이 μΆ”κ°€λ˜μ—ˆλ‹€.

CONFORMING TO

pkey_alloc() 및 pkey_free() μ‹œμŠ€ν…œ ν˜ΈμΆœμ€ λ¦¬λˆ…μŠ€ μ „μš©μ΄λ‹€.

NOTES

운영 μ²΄μ œκ°€ 보호 ν‚€λ₯Ό μ§€μ›ν•˜λŠ”μ§€ 여뢀와 상관없이 μ–Έμ œλ‚˜ pkey_alloc()은 ν˜ΈμΆœν•΄λ„ μ•ˆμ „ν•˜λ‹€. 이λ₯Ό pkey 지원 탐지λ₯Ό μœ„ν•œ λ‹€λ₯Έ λ©”μ»€λ‹ˆμ¦˜ λŒ€μ‹  μ‚¬μš©ν•  수 있으며, 운영 μ²΄μ œμ— pkey 지원이 μ—†μœΌλ©΄ κ·Έλƒ₯ ENOSPC 였λ₯˜λ‘œ μ‹€νŒ¨ν•˜κ²Œ λœλ‹€.

μ»€λ„μ—μ„œλŠ” ν• λ‹Ήλœ 보호 킀듀에 λŒ€ν•΄μ„œλ§Œ ν•˜λ“œμ›¨μ–΄ κΆŒν•œ λ ˆμ§€μŠ€ν„°(PKRU)의 λ‚΄μš©λ¬Όμ΄ λ³΄μ‘΄λœλ‹€κ³  보μž₯ν•œλ‹€. ν‚€κ°€ ν• λ‹Ήλ˜μ–΄ μžˆμ§€ μ•Šμ„ λ•ŒλŠ” (pkey_alloc() 호좜이 ν‚€λ₯Ό λ°˜ν™˜ν•˜κΈ° μ „μ΄λ‚˜ pkey_free()λ₯Ό 톡해 ν‚€λ₯Ό ν•΄μ œν•œ ν›„μ—λŠ”) μ–Έμ œλ“  κ·Έ ν‚€μ˜ μ ‘κ·ΌκΆŒμ— 영ν–₯을 μ£ΌλŠ” κΆŒν•œ λ ˆμ§€μŠ€ν„°μ˜ λ‚΄μš©μ„ 컀널이 μž„μ˜λ‘œ λ°”κΏ€ μˆ˜λ„ μžˆλ‹€.

EXAMPLE

pkey(7) μ°Έκ³ .

SEE ALSO

pkey_mprotect(2), pkeys(7)


2019-08-02

⚠️ **GitHub.com Fallback** ⚠️