2025-09-15 10:45:32
๋ฐ˜์‘ํ˜•

๐Ÿ—‚๏ธ ํŒŒ์ผ ์ ‘๊ทผ ๊ถŒํ•œ ๊ด€๋ฆฌํ•˜๊ธฐ

1๏ธโƒฃ ํŒŒ์ผ ์†์„ฑ ์ดํ•ดํ•˜๊ธฐ

$ ls -l
-rw-r--r--  1 user group  120 Sep 15 10:00 test.txt
# -          โ†’ ํŒŒ์ผ ์ข…๋ฅ˜(-=์ผ๋ฐ˜ ํŒŒ์ผ, d=๋””๋ ‰ํ† ๋ฆฌ)
# rw-        โ†’ ์†Œ์œ ์ž(user)๋Š” ์ฝ๊ธฐ/์“ฐ๊ธฐ ๊ฐ€๋Šฅ
# r--        โ†’ ๊ทธ๋ฃน(group)์€ ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅ
# r--        โ†’ ๊ธฐํƒ€(other)๋Š” ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅ
# user       โ†’ ์†Œ์œ ์ž ์ด๋ฆ„
# group      โ†’ ๊ทธ๋ฃน ์ด๋ฆ„
# 120        โ†’ ํŒŒ์ผ ํฌ๊ธฐ(๋ฐ”์ดํŠธ)
# Sep 15 ... โ†’ ์ตœ์ข… ์ˆ˜์ • ์‹œ๊ฐ„
# test.txt   โ†’ ํŒŒ์ผ ์ด๋ฆ„

๐Ÿ‘‰ ์ฆ‰, rw-r--r-- ๋Š” ์†Œ์œ ์ž๋Š” ์ฝ๊ธฐ/์“ฐ๊ธฐ, ๊ทธ๋ฃน๊ณผ ๊ธฐํƒ€๋Š” ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์˜๋ฏธ์˜ˆ์š”.


2๏ธโƒฃ ๊ถŒํ•œ ๋ณ€๊ฒฝ ๋ฐฉ๋ฒ•

(1) ๋ฌธ์ž ๋ชจ๋“œ (๊ธฐํ˜ธ ๋ฐฉ์‹)

chmod u-w test.txt     # ์†Œ์œ ์ž(user) ์“ฐ๊ธฐ ๊ถŒํ•œ ์ œ๊ฑฐ
chmod g+wx test.txt    # ๊ทธ๋ฃน(group)์— ์“ฐ๊ธฐ/์‹คํ–‰ ๊ถŒํ•œ ์ถ”๊ฐ€
chmod o-r test.txt     # ๊ธฐํƒ€(other) ์ฝ๊ธฐ ๊ถŒํ•œ ์ œ๊ฑฐ

u = ์†Œ์œ ์ž (user)

g = ๊ทธ๋ฃน (group)

o = ๊ธฐํƒ€ (other)

a = ๋ชจ๋‘ (all)

(2) ์ˆซ์ž ๋ชจ๋“œ (8์ง„์ˆ˜ ๋ฐฉ์‹)

๊ถŒํ•œ ์ ์ˆ˜: r=4, w=2, x=1

ํ•ฉ์‚ฐ ๊ฒฐ๊ณผ:

rwx = 7

rw- = 6

r-- = 4

chmod 755 test.txt  
# u=rwx (7), g=rx (5), o=rx (5)
chmod 700 test.txt  
# u=rwx (7), g=--- (0), o=--- (0)

๐Ÿ“Š ์‹œ๊ฐํ™”:

flowchart TD
    A[์†Œ์œ ์ž user] -->|r=4| R1[์ฝ๊ธฐ]
    A -->|w=2| W1[์“ฐ๊ธฐ]
    A -->|x=1| X1[์‹คํ–‰]

    B[๊ทธ๋ฃน group] --> R2[์ฝ๊ธฐ]
    B --> W2[์“ฐ๊ธฐ]
    B --> X2[์‹คํ–‰]

    C[๊ธฐํƒ€ other] --> R3[์ฝ๊ธฐ]
    C --> W3[์“ฐ๊ธฐ]
    C --> X3[์‹คํ–‰]

3๏ธโƒฃ ๊ธฐ๋ณธ ๊ถŒํ•œ๊ณผ umask

ํŒŒ์ผ ์ƒ์„ฑ ์‹œ ๊ธฐ๋ณธ ๊ถŒํ•œ:

์ผ๋ฐ˜ ํŒŒ์ผ: 664 โ†’ rw-rw-r--

๋””๋ ‰ํ† ๋ฆฌ: 775 โ†’ rwxrwxr-x

umask: โ€œ๋น ์ง€๋Š” ๊ถŒํ•œโ€์„ ์˜๋ฏธ
(์ฆ‰, ํ—ˆ์šฉํ•˜์ง€ ์•Š์„ ๊ถŒํ•œ์„ ์ง€์ •)

