๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
6. CS ๊ธฐ์ดˆ ๐Ÿ“š/Linux & Unix ๐Ÿง

[Linux/Unix][3-2] chmod ๋ช…๋ น

by lxvxxu 2025. 10. 21.

๐Ÿงฉ chmod (change mode) ๋ช…๋ น์–ด

chmod๋Š” ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ ‘๊ทผ ๊ถŒํ•œ(permission) ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ช…๋ น์–ด๋‹ค.
‘change mode’์˜ ์•ฝ์ž๋กœ, ํŒŒ์ผ์˜ ์ฝ๊ธฐ(r), ์“ฐ๊ธฐ(w), ์‹คํ–‰(x) ๊ถŒํ•œ์„
์‚ฌ์šฉ์ž(user), ๊ทธ๋ฃน(group), ๊ทธ ์™ธ ์‚ฌ์šฉ์ž(others) ๋ณ„๋กœ ๊ฐ๊ฐ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.


๐Ÿง  1๏ธโƒฃ ๊ธฐ๋ณธ ๊ฐœ๋…

ํ•ญ๋ชฉ์˜๋ฏธ
user (u) ํŒŒ์ผ์˜ ์†Œ์œ ์ž
group (g) ํŒŒ์ผ์ด ์†ํ•œ ๊ทธ๋ฃน ๊ตฌ์„ฑ์›
others (o) ๊ทธ ์™ธ์˜ ๋ชจ๋“  ์‚ฌ์šฉ์ž
mode (๋ชจ๋“œ) ๊ฐ ๊ถŒํ•œ(r, w, x) ์กฐํ•ฉ ๊ฐ’์œผ๋กœ, ํŒŒ์ผ ์ ‘๊ทผ ๊ถŒํ•œ ์ƒํƒœ๋ฅผ ๋œปํ•จ

์ฆ‰, “ํŒŒ์ผ์˜ mode๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค”๋Š” ๊ฒƒ์€ ๊ณง “ํŒŒ์ผ์˜ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ณ€๊ฒฝํ•œ๋‹ค”๋Š” ๋œป์ด๋‹ค.


โš™๏ธ 2๏ธโƒฃ ์‚ฌ์šฉ ํ˜•์‹

 

chmod [OPTION] [MODE] [FILE]

๐Ÿ”ธ ์˜ต์…˜(OPTION)

์˜ต์…˜์„ค๋ช…
-v ๊ถŒํ•œ์ด ๋ณ€๊ฒฝ๋˜๋Š” ํŒŒ์ผ์— ๋Œ€ํ•ด ์ง„๋‹จ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ
-c ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ์—๋งŒ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ
-f ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š์Œ (๊ฐ•์ œ ์ ์šฉ)
-R ์ง€์ •ํ•œ ๋ชจ๋“œ๋ฅผ ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•ด ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๊นŒ์ง€ ์žฌ๊ท€์ ์œผ๋กœ(recursively) ์ ์šฉ

๐Ÿ”ธ ๋ชจ๋“œ(MODE)

ํŒŒ์ผ์— ์ ์šฉํ•  ๋ชจ๋“œ(mode) ๋ฌธ์ž์—ด ์กฐํ•ฉ 

