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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Linux ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 63

Автор Роббинс ΠΡ€Π½ΠΎΠ»ΡŒΠ΄

Ѐункция

rpl_utime()
(строки 75–82) являСтся «замСститСлСм
utime()
Β». Если Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π½Π΅ Ρ€Π°Π²Π΅Π½
NULL
, ΠΎΠ½Π° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π°ΡΡ‚ΠΎΡΡ‰ΡƒΡŽ
utime()
. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½Π° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚
utime_null()
.

5.5.4. ИспользованиС

fchown()
ΠΈ
fchmod()
для обСспСчСния бСзопасности

Π’ исходных систСмах Unix Π±Ρ‹Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹

chown()
ΠΈ
chmod()
. Однако, Π½Π° сильно Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… систСмах эти систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² условия состязания, посрСдством Ρ‡Π΅Π³ΠΎ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ Ρ„Π°ΠΉΠ»Π°, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ измСняСтся Π²Π»Π°Π΄Π΅Π»Π΅Ρ† ΠΈΠ»ΠΈ ΠΏΡ€Π°Π²Π° доступа.

Однако, послС открытия Ρ„Π°ΠΉΠ»Π° условиС состязания большС Π½Π΅ прСдставляСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

stat()
с ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π° для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ„Π°ΠΉΠ»Π΅. Если ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ свСдСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ оТидались, послС открытия Ρ„Π°ΠΉΠ»Π°
fstat()
ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый (сравнив поля
st_dev
ΠΈ
st_ino
структур
struct stat
«до» и «послС»).

Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚Π΅ ΠΆΠ΅ самыС, Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΡ€Π°Π²Π° доступа ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ

fchown()
ΠΈΠ»ΠΈ
fchmod()
.

Π­Ρ‚ΠΈ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹, Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ

lchown()
, ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅Π΄Π°Π²Π½ΠΈΠ΅; [63] Π² старых систСмах Unix ΠΈΡ… Π½Π΅ Π±Ρ‹Π»ΠΎ, хотя Π² соврСмСнных совмСстимых с POSIX систСмах ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ.

Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

futime()
ΠΈΠ»ΠΈ
lutime()
Π½Π΅Ρ‚. Π’ случаС
futime()
это (ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ) ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ критичСскими для бСзопасности систСмы Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎ для владСния ΠΈ ΠΏΡ€Π°Π² доступа,
lutime()
отсутствуСт ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ нСумСстны для символичСских ссылок.

5.6. РСзюмС

β€’Β Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², ΠΊΠ°ΠΊ ΠΎΠ½Π° видится ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, являСтся ΠΎΠ΄Π½ΠΈΠΌ логичСским Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ, ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ находится Π²

/
. Оно составлСно ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТит Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы Π² индСксах хранятся Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ„Π°ΠΉΠ»Π°Ρ… (ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅), Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ….

β€’Β ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ связь ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ индСксами. ΠšΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ содСрТимоС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся просто ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ°Ρ€ (индСкс, имя). ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° для Ρ„Π°ΠΉΠ»Π° называСтся (прямой) ссылкой, Π° Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ мноТСство ссылок. ΠŸΡ€ΡΠΌΡ‹Π΅ ссылки, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ лишь ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ индСкса, всС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС. БимволичСскиС ссылки ΡΠ²Π»ΡΡŽΡ‚ΡΡ указатСлями Π½Π° Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° основС ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°, Π° Π½Π΅ Π½ΠΎΠΌΠ΅Ρ€Π° индСкса, поэтому ΠΈΡ… использованиС Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой.

β€’Β ΠŸΡ€ΡΠΌΡ‹Π΅ ссылки ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ

link()
, символичСскиС ссылки ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ
symlink()
, ссылки ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ
unlink()
, Π° ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Ρ‹ (с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ
rename()
. Π‘Π»ΠΎΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π° Π½Π΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° счСтчик ссылок Π½Π΅ достигнСт нуля ΠΈ Π½Π΅ закроСтся послСдний ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ дСскриптор Ρ„Π°ΠΉΠ»Π°.

β€’Β ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ

mkdir()
, Π° ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ
rmdir()
; ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ пустым (Π½Π΅ оставлСно Π½ΠΈΡ‡Π΅Π³ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ '
.
' ΠΈ '
..
'). GNU/Linux вСрсия Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ISO Π‘
remove()
Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
unlink()
ΠΈΠ»ΠΈ
rmdir()
.

β€’Β ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

opendir()
,
readdir()
,
rewinddir()
ΠΈ
closedir()
.
struct dirent
содСрТит Π½ΠΎΠΌΠ΅Ρ€ индСкса ΠΈ имя Ρ„Π°ΠΉΠ»Π°. Максимально пСрСносимый ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π² Ρ‡Π»Π΅Π½Π΅
d_name
Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя Ρ„Π°ΠΉΠ»Π°. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ BSD
telldir()
ΠΈ
seekdir()
для сохранСния ΠΈ восстановлСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ полоТСния Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ доступны, Π½ΠΎ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ пСрСносимы, ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌΠΈ.

β€’Β Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сСмСйства систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²

stat()
, структура
struct stat
содСрТит всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ„Π°ΠΉΠ»Π΅ Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°. (Π’ самом Π΄Π΅Π»Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ Ρ„Π°ΠΉΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ мноТСство ΠΈΠΌΠ΅Π½ ΠΈΠ»ΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ совсСм Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ ссылок, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ имя доступным.)

β€’Β ΠœΠ°ΠΊΡ€ΠΎΡ

S_IS<i>xxx</i>()
Π²
&lt;sys/stat.h&gt;
Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»Π°. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ
major()
ΠΈ
minor()
ΠΈΠ·
&lt;sys/sysmacros.h&gt;
Π΄Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
dev_t
, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Π±Π»ΠΎΡ‡Π½Ρ‹Π΅ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ устройства.

‒ БимволичСскиС ссылки ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, использовав

lstat()
, Π° ΠΏΠΎΠ»Π΅
st_size
структуры
struct stat
для символичСской ссылки Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ число Π±Π°ΠΉΡ‚ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для размСщСния ΠΈΠΌΠ΅Π½ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ символичСской ссылки Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ
readlink()
. НуТно ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±ΡƒΡ„Π΅Ρ€Π° Π±Ρ‹Π» ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ имя Ρ„Π°ΠΉΠ»Π° Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ Π±Π°ΠΉΡ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС строки Π‘.

β€’Β ΠΠ΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅: сСмСйство

chown()
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для смСны Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹
chmod()
для ΠΏΡ€Π°Π² доступа ΠΊ Ρ„Π°ΠΉΠ»Ρƒ, a
utime()
для измСнСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ доступа ΠΈ измСнСния Ρ„Π°ΠΉΠ»Π°.

УпраТнСния

1.Β ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ '

const char *fmt_mode(mode_t mode)
'. Π’Π²ΠΎΠ΄ прСдставляСт собой Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
mode_t
, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΈΠ· поля
st_mode
структуры
struct stat
; Ρ‚.Π΅. ΠΎΠ½ΠΎ содСрТит ΠΊΠ°ΠΊ Π±ΠΈΡ‚Ρ‹ ΠΏΡ€Π°Π² доступа, Ρ‚Π°ΠΊ ΠΈ Ρ‚ΠΈΠΏΠ° Ρ„Π°ΠΉΠ»Π°.

Π’Ρ‹Π²ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ строку Π² 10 символов, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ полю Π²Ρ‹Π²ΠΎΠ΄Π° '

ls -l
'. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»Π°, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π΅Π²ΡΡ‚ΡŒ β€” ΠΏΡ€Π°Π²Π° доступа.

Когда установлСны Π±ΠΈΡ‚Ρ‹

S_ISUID
ΠΈ
S_IXUSR
, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅
s
вмСсто
x
; Ссли установлСн лишь Π±ΠΈΡ‚
I_ISUID
, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅
S
. Π’ΠΎ ΠΆΠ΅ относится ΠΊ Π±ΠΈΡ‚Π°ΠΌ
S_ISGID
ΠΈ
S_IXGRP
. Если установлСны ΠΎΠ±Π° Π±ΠΈΡ‚Π°
S_ISVTX
ΠΈ
S_IXOTH
, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅
t
; для одного
S_ISVTX
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅
T
.