umask           # ํ˜„์žฌ ๊ฐ’ ํ™•์ธ (๋ณดํ†ต 0002)
umask -S        # ๋ฌธ์ž ๋ฐฉ์‹์œผ๋กœ ํ™•์ธ (u=rwx,g=rwx,o=rx)

umask 077       # ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ๊ถŒํ•œ ๋ชจ๋‘ ์ฐจ๋‹จ
touch private.txt
ls -l private.txt
# ๊ฒฐ๊ณผ: -rw-------  (์†Œ์œ ์ž๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ)

4๏ธโƒฃ ํŠน์ˆ˜ ๊ถŒํ•œ (SetUID, SetGID, Sticky Bit)

๊ถŒํ•œ์„ 4์ž๋ฆฌ๋กœ ํ‘œ๊ธฐํ•  ๋•Œ ์•ž์ž๋ฆฌ๊ฐ€ ํŠน์ˆ˜ ๊ถŒํ•œ

4xxx โ†’ SetUID

2xxx โ†’ SetGID

1xxx โ†’ Sticky Bit

chmod 4755 program   # SetUID ์ ์šฉ (์†Œ์œ ์ž ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰)
chmod 2755 project   # SetGID ์ ์šฉ (๊ทธ๋ฃน ๊ถŒํ•œ ์ƒ์†)
chmod 1777 /tmp      # Sticky Bit ์ ์šฉ (๋ณธ์ธ๋งŒ ์‚ญ์ œ ๊ฐ€๋Šฅ)

์˜ˆ์‹œ:

ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root  ... passwd
# s โ†’ root ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰๋จ (SetUID)
ls -ld /tmp
drwxrwxrwt 14 root root ... tmp
# t โ†’ sticky bit (๋‹ค๋ฅธ ์‚ฌ๋žŒ ํŒŒ์ผ์€ ๋ชป ์ง€์›€)

5๏ธโƒฃ ์‹ค์Šต ์ˆœ์„œ

ls -l test.txt โ†’ ๊ถŒํ•œ ํ™•์ธ

chmod g+x test.txt โ†’ ๊ทธ๋ฃน ์‹คํ–‰ ๊ถŒํ•œ ์ถ”๊ฐ€

chmod u-w test.txt โ†’ ์†Œ์œ ์ž ์“ฐ๊ธฐ ์ œ๊ฑฐ

chmod 700 test.txt โ†’ ๊ฒฐ๊ณผ -rwx------

umask โ†’ ํ˜„์žฌ ๊ฐ’ ํ™•์ธ

ls -l test.txt โ†’ ๋ณ€๊ฒฝ ํ™•์ธ

umask 077 โ†’ ๋ณด์•ˆ ๊ฐ•ํ™”

touch private.txt && ls -l private.txt โ†’ -rw------- ์ƒ์„ฑ ํ™•์ธ


6๏ธโƒฃ ํ˜„์—…์—์„œ ์ž์ฃผ ์“ฐ๋Š” ๊ถŒํ•œ ์„ค์ • ๐Ÿ”‘

์›น ์„œ๋ฒ„ ๋กœ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ: chmod 750 /var/log/httpd
โ†’ ๊ด€๋ฆฌ์ž์™€ ์›น์„œ๋ฒ„ ๊ทธ๋ฃน๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ

/tmp ๋””๋ ‰ํ† ๋ฆฌ: ํ•ญ์ƒ 1777 (rwxrwxrwt)
โ†’ ๋ˆ„๊ตฌ๋‚˜ ํŒŒ์ผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ ์ž๊ธฐ ๊ฒƒ๋งŒ ์‚ญ์ œ ๊ฐ€๋Šฅ

๊ฐœ์ธ ํ‚ค ํŒŒ์ผ (~/.ssh/id_rsa): chmod 600
โ†’ ์˜ค๋„ˆ๋งŒ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ (๋ณด์•ˆ ํ•„์ˆ˜)

๊ณต์œ  ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ: chmod 2775 project
โ†’ ์ƒˆ ํŒŒ์ผ์ด ์ž๋™์œผ๋กœ ๊ทธ๋ฃน ์†Œ์œ  ์ƒ์†(SetGID)


โœ… ์ •๋ฆฌํ•˜๋ฉด,

ls -l ๋กœ ๊ถŒํ•œ ํ™•์ธ

chmod ๋กœ ๊ถŒํ•œ ์ˆ˜์ • (๋ฌธ์ž/์ˆซ์ž ๋ชจ๋“œ)

umask ๋กœ ๊ธฐ๋ณธ ๊ถŒํ•œ ์ œ์–ด

ํŠน์ˆ˜ ๋น„ํŠธ (SetUID, SetGID, Sticky) ๋กœ ํ˜„์—… ์ œ์–ด

๋ฐ˜์‘ํ˜•