drwxr-xr-x 2 arnold devel 4096 Oct 16 17:40 d1 /* ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ID Π³ΡΡΠΏΠΏΡΒ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΡΡΡ */$ <b>chgrp arnold d1</b> /* Π‘ΠΌΠ΅Π½ΠΈΡΡ Π³ΡΡΠΏΠΏΡ */$ <b>chmod g+s d1</b> /* ΠΠΎΠ±Π°Π²ΠΈΡΡ Π±ΠΈΡ setgid */$ <b>ls -ld d1</b> /* ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ */drwxr-sr-x 2 arnold arnold 4096 Oct 16 17:40 d1$ <b>cd d1</b> /* ΠΠ΅ΡΠ΅ΠΉΡΠΈ Π² Π½Π΅Π³ΠΎ */$ <b>echo this should have group arnold on it > f1</b> /* ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» */$ <b>ls -l f1</b> /* ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ° */-rw-r--r-- 1 arnold arnold 36 Oct 16 17:41 f1Β /* Π£Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΎ ΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ */$ <b>mkdir d2</b> /* Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ */$ <b>ls -ld d2</b> /* ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ° */drwxr-sr-x 2 arnold arnold 4096 Oct 16 17:51 d2Β /* ΠΡΡΠΏΠΏΠ° ΠΈ setgid ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Ρ */Π€Π°ΠΉΠ»ΠΎΠ²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ
ext2ext3grpidbsdgroupsΠΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΠΎΠΏΡΠΈΡΠΌΠΈ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ
nogrpidsysvgroupsPOSIX ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ, ΡΡΠΎ Π½ΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ Π»ΠΈΠ±ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ GID ΡΠΎΠ·Π΄Π°ΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, Π»ΠΈΠ±ΠΎ Π³ΡΡΠΏΠΏΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π³ΡΡΠΏΠΏΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΡΠ°Π½Π΄Π°ΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΠΏΠΎΠ»Π°Π³Π°Π»ΠΈΡΡ Π½Π° ΡΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π½ΠΎ Π² ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ
chown()11.5.2. ΠΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΠΈ Β«Π»ΠΈΠΏΠΊΠΈΠΉΒ» Π±ΠΈΡ
Β«Π¨Π΅ΡΠΌΠ°Π½, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΌΠ°ΡΠΈΠ½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄Π»Ρ 1976 Π³.Β»
Β«ΠΠΈΠΏΠΊΠΈΠΉΒ» Π±ΠΈΡ Π²Π΅Π΄Π΅Ρ Π½Π°ΡΠ°Π»ΠΎ ΠΎΡ Π²Π΅ΡΡΠΈΠΉ Unix Π΄Π»Ρ PDP-11, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ [119]. ΠΡΠΎΡ Π±ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ°Π»ΠΈΡΡ Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠΌΠΈ, ΠΊΠ°ΠΊ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ. ΠΠΎΠ³Π΄Π° Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ» ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΡΡΠΎΡ Π±ΠΈΡ, ΡΠ΄ΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΎ ΠΊΠΎΠΏΠΈΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ ΠΏΠΎΠ΄ΠΊΠ°ΡΠΊΠΈ, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±ΡΡΡΡΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π² ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. (ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡΠ°Π· Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ ΠΏΠΎΠ΄ΠΊΠ°ΡΠΊΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΡΡ Π² ΡΠΌΠ΅ΠΆΠ½ΡΡ Π΄ΠΈΡΠΊΠΎΠ²ΡΡ Π±Π»ΠΎΠΊΠ°Ρ , ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°Π· Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΌΠΎΠ³ Π±ΡΡΡ ΡΠ°Π·Π±ΡΠΎΡΠ°Π½ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ Π΄ΠΈΡΠΊΡ). ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ°Π·Ρ Π±ΡΠ»ΠΈ Β«ΠΏΡΠΈΠΊΠ»Π΅Π΅Π½ΡΒ» ΠΊ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ ΠΏΠΎΠ΄ΠΊΠ°ΡΠΊΠΈ, ΠΎΡΡΡΠ΄Π° ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡ, ΡΡΠΎ ΠΎΠ½Π° Π²ΡΠΊΠΎΡΠ΅ ΠΌΠΎΠ³Π»Π° Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½Π° ΠΌΠΎΠ³Π»Π° Π±ΡΡΡ Π±ΡΡΡΡΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½Π°.
Π ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΡΠ΅ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΅ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠ°ΠΌΡΡΡ, ΡΠ΅ΠΌ Π² Π΄Π°Π²Π½ΠΈΡΠ½Π΅ΠΉ PDP-11. ΠΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΡ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΠΏΠΎΠ΄ΠΊΠ°ΡΠΊΠ° ΠΏΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ, Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π² ΠΏΠ°ΠΌΡΡΡ Π»ΠΈΡΡ ΡΠ΅Ρ ΡΠ°ΡΡΠ΅ΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ΅Π³ΠΎΠ΄Π½Ρ Β«Π»ΠΈΠΏΠΊΠΈΠΉΒ» Π±ΠΈΡ ΠΎΠ±ΡΡΠ½ΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π΅ ΡΠ»ΡΠΆΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΈΠΌ ΡΠ΅Π»ΡΠΌ ΠΈ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½ΠΈ Π½Π° ΡΡΠΎ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ.
ΠΠ΄Π½Π°ΠΊΠΎ, Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 1.1.2 Β«ΠΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΠΈ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Β» ΠΌΡ ΡΠΏΠΎΠΌΡΠ½ΡΠ»ΠΈ, ΡΡΠΎ Β«Π»ΠΈΠΏΠΊΠΈΠΉΒ» Π±ΠΈΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, Π·Π°ΠΏΠΈΡΡ Π² ΠΊΠΎΡΠΎΡΡΠΉ Π² Π΄ΡΡΠ³ΠΈΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π°, ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΈ ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΡΠ±ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, ΠΊΡΠΎΠΌΠ΅ Π²Π»Π°Π΄Π΅Π»ΡΡΠ° ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ
root$ <b>ls -ld /tmp</b> /* ΠΠΎΠΊΠ°Π·Π°ΡΡ ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ /tmp */drwxrwxrwt 19 root root 4096 Oct 20 14:04 /tmp$ <b>cd /tmp</b> /* ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΡΡΠ΄Π° */$ <b>echo this is my file > arnolds-file</b> /* Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ» */$ <b>ls -l arnolds-file</b> /* ΠΠΎΠΊΠ°Π·Π°ΡΡ Π΅Π³ΠΎ ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ° */-rw-r--r-- 1 arnold devel 16 Oct 20 14:14 arnolds-file$ <b>su - miriam</b> /* Π‘ΠΌΠ΅Π½Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ */Password:$ <b>cd /tmp</b> /* ΠΠ΅ΡΠ΅ΠΉΡΠΈ Π² /tmp */$ <b>rm arnolds-file</b> /* ΠΠΎΠΏΡΡΠΊΠ° ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° */rm: remove write-protected regular file 'arnolds-file'? yΒ /* rm ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Π΅Ρ */rm: cannot remove 'arnolds-file': Operation not permittedΒ /* Π―Π΄ΡΠΎ Π·Π°ΠΏΡΠ΅ΡΠ°Π΅Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ */ΠΡΠ½ΠΎΠ²Π½ΡΠΌ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ°Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Ρ , ΠΊΠ°ΠΊ
/tmpchmod +t$ <b>mkdir mytmp</b> /* Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ */$ <b>chmod a+wxt mytmp</b> /* ΠΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠ°Π²Π° Π·Π°ΠΏΠΈΡΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΈ Β«Π»ΠΈΠΏΠΊΠΈΠΉΒ» Π±ΠΈΡ */$ <b>ls -ld mytmp</b> /* ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ */drwxrwxrwt 2 arnold devel 4096 Oct 20 14:23 mytmpΠ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²Π»Π°Π΄Π΅Π»Π΅Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ Π΅ΠΌΡ.
11.6. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ID
ΠΡΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π΅Π΅, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΌΠ΅Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ UID ΠΈ GID. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π½Π°Π±ΠΎΡΠ° Π³ΡΡΠΏΠΏ ΠΏΡΠΎΡΡΠ°. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ UID ΠΈ GID ΡΠ»ΠΎΠΆΠ½Π΅Π΅.
11.6.1. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π°Π±ΠΎΡΠ° Π³ΡΡΠΏΠΏ
Π€ΡΠ½ΠΊΡΠΈΡ
setgroups()#include <sys/types.h> /* Common */#include <unistd.h>