๊ธฐํ˜ธ์˜๋ฏธ
u, g, o, a ์‚ฌ์šฉ์ž(user), ๊ทธ๋ฃน(group), ๊ธฐํƒ€ ์‚ฌ์šฉ์ž(others), ์ „์ฒด(all)
+, -, = ํ˜„์žฌ ๋ชจ๋“œ์— ๊ถŒํ•œ ์ถ”๊ฐ€(+), ํ˜„์žฌ ๋ชจ๋“œ์—์„œ ๊ถŒํ•œ ์ œ๊ฑฐ(-), ํ˜„์žฌ ๋ชจ๋“œ๋กœ ๊ถŒํ•œ ์„ค์ •/์ง€์ •(=)
r, w, x ์ฝ๊ธฐ(read), ์“ฐ๊ธฐ(write), ์‹คํ–‰(execute) ๊ถŒํ•œ
X ๋””๋ ‰ํ„ฐ๋ฆฌ // ์ด๋ฏธ ์‹คํ–‰ ๊ถŒํ•œ(x)์ด ์žˆ๋Š” ํŒŒ์ผ  ์—๋งŒ ์‹คํ–‰ ๊ถŒํ•œ ๋ถ€์—ฌ
s SetUID / SetGID (์‹คํ–‰ ์‹œ ํŒŒ์ผ ์†Œ์œ ์ž ๋˜๋Š” ๊ทธ๋ฃน ID๋กœ ์‹คํ–‰)
t Sticky bit (๊ณต์œ  ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ํƒ€์ธ ํŒŒ์ผ ์‚ญ์ œ ์ œํ•œ)
0~7 8์ง„์ˆ˜๋กœ ๊ถŒํ•œ์„ ํ‘œํ˜„ (์ˆซ์ž ๋ชจ๋“œ)

๐Ÿงฉ 3๏ธโƒฃ ๊ธฐํ˜ธ ๋ชจ๋“œ(Symbolic Mode) ์˜ˆ์‹œ

๋ช…๋ น์–ด์„ค๋ช…
chmod g+r FILE ๊ทธ๋ฃน์— ์ฝ๊ธฐ ๊ถŒํ•œ ์ถ”๊ฐ€
chmod go-wx FILE ๊ทธ๋ฃน ๋ฐ ๊ธฐํƒ€ ์‚ฌ์šฉ์ž์—์„œ ์“ฐ๊ธฐ, ์‹คํ–‰ ๊ถŒํ•œ ์ œ๊ฑฐ
chmod a=x FILE ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹คํ–‰๋งŒ ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค์ •
chmod u=rwx,go= FILE ์†Œ์œ ์ž๋Š” ๋ชจ๋“  ๊ถŒํ•œ, ๊ทธ๋ฃน/๊ธฐํƒ€๋Š” ๊ถŒํ•œ ์—†์Œ

๐Ÿ“˜ ์˜ˆ์‹œ

ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ์ง€์ •๋œ ๊ถŒํ•œ์„ ํ™•์ธํ•˜๋ฉด์„œ “ls -l” ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
$ ls -l file.txt
-rw-r--r-- 1 user user 0 Oct 21 12:00 file.txt

$ chmod a+x file.txt
$ ls -l file.txt
-rwxr-xr-x 1 user user 0 Oct 21 12:01 file.txt

 

 


๐Ÿ”ข 4๏ธโƒฃ 8์ง„์ˆ˜(์ˆซ์ž) ๋ชจ๋“œ (Octal Mode)

์œ„ ๋ช…๋ น์–ด๋Š” ๋ชจ๋‘ '๊ธฐํ˜ธ ๋ชจ๋“œ'๋กœ ๋ชจ๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ์‹์ด๊ณ , 
๊ฐ ๊ถŒํ•œ์„ 8์ง„์ˆ˜ ์ˆซ์ž๋กœ ํ‘œํ˜„ํ•˜์—ฌ ํ•œ ๋ฒˆ์— ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ถŒํ•œ์˜ ํ•ฉ๊ณ„๋ฅผ ํ†ตํ•ด ์ˆซ์ž๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์ฝ๊ณ  ์“ฐ๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋„๋ก ์ง€์ • $ chmod  000  FILE
๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์ฝ๊ณ  ์“ฐ๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ ์ง€์ • $ chmod  777  FILE
์†Œ์œ ์ž๋Š” ๋ชจ๋“  ๊ถŒํ•œ, ๊ทธ๋ฃน ๋ฐ ๊ทธ ์™ธ ์‚ฌ์šฉ์ž๋Š”
์ฝ๊ธฐ์™€ ์‹คํ–‰๋งŒ ๊ฐ€๋Šฅ
$ chmod  755  FILE

 

