songining
article thumbnail
<ํ•ดํ‚น: ๊ณต๊ฒฉ์˜ ์˜ˆ์ˆ > ์ฑ…์„ ๋ณด๊ณ  ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค
X86 ํ”„๋กœ์„ธ์„œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

 

C์–ธ์–ด์—์„œ ํŒŒ์ผ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. 

1. ํŒŒ์ผ ์„œ์ˆ ์ž (File Descriptor)

2. ํŒŒ์ผ ์ŠคํŠธ๋ฆผ (Filestream)

 

- ํŒŒ์ผ ์ŠคํŠธ๋ฆผ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•˜๊ธฐ๋Š” ํŽธํ•˜์ง€๋งŒ ํŒŒ์ผ ์„œ์ˆ ์ž๊ฐ€ ์ข€ ๋” ์ง์ ‘์ ์ž„

 ( ํŒŒ์ผ์„œ์ˆ ์ž๋Š” ๋กœ์šฐ๋ ˆ๋ฒจ, ํŒŒ์ผ ์ŠคํŠธ๋ฆผ์€ ํ•˜์ด๋ ˆ๋ฒจ ์ž…์ถœ๋ ฅ์ž„) 

 

ํŒŒ์ผ ์„œ์ˆ ์ž

- open() : ํ•จ์ˆ˜๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํŒŒ์ผ์„ ์—ด๊ณ  ํŒŒ์ผ ์„œ์ˆ ์ž๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ํŒŒ์ผ ์„œ์ˆ ์ž๋Š” ๋‹จ์ˆœํ•œ ์ •์ˆ˜ ๊ฐ’์ด์ง€๋งŒ ์—ด๋ฆฐ ํŒŒ์ผ๋งˆ๋‹ค ๊ณ ์œ ํ•˜๋‹ค.

                 ํŒŒ์ผ ์„œ์ˆ ์ž๋Š” ์—ด๋ฆฐ ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ์™€ ๊ฐ™์€ ์ธ์ž๋กœ ๋‹ค๋ฅธ ํ•จ์ˆ˜์—๊ฒŒ ๋„˜๊ฒจ์ง„๋‹ค. 

- close() : ํŒŒ์ผ ์„œ์ˆ ์ž๋ฅผ ์ธ์ž๋กœ ์‚ฌ์šฉ

- read() : ํŒŒ์ผ ์„œ์ˆ ์ž, ์ฝ๊ฑฐ๋‚˜ ์“ธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ, ์ฝ๊ฑฐ๋‚˜ ์“ธ ๋ฐ”์ดํŠธ ์ˆ˜ ์ด๋ ‡๊ฒŒ 3๊ฐœ์˜ ์ธ์ž๋ฅผ ๊ฐ€์ง 

- write() : ํŒŒ์ผ ์„œ์ˆ ์ž, ์ฝ๊ฑฐ๋‚˜ ์“ธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ, ์ฝ๊ฑฐ๋‚˜ ์“ธ ๋ฐ”์ดํŠธ ์ˆ˜ ์ด๋ ‡๊ฒŒ 3๊ฐœ์˜ ์ธ์ž๋ฅผ ๊ฐ€์ง

 

--> ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ๋ชจ๋“  ํ•จ์ˆ˜๋Š” -1์„ ๋ฆฌํ„ดํ•œ๋‹ค. 

 

ํŒŒ์ผ ๊ถŒํ•œ 

์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์‹คํ–‰ ๊ถŒํ•œ์„ ์‚ฌ์šฉ์ž, ๊ทธ๋ฃน, ๋‚˜๋จธ์ง€ ์„ธ๊ฐ€์ง€ ํ•„๋“œ์— ๋Œ€ํ•ด ํ‚ค๊ณ  ๋„๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ 

r : read (4), w: write(2), x : execute(1)

