๐Ÿ” Linux ํŒŒ์ผ ๊ถŒํ•œ ์™„์ „ ์ •๋ณต โ€” chmod, chown, SUID/SGID/Sticky bit๊นŒ์ง€

@leekh8 ยท April 03, 2026 ยท 7 min read

์ฒ˜์Œ Linux๋ฅผ ์ ‘ํ•˜๋ฉด ls -l ์ถœ๋ ฅ์ด ์ด๋ ‡๊ฒŒ ์ƒ๊ฒผ๋‹ค.

-rwxr-xr-- 1 alice devteam 4096 Apr  3 10:00 deploy.sh
drwxr-s--- 2 root  devteam 4096 Apr  3 10:00 secrets/
-rwsr-xr-x 1 root  root    8192 Apr  3 10:00 /usr/bin/passwd

rwx๋Š” ๋Œ€์ถฉ ์•Œ๊ฒ ๋Š”๋ฐ, s๋Š” ๋ญ๊ณ  -r--์ด ์™œ ๋‚˜์˜ค๋Š”์ง€, ์ˆซ์ž๋กœ 755๋ผ๊ณ  ์“ฐ๋ฉด ๋ญ”์ง€ โ€” ์ด๊ฒŒ ํ•œ ๋ฒˆ์— ์ •๋ฆฌ๊ฐ€ ์•ˆ ๋˜๋Š” ๋ถ„๋“ค์ด ๋งŽ๋‹ค. ์ด ๊ธ€์—์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋‹ค ์ •๋ฆฌํ•œ๋‹ค.


Linux ๊ถŒํ•œ์ด ์™œ ์ค‘์š”ํ•œ๊ฐ€

Linux๋Š” ๋‹ค์ค‘ ์‚ฌ์šฉ์ž(multi-user) ์‹œ์Šคํ…œ์ด๋‹ค. ์„œ๋ฒ„ ํ•œ ๋Œ€์— ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ์ ‘์†ํ•˜๊ณ , ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ๋Œ์•„๊ฐ„๋‹ค. ํŒŒ์ผ ๊ถŒํ•œ์ด ์—†์œผ๋ฉด ๋ˆ„๊ตฐ๊ฐ€ ์‹ค์ˆ˜๋กœ โ€” ํ˜น์€ ์•…์˜์ ์œผ๋กœ โ€” /etc/passwd๋ฅผ ๋ฎ์–ด์“ฐ๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ๊ฐœ์ธ์ •๋ณด๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.

๋ณด์•ˆ ๊ด€์ ์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค. **์ตœ์†Œ ๊ถŒํ•œ ์›์น™(Principle of Least Privilege)**์€ "๊ผญ ํ•„์š”ํ•œ ๊ถŒํ•œ๋งŒ ์ค˜์•ผ ํ•œ๋‹ค"๋Š” ๊ฐœ๋…์ธ๋ฐ, ์ด๊ฑธ ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ์ˆ˜๋‹จ์ด ํŒŒ์ผ ๊ถŒํ•œ์ด๋‹ค.


๊ธฐ๋ณธ ๊ตฌ์กฐ: ls -l ์ฝ๊ธฐ

-rwxr-xr-- 1 alice devteam 4096 Apr  3 10:00 deploy.sh
โ”‚โ”‚โ”‚โ”‚โ”‚โ”‚โ”‚โ”‚โ”‚
โ”‚โ”‚โ”‚โ”‚โ”‚โ”‚โ”‚โ”‚โ”‚โ””โ”€ other: r--
โ”‚โ”‚โ”‚โ”‚โ”‚โ”‚โ””โ”€โ”€โ”€โ”€  group: r-x
โ”‚โ”‚โ”‚โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€  owner: rwx
โ”‚โ”‚โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  ํŒŒ์ผ ํƒ€์ž…
โ”‚โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  (์—†์Œ)

์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž๋Š” ํŒŒ์ผ ํƒ€์ž…์ด๋‹ค.

