<ν΄νΉ: 곡격μ μμ > 3νμ°¨ μ€ν°λ
<ν΄νΉ: 곡격μ μμ > μ± μ λ³΄κ³ κ³΅λΆν λ΄μ©μ λλ€
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κ° μ€μ λ νμΌ μ€νμ, νΉμ μμ μνμ μνμ¬ μΌμμ μΌλ‘ νμΌμ κ·Έλ£Ή κΆνμ μ»κ² λ¨
[μ°Έκ³ ]