Ex) chmod 731 ํŒŒ์ผ์ด๋ฆ„ 

       chmod ugo-wx ํŒŒ์ผ์ด๋ฆ„ (์‚ฌ์šฉ์ž,๊ทธ๋ฃน,๋‚˜๋จธ์ง€์—๊ฒŒ ์“ฐ๊ธฐ์™€ ์‹คํ–‰๊ถŒํ•œ ์—†์• ๋ผ)

       chmod u+x ํŒŒ์ผ์ด๋ฆ„  (์‚ฌ์šฉ์ž์—๊ฒŒ ์“ฐ๊ธฐ ๊ถŒํ•œ ์ถ”๊ฐ€ํ•ด๋ผ)

 

์‚ฌ์šฉ์ž ID

 

๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ์˜ ๋ชจ๋“  ์‚ฌ์šฉ์ž๋Š” ๊ณ ์œ ํ•œ ์‚ฌ์šฉ์ž ID ์ˆซ์ž๋ฅผ ๊ฐ€์ง„๋‹ค. (์‚ฌ์šฉ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ’)

๋ชจ๋“  ํŒŒ์ผ์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ๊ฐ€์ง€๋Š” root๋Š” ์‚ฌ์šฉ์ž ID 0์„ ๊ฐ€์ง„๋‹ค. 

์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์€ ์‹ค์ œ ์‚ฌ์šฉ์ž ID(UID)์™€ ์‹ค์ œ ์œ ํšจ ์‚ฌ์šฉ์ž ID(EUID)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 

์ด ๋‘˜์€ set user id bit ์™€ ๊ฐ™์€ ๊ฒƒ์œผ๋กœ ๊ณ ์˜๋กœ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ์ด์ƒ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.

songyi(1000)๊ฐ€ ์‚ฌ์šฉ์ž ID์ด๋ฏ€๋กœ  ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ ๋‘ ์‚ฌ์šฉ์ž ID ๋ชจ๋‘ songyi(1000)์ด๋‹ค. 

set user id bit๋ฅผ ์ง€์ •ํ•˜๋ฉด ์‹คํ–‰ํ•  ๋•Œ ํ”„๋กœ์„ธ์Šค๋Š” ๋กœ๊ทธ์ธ ํ•œ ์‹ค์ œ ์‚ฌ์šฉ์ž ID(real user id) ๊ถŒํ•œ์ด ์•„๋‹Œ ์†Œ์œ ์ž ID ๊ถŒํ•œ(effective user id)์œผ๋กœ ๋™์ž‘

set user id bit ์ง€์ • ํ›„ ์‹ค์ œ ์‚ฌ์šฉ์ž ID ์™€ ์œ ํšจ ์‚ฌ์šฉ์ž ID๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ 

 

<SETUID>

- SETUID๊ฐ€ ์„ค์ •๋œ ํŒŒ์ผ ์‹คํ–‰์‹œ, ์ผ์‹œ์ ์œผ๋กœ ํŒŒ์ผ ์†Œ์œ ์ž์˜ ๊ถŒํ•œ์„ ์–ป๊ฒŒ ๋œ๋‹ค. ์ฆ‰, ์†Œ์œ ์ž๊ฐ€ root์ธ ํŒŒ์ผ์— SetUID๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์„ ๋•Œ, ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ file์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ๊ทธ ์ˆœ๊ฐ„ ์ž ์‹œ๋™์•ˆ ํŒŒ์ผ์˜ ์†Œ์œ ์ž์ธ root์˜ ๊ถŒํ•œ์„ ๋นŒ๋ ค ์˜ค๋Š” ๊ฒƒ 

- (u+s) -> user์— SETUID ์ ์šฉ 

 

<SETGID>

SETGID๊ฐ€ ์„ค์ •๋œ ํŒŒ์ผ ์‹คํ–‰์‹œ, ํŠน์ • ์ž‘์—… ์ˆ˜ํ–‰์„ ์œ„ํ•˜์—ฌ ์ผ์‹œ์ ์œผ๋กœ ํŒŒ์ผ์˜ ๊ทธ๋ฃน ๊ถŒํ•œ์„ ์–ป๊ฒŒ ๋จ 

 

 

[์ฐธ๊ณ ] 

https://goitgo.tistory.com/13