pkey_alloc(2) - wariua/manpages-ko GitHub Wiki
pkey_alloc, pkey_free - λ³΄νΈ ν€ ν λΉνκ³ ν΄μ νκΈ°
#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);
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()
λ₯Ό νΈμΆνμ§ λ§μμΌ νλ€. μ΄ κ²½μ°μ λμμ κ·μ λμ΄ μμ§ μμΌλ©° μ€λ₯λ₯Ό μ λ°ν μλ μλ€.
μ±κ³΅ μ pkey_alloc()
μ μμ λ³΄νΈ ν€ κ°μ λ°ννλ€. μ±κ³΅ μ pkey_free()
λ 0μ λ°ννλ€. μ€λ₯ μ -1μ λ°ννλ©° errno
λ₯Ό μ μ ν μ€μ νλ€.
EINVAL
-
pkey
,flags
,access_rights
κ° μ ν¨νμ§ μλ€. ENOSPC
-
(
pkey_alloc()
) νμ¬ νλ‘μΈμ€μμ μΈ μ μλ λͺ¨λ λ³΄νΈ ν€κ° μ΄λ―Έ ν λΉλμλ€. μ¬μ© κ°λ₯ν ν€ κ°μλ μν€ν μ² λ° κ΅¬νμ λ°λΌ λ¬λΌμ§λ©° 컀λ λ΄λΆμ νΉμ ν€ μ¬μ© λλ¬Έμ μ€μ΄λ€ μλ μλ€. νμ¬ x86μμλ μ¬μ©μ νλ‘κ·Έλ¨μμ 15κ° ν€λ₯Ό μ¬μ©ν μ μλ€.νλ‘μΈμλ μ΄μ 체μ μμ λ³΄νΈ ν€λ₯Ό μ§μνμ§ μλ κ²½μ°μλ μ΄ μ€λ₯κ° λ°νλλ€. μμ©μ ν΅μ λ²μ λ° μμΈλ€ λλ¬Έμ μ¬μ© κ°λ₯ν pkey κ°μκ° μ€μ΄λ€ μ μμΌλ―λ‘ μμ©μμλ μΈμ λ μ΄ μ€λ₯λ₯Ό λ€λ£° μ€λΉκ° λμ΄ μμ΄μΌ ν κ²μ΄λ€.
리λ
μ€ μ»€λ 4.9μμ pkey_alloc()
κ³Ό pkey_free()
κ° μΆκ°λμλ€. glibc 2.27μμ λΌμ΄λΈλ¬λ¦¬ μ§μμ΄ μΆκ°λμλ€.
pkey_alloc()
λ° pkey_free()
μμ€ν
νΈμΆμ 리λ
μ€ μ μ©μ΄λ€.
μ΄μ 체μ κ° λ³΄νΈ ν€λ₯Ό μ§μνλμ§ μ¬λΆμ μκ΄μμ΄ μΈμ λ pkey_alloc()
μ νΈμΆν΄λ μμ νλ€. μ΄λ₯Ό pkey μ§μ νμ§λ₯Ό μν λ€λ₯Έ λ©μ»€λμ¦ λμ μ¬μ©ν μ μμΌλ©°, μ΄μ 체μ μ pkey μ§μμ΄ μμΌλ©΄ κ·Έλ₯ ENOSPC
μ€λ₯λ‘ μ€ν¨νκ² λλ€.
컀λμμλ ν λΉλ λ³΄νΈ ν€λ€μ λν΄μλ§ νλμ¨μ΄ κΆν λ μ§μ€ν°(PKRU)μ λ΄μ©λ¬Όμ΄ 보쑴λλ€κ³ 보μ₯νλ€. ν€κ° ν λΉλμ΄ μμ§ μμ λλ (pkey_alloc()
νΈμΆμ΄ ν€λ₯Ό λ°ννκΈ° μ μ΄λ pkey_free()
λ₯Ό ν΅ν΄ ν€λ₯Ό ν΄μ ν νμλ) μΈμ λ κ·Έ ν€μ μ κ·ΌκΆμ μν₯μ μ£Όλ κΆν λ μ§μ€ν°μ λ΄μ©μ 컀λμ΄ μμλ‘ λ°κΏ μλ μλ€.
pkey(7) μ°Έκ³ .
2019-08-02