๊ถŒํ•œ ๊ฐ’
์ฝ๊ธฐ(r) 4
์“ฐ๊ธฐ(w) 2
์‹คํ–‰(x) 1

๊ฐ ์‚ฌ์šฉ์ž(u/g/o)์— ๋Œ€ํ•ด ์ด ๊ฐ’์„ ๋”ํ•œ ๊ฒฐ๊ณผ๋ฅผ ํ•œ ์ž๋ฆฌ๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

 

์‚ฌ์šฉ์ž ์˜ˆ์‹œ ๊ถŒํ•œ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ
user rwx 4+2+1 7
group r-x 4+0+1 5
others r-x 4+0+1 5

๐Ÿ‘‰ ๋”ฐ๋ผ์„œ chmod 755 FILE = rwxr-xr-x


๐Ÿ“˜ ์ˆซ์ž ๋ชจ๋“œ ์˜ˆ์‹œ

๋ช…๋ น์–ด ์„ค๋ช…
chmod 000 FILE ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ ์—†์Œ (----------)
chmod 777 FILE ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ชจ๋“  ๊ถŒํ•œ (rwxrwxrwx)
chmod 755 FILE ์‚ฌ์šฉ์ž: ๋ชจ๋“  ๊ถŒํ•œ / ๊ทธ๋ฃน·๊ธฐํƒ€: ์ฝ๊ธฐ+์‹คํ–‰ (rwxr-xr-x)
chmod 644 FILE ์‚ฌ์šฉ์ž: ์ฝ๊ธฐ·์“ฐ๊ธฐ / ๊ทธ๋ฃน·๊ธฐํƒ€: ์ฝ๊ธฐ๋งŒ (rw-r--r--)

๐Ÿ“˜ ์‹คํ–‰ ์˜ˆ์‹œ

$ chmod 755 run.sh
$ ls -l run.sh
-rwxr-xr-x 1 user user 42 Oct 21 15:00 run.sh

 


๐Ÿ” 5๏ธโƒฃ ๊ถŒํ•œ ํ™•์ธ

 
$ ls -l [ํŒŒ์ผ๋ช…]

 

์ถœ๋ ฅ ํ˜•์‹:

-rwxr-xr--
โ”‚ โ”‚ โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€ others ๊ถŒํ•œ
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ group ๊ถŒํ•œ
โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€ user ๊ถŒํ•œ
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€ ํŒŒ์ผ ํƒ€์ž… (-=์ผ๋ฐ˜ํŒŒ์ผ, d=๋””๋ ‰ํ† ๋ฆฌ)
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ๊ธฐํƒ€ ์ •๋ณด

 

 

์˜ˆ:

drwxr-xr-x 2 user user 4096 Oct 21 15:10 mydir

d : ๋””๋ ‰ํ† ๋ฆฌ
rwxr-xr-x : ์†Œ์œ ์ž๋Š” ๋ชจ๋“  ๊ถŒํ•œ, ๊ทธ๋ฃน/๊ธฐํƒ€๋Š” ์ฝ๊ธฐ+์‹คํ–‰


โš™๏ธ 6๏ธโƒฃ ์žฌ๊ท€์  ์ ์šฉ

๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฐ ํ•˜์œ„ ํ•ญ๋ชฉ ์ „์ฒด์— ๊ถŒํ•œ์„ ์ผ๊ด„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด -R ์˜ต์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ“˜ ์˜ˆ์‹œ

 
$ chmod -R 755 /home/user/project

๐Ÿง  7๏ธโƒฃ ํŠน์ˆ˜ ๋น„ํŠธ ์„ค๋ช… (s, t)

 

๊ธฐํ˜ธ ์ด๋ฆ„ ์„ค๋ช…
s SetUID / SetGID ์‹คํ–‰ ์‹œ ํŒŒ์ผ ์†Œ์œ ์ž ๋˜๋Š” ๊ทธ๋ฃน ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰๋จ
t Sticky bit ๊ณต์œ  ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ํŒŒ์ผ ์†Œ์œ ์ž๋งŒ ์‚ญ์ œ ๊ฐ€๋Šฅ (์˜ˆ: /tmp)