๋ฌธ์ž ์˜๋ฏธ
- ์ผ๋ฐ˜ ํŒŒ์ผ
d ๋””๋ ‰ํ† ๋ฆฌ
l ์‹ฌ๋ณผ๋ฆญ ๋งํฌ
c ๋ฌธ์ž ์žฅ์น˜ ํŒŒ์ผ (character device)
b ๋ธ”๋ก ์žฅ์น˜ ํŒŒ์ผ (block device)
p ํŒŒ์ดํ”„
s ์†Œ์ผ“

๊ทธ ๋’ค๋Š” owner / group / other ์ˆœ์œผ๋กœ 3์ž์”ฉ rwx ์กฐํ•ฉ์ด๋‹ค.

๋ฌธ์ž ํŒŒ์ผ์—์„œ ์˜๋ฏธ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์˜๋ฏธ
r ์ฝ๊ธฐ (๋‚ด์šฉ ๋ณด๊ธฐ) ๋ชฉ๋ก ์กฐํšŒ (ls)
w ์“ฐ๊ธฐ (์ˆ˜์ •/์‚ญ์ œ) ํŒŒ์ผ ์ƒ์„ฑ/์‚ญ์ œ
x ์‹คํ–‰ ์ ‘๊ทผ (cd)
- ๊ถŒํ•œ ์—†์Œ ๊ถŒํ•œ ์—†์Œ

๋””๋ ‰ํ† ๋ฆฌ์—์„œ x(execute) ๊ถŒํ•œ์ด ์—†์œผ๋ฉด cd๋„ ๋ชป ํ•˜๊ณ  ๊ทธ ์•ˆ์— ์žˆ๋Š” ํŒŒ์ผ ๊ฒฝ๋กœ๋„ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋‹ค. r๋งŒ ์žˆ์–ด๋„ ๋ชฉ๋ก์€ ๋ณด์ด์ง€๋งŒ ํŒŒ์ผ์€ ๋ชป ์ฝ๋Š”๋‹ค. ์ด ์ฐจ์ด๊ฐ€ ํ—ท๊ฐˆ๋ฆฌ๋Š” ํฌ์ธํŠธ๋‹ค.


์ˆซ์ž ํ‘œ๊ธฐ๋ฒ• (Octal)

๊ฐ ๊ถŒํ•œ์€ ๋น„ํŠธ๋กœ ํ‘œํ˜„๋œ๋‹ค.

r = 4 (100)
w = 2 (010)
x = 1 (001)
- = 0 (000)

rwx = 4+2+1 = 7 r-x = 4+0+1 = 5 r-- = 4+0+0 = 4

-rwxr-xr-- โ†’ owner=7, group=5, other=4 โ†’ 754

์ž์ฃผ ์“ฐ๋Š” ์กฐํ•ฉ:

์ˆซ์ž ๊ธฐํ˜ธ ์ฃผ๋กœ ์“ฐ๋Š” ๊ณณ
755 rwxr-xr-x ์‹คํ–‰ ํŒŒ์ผ, ๊ณต๊ฐœ ๋””๋ ‰ํ† ๋ฆฌ
644 rw-r--r-- ์ผ๋ฐ˜ ํŒŒ์ผ, ์„ค์ • ํŒŒ์ผ
600 rw------- ๊ฐœ์ธ ํ‚ค ํŒŒ์ผ (~/.ssh/id_rsa)
700 rwx------ ๊ฐœ์ธ ์Šคํฌ๋ฆฝํŠธ
777 rwxrwxrwx ์ž„์‹œ ๋””๋ ‰ํ† ๋ฆฌ (๋ณด์•ˆ ์ฃผ์˜)

chmod โ€” ๊ถŒํ•œ ๋ณ€๊ฒฝ

์ˆซ์ž ๋ฐฉ์‹

chmod 755 deploy.sh     # -rwxr-xr-x
chmod 600 ~/.ssh/id_rsa # -rw-------
chmod -R 644 ./logs/    # ๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„ ์ „์ฒด ์žฌ๊ท€ ์ ์šฉ

๊ธฐํ˜ธ ๋ฐฉ์‹

[๋Œ€์ƒ][์—ฐ์‚ฐ์ž][๊ถŒํ•œ] ํ˜•ํƒœ๋‹ค.

  • ๋Œ€์ƒ: u(owner), g(group), o(other), a(all)
  • ์—ฐ์‚ฐ์ž: +(์ถ”๊ฐ€), -(์ œ๊ฑฐ), =(์ง€์ •)
