- ๊ถํ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ โ ๋๊ฐ, ๋ฌด์์
- ์ซ์ ํ๊ธฐ๋ฒ
ls -l ์ถ๋ ฅ ์ฝ๊ธฐ
chmod โ ๊ถํ ๋ณ๊ฒฝ
chown / chgrp โ ์์ ์ ๋ณ๊ฒฝ
- ์์ฃผ ์ฐ๋ ๊ถํ ์กฐํฉ
- ๋๋ ํ ๋ฆฌ ๊ถํ์ ์ฐจ์ด
- umask โ ๊ธฐ๋ณธ ๊ถํ ์ค์
- ํน์ ๋นํธ โ setuid, setgid, sticky
AI-assisted
๊ถํ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ โ ๋๊ฐ, ๋ฌด์์
โ๋๊ฐโ โ ์ธ ๋ถ๋ฅ์ ์ฌ์ฉ์
- Owner (u) : ํ์ผ์ ๋ง๋ ์์ ์
- Group (g) : ์์ ์๊ฐ ์ํ ๊ทธ๋ฃน์ ์ฌ์ฉ์๋ค
- Other (o) : ๊ทธ ์ธ ๋ชจ๋ ์ฌ์ฉ์
โ๋ฌด์์โ โ ์ธ ๊ฐ์ง ๊ถํ
| ๊ถํ | ๊ธฐํธ | ์ซ์ | ํ์ผ์์์ ์๋ฏธ |
|---|
| ์ฝ๊ธฐ | r | 4 | ํ์ผ ๋ด์ฉ์ ๋ณผ ์ ์์ |
| ์ฐ๊ธฐ | w | 2 | ํ์ผ ๋ด์ฉ์ ์์ ํ ์ ์์ |
| ์คํ | x | 1 | ํ์ผ์ ํ๋ก๊ทธ๋จ์ผ๋ก ์คํํ ์ ์์ |
- ์ธ ๊ถํ์ ์ซ์๋ฅผ ๋ํด์ ์กฐํฉ์ ํํ
r + w = 4 + 2 = 6 โ ์ฝ๊ธฐ+์ฐ๊ธฐ
r + w + x = 4 + 2 + 1 = 7 โ ์ ๋ถ ํ์ฉ
- ์๋ฌด ๊ถํ ์์ =
0
์ซ์ ํ๊ธฐ๋ฒ
0~7 ์ซ์-๊ถํ ๋งคํ
| ์ซ์ | ๊ธฐํธ | ๊ถํ |
|---|
| 0 | --- | ์์ |
| 1 | --x | ์คํ๋ง |
| 2 | -w- | ์ฐ๊ธฐ๋ง |
| 3 | -wx | ์ฐ๊ธฐ+์คํ |
| 4 | r-- | ์ฝ๊ธฐ๋ง |
| 5 | r-x | ์ฝ๊ธฐ+์คํ |
| 6 | rw- | ์ฝ๊ธฐ+์ฐ๊ธฐ |
| 7 | rwx | ์ ๋ถ |
์ธ ์๋ฆฌ ์กฐํฉ โ Owner / Group / Other ์์
์ซ์ ํด์๋ฒ 7 5 5
rwx r-x r-x
โ โ โโโ Other : ์ฝ๊ธฐ+์คํ
โ โโโโโโโโ Group : ์ฝ๊ธฐ+์คํ
โโโโโโโโโโโโโ Owner : ์ ๋ถ
ls -l ์ถ๋ ฅ ์ฝ๊ธฐ
ํ์ผ ๋ชฉ๋ก ์์ธ ๋ณด๊ธฐls -l
# -rw-r--r-- 1 argus staff 4096 Apr 6 14:30 config.yaml
# drwxr-xr-x 3 argus staff 96 Apr 6 14:30 scripts/
๊ฐ ํ๋ ํด์- rw- r-- r-- 1 argus staff 4096 Apr 6 14:30 config.yaml
โ โ โ โ โ โ โ โ โ โ
โ โ โ โ โ โ โ โ โ โ ํ์ผ๋ช
โ โ โ โ โ โ โ โ โ ์์ ์๊ฐ
โ โ โ โ โ โ โ โ ํ์ผ ํฌ๊ธฐ (bytes)
โ โ โ โ โ โ โ ์์ ๊ทธ๋ฃน
โ โ โ โ โ โ ์์ ์
โ โ โ โ โ ํ๋๋งํฌ ์
โ โ โ โ Other ๊ถํ
โ โ โ Group ๊ถํ
โ โ Owner ๊ถํ
โ ํ์ผ ํ์
(- : ํ์ผ, d : ๋๋ ํ ๋ฆฌ, l : ์ฌ๋ณผ๋ฆญ ๋งํฌ)
chmod โ ๊ถํ ๋ณ๊ฒฝ
์ซ์ ๋ฐฉ์
chmod ์ซ์ ๋ฐฉ์chmod 755 script.sh # rwxr-xr-x โ ์คํ ๊ฐ๋ฅํ ์คํฌ๋ฆฝํธ
chmod 644 config.yaml # rw-r--r-- โ ์ผ๋ฐ ์ค์ ํ์ผ
chmod 600 id_rsa # rw------- โ SSH ๊ฐ์ธํค (์์ ์๋ง)
chmod 777 tmp_dir # rwxrwxrwx โ ๋ชจ๋ ํ์ฉ (๋ณด์ ์ฃผ์)
๊ธฐํธ ๋ฐฉ์
chmod ๊ธฐํธ ๋ฐฉ์# u=์์ ์, g=๊ทธ๋ฃน, o=๊ธฐํ, a=์ ์ฒด
chmod u+x script.sh # ์์ ์์ ์คํ ๊ถํ ์ถ๊ฐ
chmod g-w config.yaml # ๊ทธ๋ฃน์์ ์ฐ๊ธฐ ๊ถํ ์ ๊ฑฐ
chmod o=r file.txt # ๊ธฐํ ์ฌ์ฉ์๋ฅผ ์ฝ๊ธฐ๋ง์ผ๋ก ์ค์
chmod a+r public.html # ๋ชจ๋ ์ฌ์ฉ์์ ์ฝ๊ธฐ ์ถ๊ฐ
chmod u=rwx,g=rx,o=rx script.sh # 755์ ๋์ผ
์ฌ๊ท ์ ์ฉ
ํ์ ํ์ผ/ํด๋ ์ ์ฒด์ ์ ์ฉ# ๋๋ ํ ๋ฆฌ ์ ์ฒด์ ์ฌ๊ท ์ ์ฉ
chmod -R 755 ./deploy/
# ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ตฌ๋ถํด์ ์ ์ฉํ๊ณ ์ถ์ ๋
find ./project -type f -exec chmod 644 {} \; # ํ์ผ๋ง 644
find ./project -type d -exec chmod 755 {} \; # ๋๋ ํ ๋ฆฌ๋ง 755
์ซ์ vs ๊ธฐํธ โ ์ธ์ ์ฐ๋๊ฐ
- ์ซ์ : ๊ถํ์ ์ฒ์๋ถํฐ ํ์คํ๊ฒ ์ง์ ํ ๋ (
chmod 755)
- ๊ธฐํธ : ๊ธฐ์กด ๊ถํ์์ ์ผ๋ถ๋ง ์ถ๊ฐ/์ ๊ฑฐํ ๋ (
chmod u+x)
chown / chgrp โ ์์ ์ยท๊ทธ๋ฃน ๋ณ๊ฒฝ
- ๊ถํ(permission)๊ณผ ์์ ์(ownership)๋ ๋ณ๊ฐ โ ๋ ๋ค ๋ง์์ผ ์ ๊ทผ ๊ฐ๋ฅ
์์ ์/๊ทธ๋ฃน ๋ณ๊ฒฝ# ์์ ์ ๋ณ๊ฒฝ
chown newuser file.txt
# ์์ ์ + ๊ทธ๋ฃน ๋์ ๋ณ๊ฒฝ
chown newuser:newgroup file.txt
# ๊ทธ๋ฃน๋ง ๋ณ๊ฒฝ
chgrp deploy file.txt
# ์ฌ๊ท ์ ์ฉ
chown -R appuser:appgroup ./data/
์ค๋ฌด ์์# ์น ์๋ฒ๊ฐ ์ฝ์ ์ ์๋๋ก ์์ ์ ๋ณ๊ฒฝ
sudo chown -R www-data:www-data /var/www/html/
# ๋ฐฐํฌ ๋๋ ํ ๋ฆฌ๋ฅผ deploy ๊ทธ๋ฃน ์์ ๋ก
sudo chown -R root:deploy /opt/app/
sudo chmod -R 775 /opt/app/
์์ฃผ ์ฐ๋ ๊ถํ ์กฐํฉ
| ๊ถํ | ๊ธฐํธ | ์ฉ๋ | ์ค๋ฌด ์์ |
|---|
644 | rw-r--r-- | ์ผ๋ฐ ํ์ผ ๊ธฐ๋ณธ๊ฐ | ์ค์ ํ์ผ, HTML, ์์ค ์ฝ๋ |
600 | rw------- | ๋ฏผ๊ฐํ ํ์ผ | SSH ํค(~/.ssh/id_rsa), .env |
755 | rwxr-xr-x | ์คํ ํ์ผยท๋๋ ํ ๋ฆฌ ๊ธฐ๋ณธ๊ฐ | ์ ์คํฌ๋ฆฝํธ, ๊ณต๊ฐ ๋๋ ํ ๋ฆฌ |
700 | rwx------ | ๊ฐ์ธ ์ ์ฉ | ~/.ssh/ ๋๋ ํ ๋ฆฌ, ๊ฐ์ธ ์คํฌ๋ฆฝํธ |
775 | rwxrwxr-x | ๊ทธ๋ฃน ๊ณต์ | ํ ๋ฐฐํฌ ๋๋ ํ ๋ฆฌ |
777 | rwxrwxrwx | ๋ชจ๋ ํ์ฉ | /tmp ์ ๋. ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ ๊ธ์ง |
400 | r-------- | ์ฝ๊ธฐ ์ ์ฉ (์์ ์๋ง) | ์ธ์ฆ์, ๋ฐฑ์
๋ ํค ํ์ผ |
SSH ํค ๊ถํ์ด ๋ง์ง ์์ผ๋ฉด ์ ์ ์์ฒด๊ฐ ๊ฑฐ๋ถ๋จ
# SSH๊ฐ ํค ํ์ผ ๊ถํ์ด ๋๋ฌด ์ด๋ ค์์ผ๋ฉด ์ฌ์ฉ์ ๊ฑฐ๋ถ
# Permissions 0644 for 'id_rsa' are too open. โ ์ ์ ์คํจ
chmod 600 ~/.ssh/id_rsa # ๊ฐ์ธํค
chmod 644 ~/.ssh/id_rsa.pub # ๊ณต๊ฐํค
chmod 700 ~/.ssh # .ssh ๋๋ ํ ๋ฆฌ
๋๋ ํ ๋ฆฌ ๊ถํ์ ์ฐจ์ด
- ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ์์
r, w, x์ ์๋ฏธ๊ฐ ๋ค๋ฆ
| ๊ถํ | ํ์ผ | ๋๋ ํ ๋ฆฌ |
|---|
r | ๋ด์ฉ ์ฝ๊ธฐ (cat) | ๋ชฉ๋ก ๋ณด๊ธฐ (ls) |
w | ๋ด์ฉ ์์ | ํ์ผ ์์ฑ/์ญ์ /์ด๋ฆ ๋ณ๊ฒฝ |
x | ์คํ | ์ง์
(cd) |
๋๋ ํ ๋ฆฌ ๊ถํ ์คํ# x ์์ด r๋ง ์๋ ๋๋ ํ ๋ฆฌ
chmod 744 mydir/ # rwxr--r--
ls mydir/ # โ
๋ชฉ๋ก์ ๋ณด์ (r)
cat mydir/file.txt # โ ์ง์
๋ถ๊ฐ (x ์์)
cd mydir/ # โ ์ง์
๋ถ๊ฐ
# r ์์ด x๋ง ์๋ ๋๋ ํ ๋ฆฌ
chmod 711 mydir/ # rwx--x--x
ls mydir/ # โ ๋ชฉ๋ก ๋ชป ๋ด (r ์์)
cat mydir/file.txt # โ
๊ฒฝ๋ก๋ฅผ ์๋ฉด ์ ๊ทผ ๊ฐ๋ฅ (x ์์)
cd mydir/ # โ
์ง์
๊ฐ๋ฅ
- ๋๋ ํ ๋ฆฌ์์
x๋ โํต๊ณผ ๊ฐ๋ฅโ ๊ถํ โ ์์ผ๋ฉด ์์ ํ์ผ์ด ์์ด๋ ์ ๊ทผ ๋ถ๊ฐ
- ๋๋ ํ ๋ฆฌ์๋ ๋ณดํต
r๊ณผ x๋ฅผ ํจ๊ป ๋ถ์ฌ (5 ๋๋ 7)
umask โ ํ์ผ ์์ฑ ์ ๊ธฐ๋ณธ ๊ถํ
๊ฐ๋
- ์ ํ์ผ/๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค ๋ ์๋์ผ๋ก ์ ์ฉ๋๋ ๊ถํ์ ๊ฒฐ์
- โ๋ง์คํฌโ๋ผ๋ ์ด๋ฆ์ฒ๋ผ ์ ์ฒด ๊ถํ์์ ๋นผ๋(์ฐจ๋จํ๋) ๊ฐ
๋์ ์๋ฆฌ
umask ๊ณ์ฐํ์ผ ๊ธฐ๋ณธ ์ต๋ ๊ถํ : 666 (์คํ ๊ถํ ์์)
๋๋ ํ ๋ฆฌ ๊ธฐ๋ณธ ์ต๋ ๊ถํ : 777
umask ๊ฐ : 022
์ ํ์ผ ๊ถํ = 666 - 022 = 644 (rw-r--r--)
์ ๋๋ ํ ๋ฆฌ ๊ถํ = 777 - 022 = 755 (rwxr-xr-x)
umask ํ์ธ ๋ฐ ๋ณ๊ฒฝ# ํ์ฌ umask ํ์ธ
umask
# 022
# ๊ธฐํธ ํํ๋ก ํ์ธ
umask -S
# u=rwx,g=rx,o=rx
# umask ๋ณ๊ฒฝ (ํ์ฌ ์ธ์
)
umask 077 # ์ ํ์ผ 600, ์ ๋๋ ํ ๋ฆฌ 700 โ ์์ ์๋ง ์ ๊ทผ
# ์๊ตฌ ์ ์ฉํ๋ ค๋ฉด ~/.bashrc ๋๋ ~/.zshrc์ ์ถ๊ฐ
echo "umask 022" >> ~/.zshrc
์์ฃผ ์ฐ๋ umask ๊ฐ
| umask | ์ ํ์ผ | ์ ๋๋ ํ ๋ฆฌ | ์ฉ๋ |
|---|
022 | 644 | 755 | ์ผ๋ฐ์ ์ธ ๊ธฐ๋ณธ๊ฐ |
027 | 640 | 750 | ๊ทธ๋ฃน๊น์ง๋ง ์ฝ๊ธฐ ํ์ฉ |
077 | 600 | 700 | ์์ ์๋ง ์ ๊ทผ (๋ณด์ ๊ฐํ) |
ํน์ ๋นํธ โ setuid, setgid, sticky
- ์ผ๋ฐ ๊ถํ(3์๋ฆฌ) ์์ ๋ค ๋ฒ์งธ ์๋ฆฌ๋ก ํํ
- ์ผ์์ ์ผ๋ก ์์ฃผ ์ค์ ํ์ง ์์ง๋ง, ์์คํ
ํ์ผ์์ ๋ณด๊ฒ ๋จ
setuid (4) โ ์คํ ์ ํ์ผ ์์ ์ ๊ถํ์ผ๋ก ๋์
setuid ์์ls -l /usr/bin/passwd
# -rwsr-xr-x 1 root root ... /usr/bin/passwd
# ^
# s = setuid๊ฐ ์ค์ ๋์ด ์์
passwd ๋ช
๋ น์ ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ์คํํด๋ root ๊ถํ์ผ๋ก /etc/shadow๋ฅผ ์์ ํ ์ ์์
- ์์ ์์
x ์๋ฆฌ์ s๋ก ํ์๋จ
chmod 4755 special_binary # setuid ์ค์
chmod u+s special_binary # ๊ธฐํธ ๋ฐฉ์
setgid (2) โ ์คํ ์ ํ์ผ ๊ทธ๋ฃน ๊ถํ์ผ๋ก ๋์ / ๋๋ ํ ๋ฆฌ์์๋ ๊ทธ๋ฃน ์์
setgid ๋๋ ํ ๋ฆฌ โ ํ ๊ณต์ ํด๋์ ์ ์ฉ# setgid๊ฐ ์ค์ ๋ ๋๋ ํ ๋ฆฌ์์ ์์ฑํ ํ์ผ์ ๋๋ ํ ๋ฆฌ์ ๊ทธ๋ฃน์ ์์
mkdir /shared
chgrp team /shared
chmod 2775 /shared
# ๋๊ฐ ๋ง๋ค๋ ๊ทธ๋ฃน์ด team์ผ๋ก ์ค์ ๋จ
touch /shared/report.txt
ls -l /shared/report.txt
# -rw-rw-r-- 1 argus team ... report.txt
sticky bit (1) โ ์๊ธฐ ํ์ผ๋ง ์ญ์ ๊ฐ๋ฅ
sticky bit ์์ls -ld /tmp
# drwxrwxrwt 15 root root ... /tmp
# ^
# t = sticky bit
# /tmp๋ ๋๊ตฌ๋ ํ์ผ์ ๋ง๋ค ์ ์์ง๋ง (777)
# ๋ค๋ฅธ ์ฌ์ฉ์์ ํ์ผ์ ์ญ์ ํ ์๋ ์์ (sticky)
chmod 1777 /shared_tmp # sticky bit ์ค์
chmod +t /shared_tmp # ๊ธฐํธ ๋ฐฉ์
ํน์ ๋นํธ ์์ฝ
| ๋นํธ | ์ซ์ | ๊ธฐํธ ํ์ | ๋์ | ํจ๊ณผ |
|---|
| setuid | 4 | s (owner x ์๋ฆฌ) | ์คํ ํ์ผ | ์์ ์ ๊ถํ์ผ๋ก ์คํ |
| setgid | 2 | s (group x ์๋ฆฌ) | ์คํ ํ์ผ/๋๋ ํ ๋ฆฌ | ๊ทธ๋ฃน ๊ถํ์ผ๋ก ์คํ / ๊ทธ๋ฃน ์์ |
| sticky | 1 | t (other x ์๋ฆฌ) | ๋๋ ํ ๋ฆฌ | ์๊ธฐ ํ์ผ๋ง ์ญ์ ๊ฐ๋ฅ |