๐Ÿ“˜ ์˜ˆ์‹œ

 
$ chmod 1777 /tmp

→ ๋ชจ๋“  ์‚ฌ์šฉ์ž ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ž๊ธฐ ํŒŒ์ผ๋งŒ ์‚ญ์ œ ๊ฐ€๋Šฅ


โœ… ์š”์•ฝ ์ •๋ฆฌ

 

๊ตฌ๋ถ„ ์„ค๋ช… ์˜ˆ์‹œ
๋ช…๋ น ํ˜•์‹ chmod [์˜ต์…˜] [๋ชจ๋“œ] [ํŒŒ์ผ] chmod 755 file.sh
์˜ต์…˜ -R(์žฌ๊ท€), -v(์ง„๋‹จ), -c(๋ณ€๊ฒฝ๋งŒ), -f(๋ฌด์‹œ)  
๊ธฐํ˜ธ ๋ชจ๋“œ u,g,o,a + +,-,= + r,w,x chmod g+r file
์ˆซ์ž ๋ชจ๋“œ 4(r)+2(w)+1(x) → ํ•ฉ๊ณ„๋กœ ํ‘œํ˜„ chmod 644 file
๊ถŒํ•œ ํ™•์ธ ls -l -rwxr-xr-x
ํŠน์ˆ˜๋น„ํŠธ s (SetUID/GID), t (Sticky) chmod 4755 file, chmod 1777 /tmp

โœ… ํ•œ ์ค„ ์š”์•ฝ

chmod๋Š” ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์ฝ๊ธฐ·์“ฐ๊ธฐ·์‹คํ–‰ ๊ถŒํ•œ(mode) ์„
์‚ฌ์šฉ์ž(u), ๊ทธ๋ฃน(g), ๊ธฐํƒ€(o) ๋‹จ์œ„๋กœ ์ œ์–ดํ•˜๋Š” ๋ช…๋ น์–ด๋‹ค.
๊ธฐํ˜ธ(u+rwx)๋‚˜ ์ˆซ์ž(755)๋กœ ์ง€์ •ํ•˜๋ฉฐ, ls -l๋กœ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


 


๐Ÿงฉ ํŒŒ์ผ ๊ถŒํ•œ ๋ฌธ์ž์—ด ํ•ด์„ (ls -l ๊ฒฐ๊ณผ ๋ถ„์„)

ls -l ๋ช…๋ น์„ ์ž…๋ ฅํ•˜๋ฉด ํŒŒ์ผ์˜ ์†Œ์œ ์ž, ๊ทธ๋ฃน, ํฌ๊ธฐ, ๋‚ ์งœ, ์ด๋ฆ„๊ณผ ํ•จ๊ป˜
๋งจ ์•ž์— drwxr-xr-x ๊ฐ™์€ ๊ถŒํ•œ ๋ฌธ์ž์—ด(permission string) ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
์ด ๋ฌธ์ž์—ด์€ ํŒŒ์ผ์˜ ํƒ€์ž… + ๊ถŒํ•œ ๋น„ํŠธ(9๊ฐœ) ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์š”.


๐Ÿง  1๏ธโƒฃ ๊ธฐ๋ณธ ๊ตฌ์กฐ

 
drwxr-xr-x
โ”‚โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 9๊ฐœ์˜ ๊ถŒํ•œ ๋น„ํŠธ (rwxr-xr-x)
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ํŒŒ์ผ ํƒ€์ž… ๋น„ํŠธ

 

 

๊ตฌ๋ถ„ ์„ค๋ช… ์˜ˆ์‹œ
1๋ฒˆ์งธ ๋ฌธ์ž ํŒŒ์ผ์˜ ํƒ€์ž…(type) -(์ผ๋ฐ˜ ํŒŒ์ผ), d(๋””๋ ‰ํ„ฐ๋ฆฌ), l(๋งํฌ) ๋“ฑ
2~4๋ฒˆ์งธ ๋ฌธ์ž ์†Œ์œ ์ž(user) ๊ถŒํ•œ rwx
5~7๋ฒˆ์งธ ๋ฌธ์ž ๊ทธ๋ฃน(group) ๊ถŒํ•œ r-x
8~10๋ฒˆ์งธ ๋ฌธ์ž ๊ธฐํƒ€ ์‚ฌ์šฉ์ž(others) ๊ถŒํ•œ r-x

