Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² срСдС Linux. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 120

Автор Майкл ДТонсон

Π•Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ опасной являСтся Π°Ρ‚Π°ΠΊΠ°, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ символичСскиС ссылки ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° собствСнный Ρ„Π°ΠΉΠ» Π²Π·Π»ΠΎΠΌΡ‰ΠΈΠΊΠ° (ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° Π² /tmp ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ со всСми Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ). ΠŸΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Ρ„Π°ΠΉΠ» искаТаСтся, Π½ΠΎ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ Ρ„Π°ΠΉΠ»Π° ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ всС Π΅Ρ‰Π΅ Π²Π»Π°Π΄Π΅Π΅Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠΌ) ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π½Π΅Π³ΠΎ всС, Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ (Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ строки Ρ‚ΠΈΠΏΠ° chmod u+s /bin/sh ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ Π² основном сцСнарии, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ ΠΊΠ°ΠΊ root!). ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹ΠΌ Ρ‚ΠΎΡ‡Π½ΠΎ ΡƒΠ³Π°Π΄Π°Ρ‚ΡŒ врСмя, ΠΎΠ΄Π½Π°ΠΊΠΎ, Ρ€Π΅ΠΆΠΈΠΌΡ‹ состязаний Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° часто ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, подвСргая риску Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±Ρ‹Π»Π° setuid, Π° Π½Π΅ запущСнная ΠΊΠ°ΠΊ root, Ρ‚ΠΎ эксплуатация фактичСски становится Π΅Ρ‰Π΅ Π»Π΅Π³Ρ‡Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ SIGSTOP Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ сразу послС открытия Ρ„Π°ΠΉΠ»Π°, Π° Π·Π°Ρ‚Π΅ΠΌ послС эксплуатации этого Ρ€Π΅ΠΆΠΈΠΌΠ° состязаний ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ SIGCONT.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ O_EXCL Π² Π²Ρ‹Π·ΠΎΠ² open() ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ open() ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся символичСской ссылкой, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ». Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ простой Π°Ρ‚Π°ΠΊΠΈ ΠΎΡ‚ΠΊΠ°Π·Π° Π² обслуТивании, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠ΄ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ ΠΈΠ· строя, Ссли ΠΏΠ΅Ρ€Π²ΠΎΠ΅ испробованноС имя Ρ„Π°ΠΉΠ»Π° ΡƒΠΆΠ΅ сущСствуСт. Π­Ρ‚ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ, размСстив open() Π² Ρ†ΠΈΠΊΠ»Π΅, ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚.

Π‘Π°ΠΌΡ‹ΠΌ Π»ΡƒΡ‡ΡˆΠΈΠΌ способом создания Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² являСтся ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mkstemp() интСрфСйса POSIX, которая Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» создаСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ[164].

int mkstemp(char * template);

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ template β€” это имя Ρ„Π°ΠΉΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ послСдниС ΡˆΠ΅ΡΡ‚ΡŒ символов Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ "XXXXXX". ПослСдняя Ρ‡Π°ΡΡ‚ΡŒ замСняСтся Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° ΡΡ‚Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π² Π΄Π°Π½Π½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mkstemp() Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ template обновляСтся Ρ‚Π΅ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ использовалось (позволяя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»), Ρ‚Π°ΠΊΠΆΠ΅ возвращаСтся Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ дСскриптор, ΡΡΡ‹Π»Π°ΡŽΡ‰ΠΈΠΉΡΡ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». Если функция ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ, возвращаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -1.

Π’ Π±ΠΎΠ»Π΅Π΅ старых вСрсиях Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π‘ систСмы Linux создавался Ρ„Π°ΠΉΠ» с Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ 0666 (общСдоступноС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅/запись) ΠΈ Π² зависимости ΠΎΡ‚ umask ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°Π»ΠΈΡΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π°Π²Π° Π½Π° Ρ„Π°ΠΉΠ». Π’ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Ρ… вСрсиях Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² Ρ„Π°ΠΉΠ» Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, Π½ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ POSIX Π½Π΅ опрСдСляСт Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ явно ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ umask процСсса (077 β€” Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€!) Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° mkstemp().

БистСма Linux ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ mkdtemp() для создания Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ².

char * mkdtemp(char * template);

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ template Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ для mkstemp(), Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° template ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ NULL Π² случаС Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ.

МногиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ mkdtemp(), Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ mktemp, которая позволяСт основным сцСнариям ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π² бСзопасном Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Π‘ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ связана Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, которая Π½Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»Π°ΡΡŒ Π΄ΠΎ сих ΠΏΠΎΡ€. Они содСрТат Ρ€Π΅ΠΆΠΈΠΌΡ‹ состязаний, добавляСмыС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ постоянно хранятся Π² сСтСвых (особСнно NFS) Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСмах, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ рСгулярно ΡƒΠ΄Π°Π»ΡΡŽΡ‚ старыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· этих ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ². ΠŸΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² послС ΠΈΡ… создания слСдуСт ΠΏΡ€ΠΎΡΠ²Π»ΡΡ‚ΡŒ ΠΊΡ€Π°ΠΉΠ½ΡŽΡŽ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС этих ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, связанных с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΠΊΠ½ΠΈΠ³Π΅ Π”Π°Π²ΠΈΠ΄Π° Π’ΠΈΠ»Π΅Ρ€Π° Secure Programming for Linux and UNIX HOW TO (http://www.dwheeler.com/secure-programs/). Если Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ², Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π»ΡƒΡ‡ΡˆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² домашнСм ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

22.3.6. Π Π΅ΠΆΠΈΠΌΡ‹ состязаний ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ сигналов

Всякий Ρ€Π°Π· ΠΊΠΎΠ³Π΄Π° Π²Π·Π»ΠΎΠΌΡ‰ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ вСсти сСбя Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, появляСтся ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΉ эксплуатации. Ошибки, каТущиСся Π±Π΅Π·ΠΎΠ±ΠΈΠ΄Π½Ρ‹ΠΌΠΈ, Π²Ρ€ΠΎΠ΄Π΅ Π΄Π²ΡƒΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ освобоТдСния ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠΎΡ€Ρ†ΠΈΠΈ памяти ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ использовались Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌΠΈ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ Ρ€Π°Π· ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Π Π΅ΠΆΠΈΠΌΡ‹ состязаний ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ сигналов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ возникновСния Ρ€Π΅ΠΆΠΈΠΌΠ° состязаний, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‰Π΅Π΄Ρ€Ρ‹ΠΌ источником ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ошибок. Π‘Π°ΠΌΡ‹Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ ошибки ΠΏΡ€ΠΈ написании ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² сигналов описаны Π½ΠΈΠΆΠ΅.

β€’ Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ динамичСского распрСдСлСния памяти. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ распрСдСлСния памяти Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π΅Π΅Π½Ρ‚Π΅Ρ€Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… сигналов.

β€’ ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΡ€ΠΎΠΌΠ΅ пСрСчислСнных Π² Ρ‚Π°Π±Π». 12.2, всСгда ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкС. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ printf(), ΠΈΠ· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° сигналов, содСрТат Ρ€Π΅ΠΆΠΈΠΌΡ‹ состязаний, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ printf() ΠΈΠΌΠ΅Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€Ρ‹ ΠΈ Π½Π΅ являСтся Ρ€Π΅Π΅Π½Ρ‚Π΅Ρ€Π°Π±Π΅Π»ΡŒΠ½ΠΎΠΉ.

β€’ ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… сигналов. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² сигналов Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π΅Π΅Π½Ρ‚Π΅Ρ€Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ, довольно часто Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ…, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… нСсколькими сигналами, Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ автоматичСски ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ сигналы. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ sigaction() ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ (Ссли программист ΡΡ‚Π°Ρ€Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ).

β€’ ΠΠ΅Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сигналов Π² Ρ‚Π΅Ρ… областях ΠΊΠΎΠ΄Π°, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ сигналов Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ доступ. (Π’Π°ΠΊΠΈΠ΅ Π·ΠΎΠ½Ρ‹ часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ критичСскими областями.)

Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Ρ€Π΅ΠΆΠΈΠΌΡ‹ состязаний, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹Π΅ сигналами, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ опасными, сСтСвыС ΠΊΠΎΠ΄Ρ‹, setuid- ΠΈ setgid-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сигналы, посылаСмыС Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° экстрСнных Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ SIGURG, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ setuid- ΠΈ setgid-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ сигналы ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт ΠΈΡ…, ΠΏΡ€ΠΈ этом фактичСскиС ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹Ρ… процСссов Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ. Π”Π°ΠΆΠ΅ Ссли эти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ свои Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° для прСдупрСТдСния ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сигналов, ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° всС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ этот Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‚ SIGHUP.

22.3.7. Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… дСскрипторов

Π’ систСмах Linux ΠΈ Unix Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ дСскрипторы, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ exec() (ΠΈ всСгда Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· fork() ΠΈ vfork()). Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ stdin, stdout ΠΈ stderr. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, запускаСмыС ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ процСссом, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ доступа ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Ρ‡Π΅Ρ€Π΅Π· унаслСдованный Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ дСскриптор. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π»ΠΈ всС Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ дСскрипторы, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ новая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Ссли ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ ΠΈΡ…. Одним ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² закрытия Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… дСскрипторов являСтся Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ всСх Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… дСскрипторов Π²ΡΠ»Π΅ΠΏΡƒΡŽ ΠΈΠ· дСскриптора Π½ΠΎΠΌΠ΅Ρ€ 3 (Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слСдуСт сразу Π·Π° stderr) ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ большим Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ (скаТСм, 100 ΠΈΠ»ΠΈ 1024)[165]. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ это обСспСчиваСт Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ всСх Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… дСскрипторов[166].

НаиболСС ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ способом являСтся установка Ρ„Π»Π°Π³Π° закрытия послС выполнСния для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° оставляСт ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ Π½Π° Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ сокСты ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ устройства), Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ Π½ΠΎΠ²Ρ‹ΠΌΠΈ запускаСмыми ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ. ОписаниС Ρ„Π»Π°Π³Π° закрытия послС выполнСния ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π³Π»Π°Π²Π΅ 11.

22.4. Запуск Π² качСствС Π΄Π΅ΠΌΠΎΠ½Π°

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, создаваСмых для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² качСствС систСмных Π΄Π΅ΠΌΠΎΠ½ΠΎΠ², Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡ… становлСниС ΠΊΠ°ΠΊ Π΄Π΅ΠΌΠΎΠ½ΠΎΠ² для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ опрСдСлСния всСх Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Ρ‚Π΅Ρ… ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.

1. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ дСйствий ΠΏΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Ρ‹ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° становится фактичСским Π΄Π΅ΠΌΠΎΠ½ΠΎΠΌ. Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€ΠΈ запускС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. Π­Ρ‚ΠΎΡ‚ Π²ΠΈΠ΄ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ сокСтов.

2. Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ подходящий. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π»Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Если Π΄Π΅ΠΌΠΎΠ½ этого Π½Π΅ сдСлаСт, Ρ‚ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½ΠΎ это Π½Π΅ позволяСт ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ Π±Ρ‹Π» Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ остаСтся Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Если это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‚ΠΎ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ chroot() Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΈΡΡŒ Ρ€Π°Π½Π΅Π΅ Π² этой Π³Π»Π°Π²Π΅.