๋ ๋ํธ ํฌํฐ๋ง
ํ ๋๋ ํ ๋ฆฌ ํ๊ฒฝ์ ๋ฐ์ดํฐ๊ฐ ์ํธํ๋ ๋ง์ดํธ๋ ์ด๋ฏธ์ง ํ์ผ ํํ๋ก ์ ๊ณต๋ฉ๋๋ค. ์ฌ์ฉ์ ์๊ฒฉ ์ฆ๋ช
์ /etc/passwd ๋ฐ /etc/shadow ๋์ ์์คํ
์ค์ ์ด ์๋ ํ ๋๋ ํฐ๋ฆฌ์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
๋งค๊ฐ๋ณ์์๋ SSH ํค, ์์ฒด ์ธ์ ์ธ์ฆ ๋ฐ์ดํฐ, ์ด๋ฏธ์ง, ์ด๋ฉ์ผ, ์ฃผ์, ์๊ฐ๋, ์ธ์ด, ํ๋ก์ธ์ค ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ ํ, ์ถ๊ฐ ๋ง์ดํธ ํ๋๊ทธ(nodev, noexec, nosuid), ์ฌ์ฉ๋ ์ฌ์ฉ์ IMAP/SMTP ์๋ฒ์ ๋ํ ์ ๋ณด์ ๊ฐ์ ์ถ๊ฐ ์ ๋ณด๊ฐ ํฌํจ๋ ์๋ ์์ต๋๋ค. , ์๋
๋ณดํธ ๊ธฐ๋ฅ ํ์ฑํ, ๋ฐฑ์
์ต์
๋ฑ์ ๋ํ ์ ๋ณด ๋งค๊ฐ๋ณ์๋ฅผ ์์ฒญํ๊ณ ๊ตฌ๋ฌธ ๋ถ์ํ๊ธฐ ์ํ API๊ฐ ์ ๊ณต๋ฉ๋๋ค.
UID/GID ํ ๋น ๋ฐ ์ฒ๋ฆฌ๋ ํ ๋๋ ํฐ๋ฆฌ๊ฐ ์ฐ๊ฒฐ๋ ๊ฐ ๋ก์ปฌ ์์คํ ์์ ๋์ ์ผ๋ก ์ํ๋ฉ๋๋ค. ์ ์๋ ์์คํ ์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๋ ์์ ์ ํ ๋๋ ํฐ๋ฆฌ(์: ํ๋์ ๋๋ผ์ด๋ธ)๋ฅผ ์ ์งํ๊ณ ๋ช ์์ ์ผ๋ก ๊ณ์ ์ ๋ง๋ค์ง ์๊ณ ๋ ๋ชจ๋ ์ปดํจํฐ์์ ์์ ํ๊ฒฝ์ ์ป์ ์ ์์ต๋๋ค(ํ ๋๋ ํฐ๋ฆฌ ์ด๋ฏธ์ง๊ฐ ์๋ ํ์ผ์ด ์์). ์ฌ์ฉ์์ ํฉ์ฑ์ผ๋ก ์ด์ด์ง๋๋ค).
๋ฐ์ดํฐ ์ํธํ๋ฅผ ์ํด LUKS2 ํ์ ์์คํ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ์๋์์ง๋ง systemd-homed๋ฅผ ์ฌ์ฉํ๋ฉด ์ํธํ๋์ง ์์ ๋๋ ํฐ๋ฆฌ, Btrfs, Fscrypt ๋ฐ CIFS ๋คํธ์ํฌ ํํฐ์ ๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋ฐฑ์๋๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ํด๋์ฉ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ ๋๋ ํ ๋ฆฌ์ ์ด๋ฏธ์ง๋ฅผ ์์ฑ ๋ฐ ํ์ฑํํ๊ณ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ ์ ์๋ homectl ์ ํธ๋ฆฌํฐ๊ฐ ์ ์๋์์ต๋๋ค.
์์คํ ์์ค์์๋ ๋ค์ ๊ตฌ์ฑ ์์๋ฅผ ํตํด ์์ ์ด ๋ณด์ฅ๋ฉ๋๋ค.
- systemd-homed.service - ํ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๊ณ JSON ๋ ์ฝ๋๋ฅผ ํ ๋๋ ํฐ๋ฆฌ ์ด๋ฏธ์ง์ ์ง์ ํฌํจํฉ๋๋ค.
- pam_systemd - ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ ๋ JSON ํ๋กํ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฒ๋ฆฌํ๊ณ ํ์ฑํ๋ ์ธ์ ์ ์ปจํ ์คํธ์์ ์ด๋ฅผ ์ ์ฉํฉ๋๋ค(์ธ์ฆ ์ํ, ํ๊ฒฝ ๋ณ์ ๊ตฌ์ฑ ๋ฑ).
- systemd-logind.service - ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ ๋ JSON ํ๋กํ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ค์ํ ๋ฆฌ์์ค ๊ด๋ฆฌ ์ค์ ์ ์ ์ฉํ๊ณ ์ ํ์ ์ค์ ํฉ๋๋ค.
- nss-systemd - glibc์ฉ NSS ๋ชจ๋์ JSON ํ๋กํ์ ๊ธฐ๋ฐ์ผ๋ก ํด๋์ NSS ๋ ์ฝ๋๋ฅผ ํฉ์ฑํ์ฌ UNIX ์ฌ์ฉ์ ์ฒ๋ฆฌ API(/etc/password)์์ ํ์ ํธํ์ฑ์ ์ ๊ณตํฉ๋๋ค.
- PID 1 - ๋์ ์ผ๋ก ์ฌ์ฉ์๋ฅผ ์์ฑํ๊ณ (๋จ์๋ก DynamicUser ์ง์๋ฌธ์ ์ฌ์ฉํ์ฌ ์ ์ถํ์ฌ ํฉ์ฑ) ๋๋จธ์ง ์์คํ ์ ํ์๋ฉ๋๋ค.
- systemd-userdbd.service - UNIX/glibc NSS ๊ณ์ ์ JSON ๋ ์ฝ๋๋ก ๋ณํํ๊ณ ๋ ์ฝ๋ ์ฟผ๋ฆฌ ๋ฐ ๋ฐ๋ณต์ ์ํ ํตํฉ Varlink API๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ ์ํ ์์คํ ์ ์ฅ์ ์ /etc ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฝ๊ธฐ ์ ์ฉ ๋ชจ๋๋ก ๋ง์ดํธํ ๋ ์ฌ์ฉ์๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค๋ ์ , ์์คํ ๊ฐ ์๋ณ์(UID/GID)๋ฅผ ๋๊ธฐํํ ํ์๊ฐ ์๋ค๋ ์ , ํน์ ์ปดํจํฐ๋ก๋ถํฐ ์ฌ์ฉ์ ๋ ๋ฆฝ์ฑ, ์ฌ์ฉ์ ๋ฐ์ดํฐ ์ฐจ๋จ ๋ฑ์ด ์๋ค. ์ ์ ๋ชจ๋์์๋ ์ํธํ ๋ฐ ์ต์ ์ธ์ฆ ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค. Systemd-homed๋ ๋ฆด๋ฆฌ์ค 244 ๋๋ 245์ systemd ์ฃผ๋ฅ์ ํฌํจ๋ ์์ ์ ๋๋ค.
JSON ์ฌ์ฉ์ ํ๋กํ ์:
"autoLogin": ์ฌ์ค,
"๋ฐ์ธ๋ฉ": {
ยซ15e19cd24e004b949ddaac60c74aa165ยป : {
"fileSystemType": "ext4"
ยซfileSystemUUIDยป : ยซ758e88c8-5851-4a2a-b98f-e7474279c111ยป,
"gid": 60232,
"ํ๋๋ ํ ๋ฆฌ": "/ํ/ํ
์คํธ",
"imagePath": "/home/test.home",
"luksCipher": "aes",
"luksCipherMode": "xts-plain64",
ยซluksUUIDยป : ยซe63581ba-79fa-4226-b9de-1888393f7573ยป,
"luksVolumeKeySize" : 32,
ยซpartitionUUIDยป : ยซ41f9ce04-c927-4b74-a981-c669f93eb4dcยป,
"storage": "๋ฃจํฌ",
"uid" : 60233
}
},
"disposition": "์ผ๋ฐ",
"enforcePasswordPolicy": ๊ฑฐ์ง,
"lastChangeUSec": 1565951024279735,
"์ ๋ฉค๋ฒ์ด๋ค" : [
"๋ฐํด"
],
"ํน๊ถ": {
"ํด์๋ ๋น๋ฐ๋ฒํธ": [
ยซ$6$WHBKvAFFT9jKPA4k$OPY4D5โฆ/ยป
] },
"์๋ช
" : [
{
"๋ฐ์ดํฐ": "LU/HeVrPZSzi3M3J...==",
"key": "โโ๊ณต๊ฐ ํค ์์โโ\nMCowBQADK2VwAyโฆ=\nโโ๊ณต๊ฐ ํค ๋โโ\n"
}
],
"์ฌ์ฉ์ ์ด๋ฆ": "ํ
์คํธ",
"์ํ" : {
ยซ15e19cf24e004b949dfaac60c74aa165ยป : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec": 1566309343044322,
"rateLimitBeginUSec": 1566309342341723,
"rateLimitCount" : 1,
"์ํ": "๋นํ์ฑ",
"์๋น์ค": "io.systemd.Home",
"๋์คํฌ ํฌ๊ธฐ": 161218667776,
"๋์คํฌ์ฒ์ฅ": 191371729408,
"๋์คํฌ์ธต": 5242780,
"signedLocally": ์ฌ์ค
}
}
์ถ์ฒ : opennet.ru