๐Ÿงฉ 2๏ธโƒฃ ํŒŒ์ผ ํƒ€์ž… ๋น„ํŠธ (์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž)

 

๊ธฐํ˜ธ ์˜๋ฏธ ์„ค๋ช…
- ์ผ๋ฐ˜ ํŒŒ์ผ ํ…์ŠคํŠธ, ์‹คํ–‰ ํŒŒ์ผ ๋“ฑ
d ๋””๋ ‰ํ„ฐ๋ฆฌ ํด๋”
l ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ๋‹ค๋ฅธ ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚ด
b ๋ธ”๋ก ๋””๋ฐ”์ด์Šค ํ•˜๋“œ๋””์Šคํฌ, USB ๊ฐ™์€ ๋ธ”๋ก ์žฅ์น˜
c ๋ฌธ์ž ๋””๋ฐ”์ด์Šค ํ„ฐ๋ฏธ๋„, ํ‚ค๋ณด๋“œ, ๋งˆ์šฐ์Šค ๋“ฑ
p ํŒŒ์ดํ”„ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์šฉ
s ์†Œ์ผ“ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์šฉ

๐Ÿ“˜ ์˜ˆ์‹œ

$ ls -l
drwxr-xr-x  2 user user 4096 Oct 21  dir1/     # ๋””๋ ‰ํ„ฐ๋ฆฌ
-rw-r--r--  1 user user  512 Oct 21  file.txt  # ์ผ๋ฐ˜ ํŒŒ์ผ
lrwxrwxrwx  1 user user   10 Oct 21  link -> file.txt  # ์‹ฌ๋ณผ๋ฆญ ๋งํฌ

โš™๏ธ 3๏ธโƒฃ ๊ถŒํ•œ ๋น„ํŠธ (rwxr-xr-x)

๊ฐ ๊ถŒํ•œ์€ ์ฝ๊ธฐ(read), ์“ฐ๊ธฐ(write), ์‹คํ–‰(execute) ์„ ์˜๋ฏธํ•˜๋ฉฐ,
3๋น„ํŠธ์”ฉ 3์„ธํŠธ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

rwxr-xr-x
โ”‚โ”‚โ”‚ โ”‚โ”‚โ”‚ โ”‚โ”‚โ”‚
โ”‚โ”‚โ”‚ โ”‚โ”‚โ”‚ โ”‚โ”‚โ””โ”€ others (๊ธฐํƒ€ ์‚ฌ์šฉ์ž)
โ”‚โ”‚โ”‚ โ”‚โ”‚โ”‚ โ””โ”€โ”€โ”€ group (๊ทธ๋ฃน)
โ”‚โ”‚โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ user (์†Œ์œ ์ž)
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ๊ฐ ์„ธํŠธ๋Š” rwx (์ฝ๊ธฐ/์“ฐ๊ธฐ/์‹คํ–‰)
๊ธฐํ˜ธ ๋น„ํŠธ ๊ฐ’ ์˜๋ฏธ
r 4 ์ฝ๊ธฐ(Read) ๊ถŒํ•œ
w 2 ์“ฐ๊ธฐ(Write) ๊ถŒํ•œ
x 1 ์‹คํ–‰(Execute) ๊ถŒํ•œ
- 0 ๊ถŒํ•œ ์—†์Œ

๐Ÿ“˜ ๊ณ„์‚ฐ ์˜ˆ์‹œ