chmod u+x script.sh       # owner์— ์‹คํ–‰ ๊ถŒํ•œ ์ถ”๊ฐ€
chmod go-w sensitive.txt  # group, other์—์„œ ์“ฐ๊ธฐ ์ œ๊ฑฐ
chmod a=r readme.txt      # ๋ชจ๋‘ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์ง€์ •
chmod u=rwx,go=r-x app    # owner๋Š” rwx, group/other๋Š” r-x

chown / chgrp โ€” ์†Œ์œ ์ž ๋ณ€๊ฒฝ

chown alice deploy.sh           # owner๋ฅผ alice๋กœ
chown alice:devteam deploy.sh   # owner + group ๋™์‹œ ๋ณ€๊ฒฝ
chown :devteam deploy.sh        # group๋งŒ ๋ณ€๊ฒฝ
chgrp devteam deploy.sh         # group๋งŒ ๋ณ€๊ฒฝ (chgrp)

chown -R www-data:www-data /var/www/html  # ์žฌ๊ท€ ์ ์šฉ

chown์€ ๋ณดํ†ต root ๊ถŒํ•œ์ด ํ•„์š”ํ•˜๋‹ค. ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋Š” ์ž๊ธฐ ํŒŒ์ผ์„ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋„˜๊ธฐ์ง€ ๋ชปํ•œ๋‹ค (๋ณด์•ˆ์ƒ ์˜๋„๋œ ์„ค๊ณ„).


umask โ€” ๊ธฐ๋ณธ ๊ถŒํ•œ์˜ ๋น„๋ฐ€

ํŒŒ์ผ์„ ์ƒˆ๋กœ ๋งŒ๋“ค๋ฉด ๊ถŒํ•œ์ด ์ž๋™์œผ๋กœ ๊ฒฐ์ •๋œ๋‹ค. ๊ทธ ๊ธฐ์ค€์ด umask๋‹ค.

๊ธฐ๋ณธ ์ตœ๋Œ€ ๊ถŒํ•œ์—์„œ umask๋ฅผ "๋นผ๋Š”" ๋ฐฉ์‹์ด๋‹ค.

ํŒŒ์ผ ๊ธฐ๋ณธ ์ตœ๋Œ€: 666 (rw-rw-rw-)
๋””๋ ‰ํ† ๋ฆฌ ๊ธฐ๋ณธ ์ตœ๋Œ€: 777 (rwxrwxrwx)

umask = 022

ํŒŒ์ผ:      666 - 022 = 644 (rw-r--r--)
๋””๋ ‰ํ† ๋ฆฌ:  777 - 022 = 755 (rwxr-xr-x)

ํ˜„์žฌ umask ํ™•์ธ:

umask        # 0022
umask -S     # u=rwx,g=rx,o=rx (๊ธฐํ˜ธ ๋ฐฉ์‹)

๋ณ€๊ฒฝ:

umask 027    # ์ƒˆ ํŒŒ์ผ์€ 640, ๋””๋ ‰ํ† ๋ฆฌ๋Š” 750

ํŠน์ˆ˜ ๊ถŒํ•œ ๋น„ํŠธ: SUID, SGID, Sticky bit

์ผ๋ฐ˜ rwx ์™ธ์— 3๊ฐ€์ง€ ํŠน์ˆ˜ ๋น„ํŠธ๊ฐ€ ์žˆ๋‹ค. ์ฒ˜์Œ ๋ณด๋ฉด ๋‹นํ™ฉ์Šค๋Ÿฌ์šด๋ฐ, ๊ฐ๊ฐ ๋ชฉ์ ์ด ๋ช…ํ™•ํ•˜๋‹ค.

SUID (Set User ID) โ€” ์‹คํ–‰ ์‹œ ์†Œ์œ ์ž ๊ถŒํ•œ

-rwsr-xr-x 1 root root /usr/bin/passwd
     ^
     s = SUID

passwd ๋ช…๋ น์–ด๋Š” /etc/shadow๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค. ์ด ํŒŒ์ผ์€ root๋งŒ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋„ passwd๋กœ ์ž๊ธฐ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

