Linux์˜ Permission

Permission Error

Linux OS์—์„œ ์ž‘์—…์„ ํ•ด ๋ณธ ์‚ฌ๋žŒ์ด๋ผ๋ฉด ํ•œ ๋ฒˆ์ฏค ์•„๋ž˜ ์˜ค๋ฅ˜๋ฅผ ๋งŒ๋‚˜๋ณธ ์ ์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.

Permission denied.

์ด๋Š” ํ˜„์žฌ ํ•ด๋‹น ์‰˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ํŒŒ์ผ์— ๋Œ€ํ•œ ํ•ด๋‹น ๊ถŒํ•œ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜์ด๋‹ค.

์ด ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Linux์˜ ๊ถŒํ•œ ์ฒด๊ณ„์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

Linux์˜ ๊ถŒํ•œ ์ฒด๊ณ„

Linux์—์„œ๋Š” ํŒŒ์ผ๋ณ„๋กœ, ์‚ฌ์šฉ์ž๋ณ„๋กœ ๊ถŒํ•œ์˜ ์ข…๋ฅ˜๋ณ„๋กœ ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•œ๋‹ค.

๊ฐ ๊ถŒํ•œ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉ์ž๋ณ„(ํŒŒ์ผ ์˜ค๋„ˆ, ์˜ค๋„ˆ๊ฐ€ ์†ํ•œ ๊ทธ๋ฃน, ๋‚˜๋จธ์ง€ ์‚ฌ์šฉ์ž๋“ค)์— ๋”ฐ๋ผ 3๋น„ํŠธ์˜ 2์ง„์ˆ˜๋กœ ๋ถ€์—ฌ๋˜๊ณ  ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Linux Permission Structure

์ด๋ ‡๊ฒŒ ๋ถ€์—ฌ๋œ ๊ถŒํ•œ์„ ํ™•์ธํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ls -l ๋ช…๋ น์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

ls -l

์œ„์˜ ํŒŒ์ผ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ถŒํ•œ์„ ์†Œ์œ ํ•œ๋‹ค.

  • rootexecfile: owner์ธ root๋Š” ์ฝ๊ณ , ์“ฐ๊ณ , ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‚˜๋จธ์ง€๋Š” ์ฝ๊ณ , ์‹คํ–‰ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์“ธ ์ˆ˜๋Š”(๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜๋Š”) ์—†๋‹ค.

  • yhfile: owner์ธ yihyun์€ ์ฝ๊ณ , ์“ฐ๊ณ , ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‚˜๋จธ์ง€๋Š” ์ฝ์„ ์ˆ˜๋งŒ ์žˆ๋‹ค.

Super User์ธ root

root๋Š” ๋ชจ๋“  ๊ถŒํ•œ์„ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜์™€ ๊ฐ™์ด ๋™์ž‘ํ•œ๋‹ค.

  • ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋กœ ๋กœ๊ทธ์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ root๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ ๋„ ํ•ด๋‹น ์‚ฌ์šฉ์ž๋กœ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

  • root๋Š” owner ์ด์™ธ์— ๋ถ€์—ฌ๋˜์ง€ ์•Š์€ permission์ด ์žˆ์–ด๋„ ์ด์™€ ์ƒ๊ด€ ์—†์ด ํŒŒ์ผ์„ ์ฝ๊ณ , ๋ณ€๊ฒฝํ•˜๊ณ , ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋•Œ๋ฌธ์— root ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์•„์ฃผ ์ค‘์š”ํ•˜๋‹ค. root ๊ถŒํ•œ์ด ์•„๋ฌด์—๊ฒŒ๋‚˜ ์ฃผ์–ด์ง€์ง€ ์•Š๋„๋ก ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค.

๊ถŒํ•œ ๋ถ€์—ฌ ๋ช…๋ น์–ด chmod

ํŒŒ์ผ์˜ ๊ถŒํ•œ์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด chmod ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ˆซ์ž๋กœ ๋ถ€์—ฌ

// chmod {owner}{group}{other}
chmod 755 {filename} // rwx r-x r-x
chmod 744 {filename} // rwx r-- r--

๋ชจ๋“  ์‚ฌ์šฉ์ž์˜ ๋ชจ๋“  ๊ถŒํ•œ์„ ํ•œ ๋ฒˆ์— ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ๊ถŒํ•œ์„ ์„ค์ •ํ•  ๋•Œ์— ์šฉ์ดํ•˜๋‹ค.

๋ฌธ์ž๋กœ ๋ถ€์—ฌ