๊ถŒํ•œ ๋ฌธ์ž์—ด 8์ง„์ˆ˜ ํ‘œํ˜„ ์˜๋ฏธ 
rwxr-xr-x 755 ์†Œ์œ ์ž: rwx(7), ๊ทธ๋ฃน: r-x(5), ๊ธฐํƒ€: r-x(5)
rw-r--r-- 644 ์†Œ์œ ์ž: rw-(6), ๊ทธ๋ฃน: r--(4), ๊ธฐํƒ€: r--(4)
rwx------ 700 ์†Œ์œ ์ž๋งŒ ๋ชจ๋“  ๊ถŒํ•œ
rwxrwxrwx 777 ๋ชจ๋“  ์‚ฌ์šฉ์ž ๋ชจ๋“  ๊ถŒํ•œ

๐Ÿ“Š 4๏ธโƒฃ ๊ถŒํ•œ ๋ฌธ์ž์—ด ์‹œ๊ฐํ™”

 
ํŒŒ์ผ๋ช…: script.sh
๊ถŒํ•œ:  -rwxr-xr--

๋ฌธ์ž ์œ„์น˜:  1 234 567 890
๊ตฌ์กฐ:       - rwx r-x r--
๊ตฌ๋ถ„:       โ”‚ โ”‚   โ”‚   โ””โ”€โ”€ others (๊ธฐํƒ€ ์‚ฌ์šฉ์ž)
             โ”‚ โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€ group (๊ทธ๋ฃน)
             โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ user (์†Œ์œ ์ž)
             โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ํŒŒ์ผ ํƒ€์ž…

๐Ÿงฉ 5๏ธโƒฃ ํŠน์ˆ˜ ๊ถŒํ•œ ๋น„ํŠธ (Special Permission Bits)

ํŠน์ˆ˜ ๋น„ํŠธ ๊ธฐํ˜ธ ์„ค๋ช… ์‚ฌ์šฉ ์œ„์น˜
SetUID s ์‹คํ–‰ ์‹œ ํ•ด๋‹น ํŒŒ์ผ์˜ ์†Œ์œ ์ž ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰ user ์˜์—ญ์˜ x ์œ„์น˜
SetGID s ์‹คํ–‰ ์‹œ ํ•ด๋‹น ํŒŒ์ผ์˜ ๊ทธ๋ฃน ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰ group ์˜์—ญ์˜ x ์œ„์น˜
Sticky bit t ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด ํŒŒ์ผ์„ ์†Œ์œ ์ž๋งŒ ์‚ญ์ œ ๊ฐ€๋Šฅ others ์˜์—ญ์˜ x ์œ„์น˜

๐Ÿ“˜ ์˜ˆ์‹œ

๋ช…๋ น์–ด ๊ฒฐ๊ณผ ๊ถŒํ•œ ์˜๋ฏธ
chmod 4755 file -rwsr-xr-x SetUID ์„ค์ • (์†Œ์œ ์ž ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰๋จ)
chmod 2755 dir drwxr-sr-x SetGID ์„ค์ • (๊ทธ๋ฃน ์ƒ์†)
chmod 1777 /tmp drwxrwxrwt Sticky bit ์„ค์ • (๊ณต์œ  ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ณด์•ˆ)

๐Ÿ” ํŠน์ˆ˜ ๋น„ํŠธ ์‹œ๊ฐํ™” ์˜ˆ์‹œ

๋น„ํŠธ ์˜๋ฏธ  
SetUID rwsr-xr-x → user ์˜์—ญ์˜ x๊ฐ€ s๋กœ ํ‘œ์‹œ  
SetGID rwxr-sr-x → group ์˜์—ญ์˜ x๊ฐ€ s๋กœ ํ‘œ์‹œ  
Sticky bit rwxrwxrwt → others ์˜์—ญ์˜ x๊ฐ€ t๋กœ ํ‘œ์‹œ  

๐Ÿง  6๏ธโƒฃ ์ •๋ฆฌ ์š”์•ฝํ‘œ