๋น„๊ฒฐ์€ SUID๋‹ค. SUID๊ฐ€ ์„ค์ •๋œ ์‹คํ–‰ ํŒŒ์ผ์€ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ ํŒŒ์ผ ์†Œ์œ ์ž(root)์˜ ๊ถŒํ•œ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. ์‹คํ–‰์ž๊ฐ€ ๋ˆ„๊ตฌ๋“  ์ƒ๊ด€์—†์ด.

chmod u+s /path/to/file   # SUID ์„ค์ •
chmod 4755 /path/to/file  # ์ˆซ์ž ๋ฐฉ์‹ (์•ž์— 4)

๋ณด์•ˆ ์ฃผ์˜: SUID root ํŒŒ์ผ์ด ์ทจ์•ฝํ•˜๋ฉด ๊ถŒํ•œ ์ƒ์Šน(privilege escalation) ๊ณต๊ฒฉ์˜ ๋Œ€์ƒ์ด ๋œ๋‹ค. CTF ๋ฌธ์ œ์—์„œ SUID ํŒŒ์ผ ์ฐพ๊ธฐ(find / -perm -4000)๋Š” ๋‹จ๊ณจ ๋ฌธ์ œ๋‹ค.

SGID (Set Group ID) โ€” ๊ทธ๋ฃน ๊ถŒํ•œ ์ƒ์†

ํŒŒ์ผ์— ์„ค์ • ์‹œ SUID์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๋™์ž‘ํ•˜์ง€๋งŒ, ๊ทธ๋ฃน ๊ธฐ์ค€์ด๋‹ค.

drwxr-sr-x 2 root devteam secrets/
        ^
        s = SGID (๋””๋ ‰ํ† ๋ฆฌ์— ์„ค์ •)

๋””๋ ‰ํ† ๋ฆฌ์— SGID๊ฐ€ ์„ค์ •๋˜๋ฉด, ๊ทธ ์•ˆ์— ์ƒˆ๋กœ ๋งŒ๋“œ๋Š” ํŒŒ์ผ/๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ž๋™์œผ๋กœ ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ทธ๋ฃน์„ ์ƒ์†ํ•œ๋‹ค.

ํŒ€ ๊ณต์œ  ํด๋”์— ์ž์ฃผ ์“ด๋‹ค. devteam ๊ทธ๋ฃน ๋ฉค๋ฒ„๋ผ๋ฉด ๋ˆ„๊ฐ€ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด๋„ ์ž๋™์œผ๋กœ devteam ๊ทธ๋ฃน ์†Œ์œ ๊ฐ€ ๋œ๋‹ค.

chmod g+s /shared/project   # SGID ์„ค์ •
chmod 2755 /shared/project  # ์ˆซ์ž ๋ฐฉ์‹ (์•ž์— 2)

Sticky bit โ€” ์‚ญ์ œ ๋ณดํ˜ธ

drwxrwxrwt 1 root root /tmp
          ^
          t = sticky bit

/tmp๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ํŒŒ์ผ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ w ๊ถŒํ•œ์ด ์žˆ๋‹ค๋Š” ๊ฑด ๋‹ค๋ฅธ ์‚ฌ๋žŒ ํŒŒ์ผ๋„ ์ง€์šธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

Sticky bit๊ฐ€ ์„ค์ •๋œ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ๋Š” ํŒŒ์ผ ์†Œ์œ ์ž ๋˜๋Š” root๋งŒ ๊ทธ ํŒŒ์ผ์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‚จ์ด ๋งŒ๋“  ํŒŒ์ผ์€ ์ง€์šฐ์ง€ ๋ชปํ•œ๋‹ค.

chmod +t /shared/uploads    # sticky bit ์„ค์ •
chmod 1777 /shared/uploads  # ์ˆซ์ž ๋ฐฉ์‹ (์•ž์— 1)

ํŠน์ˆ˜ ๋น„ํŠธ ํ•œ๋ˆˆ์— ๋ณด๊ธฐ

