μ΄ κΈμ Claude Codeμ λμμ λ°μ μμ±λμμ΅λλ€
- κΆνμ κΈ°λ³Έ ꡬ쑰 β λκ°, 무μμ
- μ«μ νκΈ°λ²
ls -l μΆλ ₯ μ½κΈ°
chmod β κΆν λ³κ²½
chown / chgrp β μμ μ λ³κ²½
- μμ£Ό μ°λ κΆν μ‘°ν©
- λλ ν 리 κΆνμ μ°¨μ΄
- umask β κΈ°λ³Έ κΆν μ€μ
- νΉμ λΉνΈ β setuid, setgid, sticky
κΆνμ κΈ°λ³Έ ꡬ쑰 β λκ°, 무μμ
βλκ°β β μΈ λΆλ₯μ μ¬μ©μ
- 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 μ리) | λλ ν 리 | μκΈ° νμΌλ§ μμ κ°λ₯ |