ํ•ญ๋ชฉ์œ„์น˜์˜ˆ์‹œ์„ค๋ช…
ํŒŒ์ผ ํƒ€์ž… 1๋ฒˆ์งธ ๋ฌธ์ž d, -, l ๋””๋ ‰ํ„ฐ๋ฆฌ, ํŒŒ์ผ, ๋งํฌ ๊ตฌ๋ถ„
์†Œ์œ ์ž ๊ถŒํ•œ 2~4๋ฒˆ์งธ rwx ์ฝ๊ธฐ·์“ฐ๊ธฐ·์‹คํ–‰
๊ทธ๋ฃน ๊ถŒํ•œ 5~7๋ฒˆ์งธ r-x ์ฝ๊ธฐ·์‹คํ–‰
๊ธฐํƒ€ ์‚ฌ์šฉ์ž ๊ถŒํ•œ 8~10๋ฒˆ์งธ r-x ์ฝ๊ธฐ·์‹คํ–‰
ํŠน์ˆ˜ ๋น„ํŠธ s, t rws, rwt SetUID, SetGID, Sticky bit

๐Ÿงฉ 7๏ธโƒฃ ์ข…ํ•ฉ ์˜ˆ์‹œ

๐Ÿ“˜ ํŒŒ์ผ ๋ชฉ๋ก

 
$ ls -l
drwxr-xr-x  2 user devteam 4096 Oct 21  project/
-rwxr-xr--  1 user user    531 Oct 21  run.sh
-rw-r--r--  1 user user   1250 Oct 21  notes.txt
-rwsr-xr-x  1 root root   2412 Oct 21  passwd_helper
drwxrwxrwt  3 root root   4096 Oct 21  /tmp
ํŒŒ์ผ๊ถŒํ•œ์˜๋ฏธ
project/ drwxr-xr-x ๋””๋ ‰ํ„ฐ๋ฆฌ, ์†Œ์œ ์ž: ๋ชจ๋“  ๊ถŒํ•œ, ๊ทธ๋ฃน/๊ธฐํƒ€: ์ฝ๊ธฐ+์‹คํ–‰
run.sh -rwxr-xr-- ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ
notes.txt -rw-r--r-- ์ผ๋ฐ˜ ํ…์ŠคํŠธ ํŒŒ์ผ (์ฝ๊ธฐ·์“ฐ๊ธฐ)
passwd_helper -rwsr-xr-x SetUID ํ”„๋กœ๊ทธ๋žจ (root ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰)
/tmp drwxrwxrwt Sticky bit ๋””๋ ‰ํ„ฐ๋ฆฌ (๊ณต์šฉ ๊ณต๊ฐ„)

โœ… ํ•œ ์ค„ ์š”์•ฝ

ls -l์˜ drwxr-xr-x ๋ฌธ์ž์—ด์€
[ํŒŒ์ผํƒ€์ž… 1์ž๋ฆฌ] + [์†Œ์œ ์ž 3์ž๋ฆฌ] + [๊ทธ๋ฃน 3์ž๋ฆฌ] + [๊ธฐํƒ€ 3์ž๋ฆฌ]๋กœ ๊ตฌ์„ฑ๋œ
10๋น„ํŠธ ๊ถŒํ•œ ๊ตฌ์กฐ์ด๋ฉฐ, ํŠน์ˆ˜ ๋น„ํŠธ(s, t)๋Š” ์‹คํ–‰ ์œ„์น˜์— ์ถ”๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค.

 


 

๐Ÿงฎ ํŒŒ์ผ ๊ถŒํ•œ 8์ง„์ˆ˜(octal) ํ‘œ

