ΠΠ»Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²: setuid(), setgid(), setgroups(). ΠΡΠΎΡ ΠΏΡΠΈΠ΅ΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π°ΡΡΠΎΡΡΠ°Ρ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠ°Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°Ρ uid (ΠΈΠ»ΠΈ gid) ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ setuid (ΠΈΠ»ΠΈ setgid), ΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΏΠΎΠΆΠ΅Π»Π°Π΅Ρ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π΄Π°Π½Π½ΡΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌ uid ΠΈΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ uid. Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π΄Π΅ΠΌΠΎΠ½Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠΈΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ root, Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΈ Π³ΡΡΠΏΠΏΠΎΠ²ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π³ΡΡΠΏΠΏΠΎΠ²ΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ²ΠΎΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² Π³Π»Π°Π²Π΅ 10.
22.2.2. ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΠΎΡΠΎΠ±ΡΡ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°, ΡΠΎ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΌΠ΅ΡΡΠΎ Π°ΠΊΡΠΈΠ²ΠΈΠ·Π°ΡΠΈΠΈ Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΡΠΌΠΈ ΠΏΡΠ°Π²Π°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ° Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, Π³Π»Π°Π²Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π·Π°ΠΏΡΡΡΠΈΠ²ΡΠΈΠΉ Π΅Π΅, Π° ΡΠ°ΠΊΠΆΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΡΠ΅Ρ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°ΠΌΠΈ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ. ΠΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ½ΠΈΠΆΠ°Π΅ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄Π²Π΅ΡΠ³Π½ΡΡΡΡΡ Π°ΡΠ°ΠΊΠ΅. ΠΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΡΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ ΠΈ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Π»ΡΠ±ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΡΠ»ΠΈ Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΠ΅ ΠΌΠ΅ΡΡΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΠΎ ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°ΠΌΠΈ. Π’Π΅ΠΌ ΡΠ°ΠΌΡΠΌ Π»ΡΠ±ΡΠ΅ Π°ΡΠ°ΠΊΠΈ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½ΠΎ Π½Π΅ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ.
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΏΡΠΈΠΎΠ±ΡΠ΅Π»ΠΎ ΡΠΈΡΠΎΠΊΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ Π² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅ Linux. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° utempter (ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΠΌΠ°Ρ Π² Π³Π»Π°Π²Π΅ 16) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ setgid-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ utmp. ΠΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΡΠ΅Π½Ρ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅Ρ, ΠΈΠΌΠ΅Π΅Ρ Π»ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ utmp. Π’Π΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΡ ΡΠ»ΡΠΆΠ±Ρ ΡΠ΅ΡΠ΅Π· Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ utempter, Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΡΠΎΠ±ΡΡ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΠΉ. ΠΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ°Ρ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ΅ΡΠΌΠΈΠ½Π°Π»Ρ, Π±ΡΠ»Π° ΠΎΠ±ΡΠ·Π°Π½Π° Π±ΡΡΡ setgid Π΄Π»Ρ ΡΠΎΠΉ Π³ΡΡΠΏΠΏΡ, ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ utmp.
ΠΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ»ΡΠΆΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° unix_chkpwd, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π ΠΠ (Pluggable Authentication Modules β ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π² Π³Π»Π°Π²Π΅ 28). ΠΠ°ΡΠΎΠ»ΠΈ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠΈΡΡΠ΅ΠΌ Linux Ρ ΡΠ°Π½ΡΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΌ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ root. ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΡΠ»ΠΎΠ²Π°ΡΠ½ΡΠ΅ Π°ΡΠ°ΠΊΠΈ Π½Π° Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ[159]. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΠΈ Π²ΠΎΠ·Π»Π΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΡΠ΅Π» Π² ΡΠΈΡΡΠ΅ΠΌΡ (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° xscreensaver ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΊΡΠ°Π½Π° Π΄ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ), Π½ΠΎ ΠΎΠ½ΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ root. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ setuid Π½Π° root, Π΄Π°Π±Ρ ΠΎΠ½ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΏΠ°ΡΠΎΠ»Ρ, ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π ΠΠ Unix Π²ΡΠ·ΡΠ²Π°Π΅Ρ unix_chkpwd Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Ρ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π±ΡΡΡ setuid Π½Π° root ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ unix_chkpwd. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ xscreensaver ΠΊΠ°ΠΊ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΡΠΏΠ°Π΄Π°Π΅Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠΎ Π²ΡΠ΅ ΡΠ»Π°Π±ΡΠ΅ ΠΌΠ΅ΡΡΠ° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ X11 Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ.
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΡΠΌΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ, Π° ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ. ΠΠ΄Π½Π°ΠΊΠΎ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΅ΡΡΡ ΠΏΠ°ΡΠ° ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΠ²ΠΈΡΡ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡ.
ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ ΠΌΠ΅ΠΆΠ΄Ρ Π³Π»Π°Π²Π½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ unix_chkpwd Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π½Π΅Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Π΅Π³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ. ΠΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠ½ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΡΠ΅Π½Ρ Π·Π°ΠΌΠ°Π½ΡΠΈΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π»ΡΠ±ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π² Π½ΡΠΆΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΡΠΈΡ ps, ΡΠ²ΠΈΠ΄Π΅ΡΡ Π½Π΅Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΏΠ°ΡΠΎΠ»ΠΈ. ΠΡΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π΄Π»Ρ ΠΏΠΎΠ΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠ°Π½Π°Π» (ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° Π΄Π»Ρ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ), ΡΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π½ΠΈ ΠΎΠ΄Π½Π° Π΄ΡΡΠ³Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π΄Π°Π½Π½ΡΠ΅.
ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡΠ°Ρ ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° unx_chkpwd Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΏΠ°ΡΠΎΠ»ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠΎΡΠΎΡΡΠΉ Π΅Π΅ Π·Π°ΠΏΡΡΡΠΈΠ». ΠΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ uid Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΡΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° utempter Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΠ΄Π°Π»ΡΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Ρ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ utmp, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ.
22.2.3. ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅
ΠΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΠΊΠΎΠ΄Π°Ρ , ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π»Ρ Π°ΡΠ°ΠΊ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π°Π±ΠΎΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΡΠΏ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° chroot(). ΠΠ°ΠΊ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΎΡΡ Π² Π³Π»Π°Π²Π΅ 14, ΠΌΠ΅ΡΠΎΠ΄ chroot(), ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠΉΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ chdir(), ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Ρ ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ. ΠΡΠΎ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΡΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΡΠ΅ΡΠ²Π΅Ρ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ ΠΊΠ°ΠΊ Π½Π΅ root, ΡΠΊΡΠΏΠ»ΡΠ°ΡΠΈΡΡΠ΅ΡΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎ, ΡΠΎ Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ΄Π½Π΅Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±Π°Π·Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ Π½ΠΈ ΠΊ ΠΊΠ°ΠΊΠΈΠΌ setuid-ΡΠ°ΠΉΠ»Π°ΠΌ (ΡΡΠΈΠΌ ΠΌΠΎΠ³ΡΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ).
ΠΠ½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ftp-ΡΠ΅ΡΠ²Π΅ΡΡ ΡΠ²Π»ΡΡΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΌΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° chroot(). Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ½ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ ΠΈ Π² Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ , ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ chroot Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΡΠ°Π±ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π΄Π΅ΠΌΠΎΠ½ΠΎΠ² Π² ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΡΠΎΠ½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ "Π½Π΅Π·Π²Π°Π½ΡΡ Π³ΠΎΡΡΠ΅ΠΉ".
22.3. ΠΠ±ΡΠΈΠ΅ Π±ΡΠ΅ΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ
ΠΠΎΡΠ»Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π΅Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΌΡΡ ΠΎΠ±ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ Π²ΡΡ ΠΎΡΡΠ°Π²ΡΠ°ΡΡΡ ΡΠ°ΡΡΡ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Ρ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΡΠ½ΡΠ΄Ρ Π½Π΅ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ. ΠΡΠ±ΠΎΠΉ Π°Π²ΡΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌΠΈ, ΠΎΠ±ΡΠ·Π°Π½ ΠΈΠ·ΡΡΠΈΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π°Π½Π½ΡΡ Π³Π»Π°Π²Ρ.
22.3.1. ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡΡΠ΅ΡΠ°
ΠΠΎΠΆΠ°Π»ΡΠΉ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΉ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡΡΠ΅ΡΠ°. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΡΠ΅ΡΠ°.
1: /* bufferoverflow.Ρ */
2:
3: #include <limits.h>
4: #include <stdio.h>
5: #include <string.h>
6:
7: int main(int argc, char ** argv) {
8: char path[_POSIX_PATH_MAX];
9:
10: printf("ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Π΄Π»ΠΈΠ½ΠΎΠΉ %d\n", strlen(argv[1]));
11:
12: strcpy(path, argv[1]);
13:
14: return 0;
15: }
16:
ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΊΠΎΠ΄ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ; Ρ ΠΎΡΡ Π² ΠΈΡΠΎΠ³Π΅ ΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π°ΠΆΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ. ΠΠ½Π° ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΡΡΡΠΎΠΊΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, Π² ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΡΡΠ΅ΠΊΠ°, Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΡ, Π΅ΡΡΡ Π»ΠΈ Π² ΡΡΠ΅ΠΊΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΎΠ΄Π½ΠΈΠΌ Π΄Π»ΠΈΠ½Π½ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ (ΡΠΊΠ°ΠΆΠ΅ΠΌ, 300 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²). ΠΡΠΎ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° strcpy() ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΏΡΠ΅Π²ΡΡΠ°ΡΡΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²Π° path.
Π§ΡΠΎΠ±Ρ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΊΠ°, Π²Π·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΡΠΈΡ. 22.1. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠΈΡΡΠ΅ΠΌ ΡΡΠ΅ΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΡΠ°ΡΡΠ΅Ρ Π²Π½ΠΈΠ·; ΡΠΎ Π΅ΡΡΡ, ΡΠ΅ΠΌ ΡΠ°Π½ΡΡΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΡΡΠ΅ΠΊΠ΅, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠΈΠΉ Π°Π΄ΡΠ΅Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΎΠ½ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ. Π ΡΠΎΠΌΡ ΠΆΠ΅ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΡΠ΅ΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ; Π»ΡΠ±Π°Ρ ΠΏΠΎΠΏΡΡΠΊΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊ Π½Π΅ΠΌΡ Π΄ΠΎΡΡΡΠΏ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.