// chmod {u/g/o/a}{+/=/-}{r/w/x}
chmod u+w {filename}
chmod g+r {filename}

์ผ๋ถ€ ๊ถŒํ•œ์„ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ ์šฉ์ดํ•˜๋‹ค.

  • u/g/o/a: ๊ฐ๊ฐ user(owner), group, other, all์„ ๋œปํ•œ๋‹ค.

  • +/=/-: ๊ฐ๊ฐ ๊ถŒํ•œ์˜ ์ถ”๊ฐ€, ์ง€์ •, ์‚ญ์ œ๋ฅผ ๋œปํ•œ๋‹ค.

  • r/w/x: ์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์‹คํ–‰ ๊ถŒํ•œ์„ ๋œปํ•œ๋‹ค. (๋’ค์—์„œ ๋‚˜์˜ฌ ํŠน์ˆ˜ ๊ถŒํ•œ๋„ ์ด ์ž๋ฆฌ์— ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.)

ํŠน๋ณ„ํ•œ ๋ชจ๋“œ

User(Owner), Group, Other์— ๋Œ€ํ•œ ๊ถŒํ•œ ๋น„ํŠธ ์ด์™ธ์—๋„ ํŠน๋ณ„ํ•œ ๋ชจ๋“œ๋ฅผ ์œ„ํ•œ ๋น„ํŠธ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

์ด ๋น„ํŠธ๋Š” 4, 2, 1์˜ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐ๊ฐ์€ ๋‹ค์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

  • 4: ํ•ด๋‹น ํŒŒ์ผ์„ setuid ํŒŒ์ผ๋กœ ์„ ์–ธํ•œ๋‹ค.

  • 2: ํ•ด๋‹น ํŒŒ์ผ์„ setgid ํŒŒ์ผ๋กœ ์„ ์–ธํ•œ๋‹ค.

  • 1: ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ์— sticky bit๋ฅผ ์ ์šฉํ•œ๋‹ค.

setuid

ํ•ด๋‹น ํŒŒ์ผ์˜ ์‹คํ–‰ ๋„์ค‘ owner ๊ถŒํ•œ์ด ํ•„์š”ํ•œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ–‰์ž์—๊ฒŒ owner ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

setuid ํ”„๋กœ๊ทธ๋žจ์€ ์‹คํ–‰ ์ค‘์—๋Š” EUID(Effective User ID)๊ฐ€ ํŒŒ์ผ์˜ owner๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค. ์ฆ‰, ํŒŒ์ผ ์‹คํ–‰ ์ค‘์—๋Š” ํŒŒ์ผ ์†Œ์œ ์ž์˜ ๊ถŒํ•œ์„ ์–ป๋Š” ๊ฒƒ์ด๋‹ค.

๋•Œ๋ฌธ์— root ์†Œ์œ ์˜ ํŒŒ์ผ์„ setuid ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

setgid

ํ•ด๋‹น ํŒŒ์ผ์˜ ์‹คํ–‰์ž์—๊ฒŒ ํ•ด๋‹น ํŒŒ์ผ์˜ group ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

sticky bit

๊ณต์šฉ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์„ ์–ธํ•˜๊ธฐ ์œ„ํ•œ ๋น„ํŠธ. ๋””๋ ‰ํ† ๋ฆฌ์—๋งŒ ์ ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋‚˜๋จธ์ง€์— ์ ์šฉํ•  ์‹œ ๋ฌด์‹œ๋œ๋‹ค.

ํ•ด๋‹น ํŠน์ˆ˜ ๊ถŒํ•œ ๋น„ํŠธ๊ฐ€ ์ ์šฉ๋œ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ๋ˆ„๊ตฌ๋“  ์ƒ๊ด€์—†์ด ํŒŒ์ผ/๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋‚˜ ํ•ด๋‹น ํŒŒ์ผ/๋””๋ ‰ํ† ๋ฆฌ์˜ ์†Œ์œ ์ž ๋˜๋Š” root๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์ˆ˜์ •๊ณผ ์‚ญ์ œ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด Others์˜ ์‹คํ–‰ ๊ถŒํ•œ์ด ํ‘œ๊ธฐ๋˜๋Š” ์œ„์น˜์— ์†Œ๋ฌธ์ž t๊ฐ€ ํ‘œ๊ธฐ๋˜๋Š” ๊ฒฝ์šฐ sticky bit๊ฐ€ ์ ์šฉ๋œ ๊ฒƒ์ด๋‹ค.

Sticky Bits

Last updated