๋น„ํŠธ ๊ธฐํ˜ธ ์ˆซ์ž ํŒŒ์ผ์—์„œ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ
SUID s (u ์ž๋ฆฌ) 4000 ์†Œ์œ ์ž ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰ ์˜๋ฏธ ์—†์Œ
SGID s (g ์ž๋ฆฌ) 2000 ๊ทธ๋ฃน ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰ ์ƒˆ ํŒŒ์ผ์ด ๊ทธ๋ฃน ์ƒ์†
Sticky t (o ์ž๋ฆฌ) 1000 ์˜๋ฏธ ์—†์Œ ์†Œ์œ ์ž๋งŒ ์‚ญ์ œ ๊ฐ€๋Šฅ

์‹ค์ „ ์˜ˆ์ œ

SSH ๊ฐœ์ธ ํ‚ค ๊ถŒํ•œ ์„ค์ •

SSH ์ ‘์† ์‹œ ๊ฐœ์ธ ํ‚ค ๊ถŒํ•œ์ด ๋„ˆ๋ฌด ๋„“์œผ๋ฉด ๊ฒฝ๊ณ ๊ฐ€ ๋œจ๊ณ  ์ ‘์†์ด ์•ˆ ๋œ๋‹ค.

# ์ž˜๋ชป๋œ ์˜ˆ
-rw-rw-r-- 1 alice alice ~/.ssh/id_rsa
# WARNING: UNPROTECTED PRIVATE KEY FILE!

# ์˜ฌ๋ฐ”๋ฅธ ์„ค์ •
chmod 600 ~/.ssh/id_rsa    # -rw-------
chmod 700 ~/.ssh/          # drwx------
chmod 644 ~/.ssh/id_rsa.pub
chmod 600 ~/.ssh/authorized_keys

์›น ์„œ๋ฒ„ ํŒŒ์ผ ๊ถŒํ•œ

# Nginx/Apache ๊ธฐ์ค€
chown -R www-data:www-data /var/www/html

# ์ •์  ํŒŒ์ผ
find /var/www/html -type f -exec chmod 644 {} \;

# ๋””๋ ‰ํ† ๋ฆฌ
find /var/www/html -type d -exec chmod 755 {} \;

# ์—…๋กœ๋“œ ๋””๋ ‰ํ† ๋ฆฌ (์“ฐ๊ธฐ ํ—ˆ์šฉ, ์‹คํ–‰ ๊ธˆ์ง€)
chmod 775 /var/www/html/uploads
chmod -R a-x /var/www/html/uploads  # ์—…๋กœ๋“œ๋œ ํŒŒ์ผ์— ์‹คํ–‰ ๊ถŒํ•œ ์—†์• ๊ธฐ

SUID ํŒŒ์ผ ์ฐพ๊ธฐ (๋ณด์•ˆ ๊ฐ์‚ฌ)

# ์‹œ์Šคํ…œ ์ „์ฒด SUID ํŒŒ์ผ ๋ชฉ๋ก
find / -perm -4000 -type f 2>/dev/null

# ์ผ๋ฐ˜์ ์œผ๋กœ ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒƒ๋“ค:
# /usr/bin/passwd
# /usr/bin/sudo
# /usr/bin/su

# ์ด์™ธ ์˜์‹ฌ์Šค๋Ÿฌ์šด SUID ํŒŒ์ผ์ด ์žˆ๋‹ค๋ฉด ํ™•์ธ ํ•„์š”

ํŒ€ ๊ณต์œ  ๋””๋ ‰ํ† ๋ฆฌ ์„ค์ •

# 1. ๊ทธ๋ฃน ์ƒ์„ฑ ๋ฐ ๋ฉค๋ฒ„ ์ถ”๊ฐ€
groupadd devteam
usermod -aG devteam alice
usermod -aG devteam bob

# 2. ๊ณต์œ  ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ
mkdir /shared/project
chown root:devteam /shared/project

# 3. ๊ทธ๋ฃน ์“ฐ๊ธฐ + SGID + sticky bit
chmod 2775 /shared/project  # rwxrwsr-x
chmod +t /shared/project    # ์‚ญ์ œ ๋ณดํ˜ธ ์ถ”๊ฐ€ โ†’ rwxrws--t (3775)