8์ง„์ˆ˜ ๊ฐ’ ์ด์ง„์ˆ˜ rwx ๋น„ํŠธ ๋ฌธ์ž ํ‘œํ˜„ ์˜๋ฏธ (๊ถŒํ•œ)
0 000 --- ์•„๋ฌด ๊ถŒํ•œ ์—†์Œ
1 001 --x ์‹คํ–‰ ๊ถŒํ•œ๋งŒ
2 010 -w- ์“ฐ๊ธฐ ๊ถŒํ•œ๋งŒ
3 011 -wx ์“ฐ๊ธฐ + ์‹คํ–‰
4 100 r-- ์ฝ๊ธฐ ๊ถŒํ•œ๋งŒ
5 101 r-x ์ฝ๊ธฐ + ์‹คํ–‰
6 110 rw- ์ฝ๊ธฐ + ์“ฐ๊ธฐ
7 111 rwx ์ฝ๊ธฐ + ์“ฐ๊ธฐ + ์‹คํ–‰ (๋ชจ๋“  ๊ถŒํ•œ)

 


๐Ÿงฉ 3์ž๋ฆฌ 8์ง„์ˆ˜ ๊ถŒํ•œ ์กฐํ•ฉ ์˜ˆ์‹œ

8์ง„์ˆ˜ ๊ถŒํ•œ๋ฌธ์ž ํ‘œํ˜„์˜๋ฏธ

 

000 --------- ์•„๋ฌด๋„ ์ ‘๊ทผ ๋ถˆ๊ฐ€
600 rw------- ์†Œ์œ ์ž๋งŒ ์ฝ๊ธฐ·์“ฐ๊ธฐ
644 rw-r--r-- ์ผ๋ฐ˜ ํ…์ŠคํŠธ ํŒŒ์ผ ๊ธฐ๋ณธ ๊ถŒํ•œ
700 rwx------ ์†Œ์œ ์ž๋งŒ ๋ชจ๋“  ๊ถŒํ•œ
755 rwxr-xr-x ์‹คํ–‰ ํŒŒ์ผ ๊ธฐ๋ณธ ๊ถŒํ•œ
775 rwxrwxr-x ๊ทธ๋ฃน๊นŒ์ง€ ๋ชจ๋“  ๊ถŒํ•œ
777 rwxrwxrwx ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ชจ๋“  ๊ถŒํ•œ (โš  ์œ„ํ—˜)
664 rw-rw-r-- ์†Œ์œ ์ž/๊ทธ๋ฃน ์ฝ๊ธฐ·์“ฐ๊ธฐ
711 rwx--x--x ์‹คํ–‰๋งŒ ๊ฐ€๋Šฅ
555 r-xr-xr-x ์ฝ๊ธฐ·์‹คํ–‰๋งŒ ๊ฐ€๋Šฅ
444 r--r--r-- ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅ

๐Ÿงฎ ํŠน์ˆ˜ ๋น„ํŠธ ํฌํ•จ (SetUID / SetGID / Sticky bit)

ํŒŒ์ผ์˜ ํŠน์ˆ˜ ๊ถŒํ•œ ๋น„ํŠธ๋Š” 4๋ฒˆ์งธ ์ˆซ์ž(์™ผ์ชฝ)์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

ํŠน์ˆ˜๋น„ํŠธ๊ฐ’์˜๋ฏธ์˜ˆ์‹œ
SetUID 4 ์‹คํ–‰ ์‹œ ํŒŒ์ผ ์†Œ์œ ์ž ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰ chmod 4755 file → -rwsr-xr-x
SetGID 2 ์‹คํ–‰ ์‹œ ํŒŒ์ผ ๊ทธ๋ฃน ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰ chmod 2755 dir → drwxr-sr-x
Sticky bit 1 ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด ํŒŒ์ผ ์‚ญ์ œ๋ฅผ ์†Œ์œ ์ž๋งŒ ๊ฐ€๋Šฅ chmod 1777 /tmp → drwxrwxrwt

๐Ÿ“˜ ์กฐํ•ฉ ์˜ˆ์‹œ

8์ง„์ˆ˜๊ฒฐ๊ณผ ๊ถŒํ•œ์„ค๋ช…
4755 -rwsr-xr-x SetUID + 755
2755 drwxr-sr-x SetGID + 755
1755 drwxrwxr-t Sticky + 755
7777 rwsrwsrwt ๋ชจ๋“  ํŠน์ˆ˜๋น„ํŠธ + ์ „์ฒด ๊ถŒํ•œ