# ๊ฒฐ๊ณผ: devteam ๋ฉค๋ฒ„๋Š” ํŒŒ์ผ ์ƒ์„ฑ/์ˆ˜์ • ๊ฐ€๋Šฅ,
#       ์ž๊ธฐ๊ฐ€ ๋งŒ๋“  ํŒŒ์ผ๋งŒ ์‚ญ์ œ ๊ฐ€๋Šฅ,
#       ์ƒˆ ํŒŒ์ผ์€ ์ž๋™์œผ๋กœ devteam ๊ทธ๋ฃน ์†Œ์œ 

์ž์ฃผ ํ•˜๋Š” ์‹ค์ˆ˜

์‹ค์ˆ˜ 1: chmod 777 ๋‚จ๋ฐœ

๊ฐœ๋ฐœ ์ค‘ ๊ถŒํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋ฉด chmod 777๋กœ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ์ผ๋‹จ ๋Œ์•„๊ฐ€์ง€๋งŒ ๋ˆ„๊ตฌ๋‚˜ ์ฝ๊ณ  ์“ฐ๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์ด ๋œ๋‹ค. ์„œ๋ฒ„์—์„œ๋Š” ์ ˆ๋Œ€ ๊ธˆ๋ฌผ์ด๋‹ค.

์‹ค์ˆ˜ 2: ์žฌ๊ท€ chmod์—์„œ ํŒŒ์ผ/๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ๋ถ„ ์•ˆ ํ•จ

# ์ž˜๋ชป๋œ ์˜ˆ - ํŒŒ์ผ์—๋„ ์‹คํ–‰ ๊ถŒํ•œ์ด ๋ถ™๋Š”๋‹ค
chmod -R 755 /var/www/html

# ์˜ฌ๋ฐ”๋ฅธ ์˜ˆ
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;

์‹ค์ˆ˜ 3: ๋””๋ ‰ํ† ๋ฆฌ x ๊ถŒํ•œ ์ œ๊ฑฐ

chmod -x /some/dir  # ์ด๋Ÿฌ๋ฉด cd๋„ ๋ชป ํ•˜๊ณ  ์•ˆ์— ์žˆ๋Š” ํŒŒ์ผ๋„ ๋ชป ์ฝ๋Š”๋‹ค

์ •๋ฆฌ

Linux ํŒŒ์ผ ๊ถŒํ•œ์€ ์ฒ˜์Œ์—” ๋ณต์žกํ•ด ๋ณด์ด์ง€๋งŒ ๊ตฌ์กฐ๊ฐ€ ๋ช…ํ™•ํ•˜๋‹ค.

  1. ๊ธฐ๋ณธ ๊ตฌ์กฐ: ํŒŒ์ผ ํƒ€์ž… 1์ž + owner/group/other ๊ฐ 3์ž (rwx)
  2. ์ˆซ์ž ํ‘œ๊ธฐ: r=4, w=2, x=1 ํ•ฉ์‚ฐ (755, 644, 600)
  3. umask: ์ƒˆ ํŒŒ์ผ ๊ธฐ๋ณธ ๊ถŒํ•œ์„ ์ •ํ•˜๋Š” ๋งˆ์Šคํฌ (๋ณดํ†ต 022)
  4. ํŠน์ˆ˜ ๋น„ํŠธ: SUID(4000) / SGID(2000) / Sticky(1000) โ€” ๋ชฉ์ ์ด ๊ฐ๊ฐ ๋‹ค๋ฆ„

๋ณด์•ˆ ๊ด€์ ์—์„œ๋Š” ์ตœ์†Œ ๊ถŒํ•œ ์›์น™์„ ํ•ญ์ƒ ๊ธฐ์–ตํ•˜์ž. ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ์—ด๊ณ , SUID ํŒŒ์ผ ๋ชฉ๋ก์€ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ฐ์‚ฌํ•˜๊ณ , chmod 777์€ ์ž„์‹œ๋„ ์ง€์–‘ํ•˜๋Š” ๊ฒƒ์ด ์Šต๊ด€์ด ๋˜์–ด์•ผ ํ•œ๋‹ค.


์ฐธ๊ณ 

@leekh8
๋ณด์•ˆ, ์›น ๊ฐœ๋ฐœ, Python์„ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