Π‘ΡΠΊΠΎΠ½ΠΎΠΌΡŒΡ‚Π΅ 15% Π½Π° всСх хостинговых услугах

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ свои Π½Π°Π²Ρ‹ΠΊΠΈ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ скидку Π½Π° любой Ρ‚Π°Ρ€ΠΈΡ„Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄: Skills ΠΠ°Ρ‡Π°Ρ‚ΡŒ
Π ΡƒΠ±Ρ€ΠΈΠΊΠΈ
Linux

Руководство ΠΏΠΎ дирСкториям Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Linux: ΠŸΠΎΠ»Π½Ρ‹ΠΉ тСхничСский справочник

Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Linux β€” это стандартизированныС располоТСния Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, Π³Π΄Π΅ находятся исполняСмыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, инструмСнты систСмного администрирования ΠΈ раздСляСмыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы (FHS) опрСдСляСт эти ΠΏΡƒΡ‚ΠΈ для обСспСчСния Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠ³ΠΎ размСщСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… дистрибутивах, Ρ‡Ρ‚ΠΎ позволяСт прСдсказуСмо Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ `PATH`, ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ систСму β€” Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° нСсущСствСнныС Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы нСдоступны.

Для любого администратора, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ срСдой VPS Π₯остинга ΠΈΠ»ΠΈ физичСским сСрвСром, Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ Π·Π½Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π³Π΄Π΅ находится β€” ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ β€” являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π­Ρ‚ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ влияСт Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ, ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ развёртывания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈ усилСниС бСзопасности.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΆΠ½Π° структура Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ дирСкториям, стоит ΠΏΠΎΠ½ΡΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ, Π»Π΅ΠΆΠ°Ρ‰ΡƒΡŽ Π² основС ΠΈΡ… раздСлСния. FHS Π΄Π΅Π»ΠΈΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму Π½Π° Π΄Π²Π° Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… измСрСния:

  • БущСствСнныС ΠΈ нСсущСствСнныС: Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для ΠΎΠ΄Π½ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΈ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ восстановлСния, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ доступны Π΄ΠΎ монтирования `/usr`. Всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² `/usr`.
  • БистСмный ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ: Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для администрирования Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ root, ΠΎΡ‚Π΄Π΅Π»Π΅Π½Ρ‹ ΠΎΡ‚ Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ доступны Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ, Ρ‡Ρ‚ΠΎ обСспСчиваСт Π±ΠΎΠ»Π΅Π΅ строгий ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ доступа Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€Π°Π²Π° доступа ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС.

Π­Ρ‚Π° философия проСктирования ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ соврСмСнным систСмам ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½ΠΎ остаётся ΠΊΡ€Π°ΠΉΠ½Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ настроСнный `PATH`, Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΏΠΎΠΌΠ΅Ρ‰Ρ‘Π½Π½Ρ‹ΠΉ Π½Π΅ Π² Ρ‚Ρƒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ, ΠΈΠ»ΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ символичСская ссылка Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, задания cron ΠΈΠ»ΠΈ скрипты запуска слуТб.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ: ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€

ДирСкторияНазначСниСВрСбуСт root?Доступна Π΄ΠΎ монтирования `/usr`?УправляСтся
`/bin`ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ файлыНСтДа (ΠΈΠ»ΠΈ символичСская ссылка)ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
`/sbin`ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ систСмныС Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹Π”Π°Π”Π° (ΠΈΠ»ΠΈ символичСская ссылка)ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
`/usr/bin`Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ΠΠ΅Ρ‚ΠΠ΅Ρ‚ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
`/usr/sbin`НСсущСствСнныС систСмныС Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹Π”Π°ΠΠ΅Ρ‚ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
`/usr/local/bin`Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎ установлСнныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ файлыНСтНСтАдминистратором
`/usr/local/sbin`Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎ установлСнныС систСмныС Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ файлыДаНСтАдминистратором
`/opt`БамодостаточноС стороннСС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниСЗависит ΠΎΡ‚ ситуацииНСтВСндором/Администратором
`/lib`, `/usr/lib`РаздСляСмыС библиотСкиН/ΠŸΠ—Π°Π²ΠΈΡΠΈΡ‚ ΠΎΡ‚ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΠΈΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

/bin β€” ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹

`/bin` содСрТит ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ систСмы ΠΈ выполнСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈΠ»ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ΅ восстановлСния. Π­Ρ‚ΠΈ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ доступны Π΄Π°ΠΆΠ΅ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° смонтирована Ρ‚ΠΎΠ»ΡŒΠΊΠΎ корнСвая файловая систСма.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: `ls`, `cp`, `mv`, `cat`, `bash`, `echo`, `grep`, `chmod`, `ln`, `mkdir`, `rm`, `ps`

ВаТная тСхничСская Π΄Π΅Ρ‚Π°Π»ΡŒ: Π’ дистрибутивах Π½Π° основС systemd β€” Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Debian 10+, Ubuntu 20.04+, Fedora, Arch Linux ΠΈ RHEL 8+ β€” `/bin` Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ являСтся символичСской ссылкой, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Π½Π° `/usr/bin`. Π­Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Ρ‹ UsrMerge, которая ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ уровня с ΠΈΡ… Π°Π½Π°Π»ΠΎΠ³Π°ΠΌΠΈ Π² `/usr` для упрощСния проСктирования initramfs ΠΈ обСспСчСния Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹Ρ… ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ОБ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ это Π½Π° любой ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½ΠΎΠΉ систСмС:

β€œ`bash

ls -la /bin

lrwxrwxrwx 1 root root 7 /bin -> usr/bin

β€œ`

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ слСдствиС: Если Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ shell-скрипты, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для запуска Π² срСдС восстановлСния ΠΈΠ»ΠΈ Π½Π° Ρ€Π°Π½Π½ΠΈΡ… этапах Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, скрипты initramfs), Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ `/usr/bin` доступСн. ВсСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `/bin/sh` Π² качСствС shebang ΠΈ ΡΡΡ‹Π»Π°ΠΉΡ‚Π΅ΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, прСдусмотрСнныС стандартом POSIX.

/sbin β€” ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ систСмныС Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹

`/sbin` содСрТит Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ для Π·Π°Π΄Π°Ρ‡ систСмного администрирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π²ΠΎ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ восстановлСния Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ станСт доступно ΠΏΠΎΠ»Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: `fsck`, `ifconfig`, `ip`, `reboot`, `shutdown`, `mkfs`, `mount`, `umount`, `fdisk`, `modprobe`, `init`

Нюанс ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ: Π₯отя Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² `/sbin` *ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹* для использования root, Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ дистрибутивов ΠΎΠ½ΠΈ доступны для выполнСния всСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ обСспСчиваСтся самими опСрациями β€” `fsck` Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ прямого доступа ΠΊ устройству, `mount` Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ `CAP_SYS_ADMIN` β€” Π° Π½Π΅ Π±ΠΈΡ‚ΠΎΠΌ выполнСния Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Π­Ρ‚ΠΎ распространённый источник ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΠ² бСзопасности.

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ статус: Как ΠΈ `/bin`, Π½Π° систСмах с ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹ΠΌ usr `/sbin` являСтся символичСской ссылкой Π½Π° `/usr/sbin`. Π Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ `/sbin` ΠΈ `/bin` Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ носит прСимущСствСнно сСмантичСский ΠΈ историчСский, Π° Π½Π΅ структурный Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€.

/usr/bin β€” Основной Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²

`/usr/bin` β€” это наибольшая ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ бинарная дирСктория Π² Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠΉ установкС Linux. Она содСрТит всС стандартныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈ прилоТСния, установлСнныС Ρ‡Π΅Ρ€Π΅Π· систСмный ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ для Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: `vim`, `nano`, `git`, `python3`, `perl`, `gcc`, `curl`, `wget`, `ssh`, `tar`, `gzip`, `awk`, `sed`, `find`

ΠœΠ°ΡΡˆΡ‚Π°Π± Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅: ΠŸΡ€ΠΈ минимальной установкС сСрвСра Debian `/usr/bin` ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ 200–400 Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΡ€ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ установкС срСды Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола это число ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ‹ΡΠΈΡ‚ΡŒ 2 000. Π­Ρ‚Π° дирСктория всСгда присутствуСт Π² стандартном `PATH` для всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²: ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» здСсь отслСТиваСтся `dpkg`, `rpm` ΠΈΠ»ΠΈ эквивалСнтом вашСго дистрибутива. Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π² `/usr/bin` Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ рСкомСндуСтся β€” обновлСния ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡ… Π±Π΅Π· прСдупрСТдСния.

/usr/sbin β€” НСсущСствСнныС Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ систСмного администрирования

`/usr/sbin` содСрТит инструмСнты систСмного администрирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π² процСссС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ восстановлСнии Π² ΠΎΠ΄Π½ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для повсСднСвного управлСния сСрвСром.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: `apache2`, `nginx`, `sshd`, `useradd`, `userdel`, `usermod`, `groupadd`, `iptables`, `nftables`, `cron`, `logrotate`, `tcpdump`

АрхитСктурный аспСкт: Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ `/sbin` ΠΈ `/usr/sbin` ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ систСмный администратор ΠΌΠΎΠ³ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ€Π΅ΠΆΠΈΠΌ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ восстановлСниС Π±Π΅Π· нСобходимости ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ `/usr`. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π² соврСмСнных систСмах с initramfs ΠΈ Ρ€Π°Π½Π½ΠΈΠΌ пространством ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ это Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ ΡƒΡ‚Ρ€Π°Ρ‚ΠΈΠ»ΠΎ смысл. Однако Π΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ остаётся Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со старыми систСмами RHEL 6/CentOS 6 ΠΈΠ»ΠΈ встроСнными срСдами Linux, Π³Π΄Π΅ `/usr` ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ.

/usr/local/bin β€” ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, установлСнныС администратором

`/usr/local/bin` β€” это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ располоТСниС для Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², установлСнных Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ β€” Π² ΠΎΠ±Ρ…ΠΎΠ΄ систСмного ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² β€” ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ доступны всСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ систСмы.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования:

  • ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, скомпилированноС ΠΈΠ· исходного ΠΊΠΎΠ΄Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ сборка `nginx` с нСстандартными модулями)
  • Python-скрипты, установлСнныС Ρ‡Π΅Ρ€Π΅Π· `pip install –prefix=/usr/local`
  • Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠ΅ CLI-инструмСнты, распространяСмыС ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, `kubectl`, `helm`, `terraform`, `hugo`)
  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ скрипты Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ доступны Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ всСй систСмы

ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π² PATH: Π’ стандартной FHS-совмСстимой систСмС `/usr/local/bin` появляСтся *Ρ€Π°Π½ΡŒΡˆΠ΅* `/usr/bin` Π² стандартном `PATH`. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΏΠΎΠΌΠ΅Ρ‰Ρ‘Π½Π½Ρ‹ΠΉ сюда, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½Ρ‹ΠΉ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», управляСмый ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π­Ρ‚ΠΎ сдСлано Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ β€” Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ настройки ΠΌΠΎΠ³Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ дистрибутива β€” ΠΎΠ΄Π½Π°ΠΊΠΎ это Ρ‚Π°ΠΊΠΆΠ΅ частый источник Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Ρ… ошибок ΠΏΡ€ΠΈ расхоТдСнии вСрсий.

β€œ`bash

echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

β€œ`

БообраТСния бСзопасности: ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ `/usr/local/bin` Π½Π΅ провСряСтся ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΏΠΎΠΌΠ΅Ρ‰Ρ‘Π½Π½Ρ‹Π΅ сюда, Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ автоматичСских ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ бСзопасности. На сСрвСрах с производствСнными Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°ΠΌΠΈ β€” Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° Π’Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… сСрвСрах β€” установитС рСгулярный Ρ†ΠΈΠΊΠ» обновлСния Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ инструмСнт управлСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ (Ansible, Puppet, Chef) для отслСТивания ΠΈ обновлСния этих Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².

/usr/local/sbin β€” БистСмныС Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, установлСнныС администратором

`/usr/local/sbin` ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ взаимосвязь ΠΌΠ΅ΠΆΠ΄Ρƒ `/sbin` ΠΈ `/bin`, Π½ΠΎ Π½Π° локальном ΡƒΡ€ΠΎΠ²Π½Π΅. Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ располоТСниС для Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ установлСнных инструмСнтов систСмного администрирования, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для root.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования:

  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ скрипты Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования, запускаСмыС ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ root Ρ‡Π΅Ρ€Π΅Π· cron
  • Π’Ρ€ΡƒΡ‡Π½ΡƒΡŽ скомпилированныС Π°Π³Π΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ сборка `node_exporter`)
  • АдминистративныС скрипты-ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠΈ, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹
  • Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹ управлСния ΠΎΡ‚ Π²Π΅Π½Π΄ΠΎΡ€Π°, поставляСмыС Π² Π²ΠΈΠ΄Π΅ Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ² tar, Π° Π½Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ дисциплина: Π’Π΅Π΄ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» `README` ΠΈΠ»ΠΈ ΠΈΠ½Π²Π΅Π½Ρ‚Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² `/usr/local/sbin`, докумСнтируя происхоТдСниС, Π²Π΅Ρ€ΡΠΈΡŽ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ обновлСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. На ΠΎΠ±Ρ‰Π΅ΠΉ инфраструктурС Π½Π΅Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² этой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΡƒΠ³Ρ€ΠΎΠ·Ρƒ бСзопасности ΠΈ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΡΡŽΡ‚ Π°ΡƒΠ΄ΠΈΡ‚.

/opt β€” БамодостаточныС сторонниС прилоТСния

`/opt` ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… структурС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ FHS β€” ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, коммСрчСских ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΎΡ‚ Π²Π΅Π½Π΄ΠΎΡ€ΠΎΠ² ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΡ… собствСнныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² зависимостСй.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

  • `/opt/google/chrome/` β€” Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Google Chrome
  • `/opt/lampp/` β€” стСк XAMPP
  • `/opt/pycharm/` β€” IDE JetBrains PyCharm
  • `/opt/gitlab/` β€” установка Omnibus GitLab
  • `/opt/aws/` β€” AWS CLI v2 ΠΈ SSM Agent

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΠΎΠ΅ соглашСниС: КаТдоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² `/opt` Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ `/opt/<provider>/` ΠΈΠ»ΠΈ `/opt/<package>/`. Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ прилоТСния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ находятся Π² `/opt/<package>/bin/`, ΠΈ ΠΎΡ‚ Π²Π΅Π½Π΄ΠΎΡ€Π° оТидаСтся установка символичСской ссылки Π² `/usr/local/bin` ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ `/etc/profile.d/` для добавлСния этого ΠΏΡƒΡ‚ΠΈ.

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `/opt` вмСсто `/usr/local`: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `/opt`, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС поставляСтся ΠΊΠ°ΠΊ самодостаточный ΠΏΠ°ΠΊΠ΅Ρ‚ с собствСнными Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ дирСкториями Π΄Π°Π½Π½Ρ‹Ρ…. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `/usr/local/bin` для ΠΎΠ΄Π½ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… инструмСнтов ΠΈΠ»ΠΈ скриптов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ стСком систСмных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

Π Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹ΠΉ случай: GitLab Omnibus устанавливаСтся ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π² `/opt/gitlab/` ΠΈ управляСт собствСнными экзСмплярами PostgreSQL, Redis ΠΈ Nginx. Вакая изоляция Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½Π° β€” ΠΎΠ½Π° ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ вСрсий с систСмными слуТбами. Однако это Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ систСмныС инструмСнты ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ автоматичСски ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ эти процСссы, Ссли ΠΎΠ½ΠΈ явно Π½Π΅ настроСны Π½Π° поиск Π² `/opt`.

/lib, /usr/lib, /lib64 ΠΈ /usr/lib64 β€” РаздСляСмыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

Π­Ρ‚ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ содСрТат Ρ„Π°ΠΉΠ»Ρ‹ раздСляСмых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Ρ„Π°ΠΉΠ»Ρ‹ `.so`), ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… зависят Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… дирСкториях Π²ΠΎ врСмя выполнСния. Они Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ исполняСмыми Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ смыслС, Π½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ процСсса динамичСским ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ (`ld-linux.so`).

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ ΠΈΡ… Ρ€ΠΎΠ»ΠΈ:

  • `/lib` β€” РаздСляСмыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ Π² `/bin` ΠΈ `/sbin`. На систСмах с ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹ΠΌ usr β€” символичСская ссылка Π½Π° `/usr/lib`.
  • `/usr/lib` β€” Основной Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ всСх систСмных раздСляСмых Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Π—Π΄Π΅ΡΡŒ находятся Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, управляСмыС ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².
  • `/lib64` β€” 64-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ `/lib` Π½Π° систСмах с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ multilib (распространСно Π½Π° x86_64 RHEL/CentOS). Часто являСтся символичСской ссылкой Π½Π° `/usr/lib64`.
  • `/usr/lib64` β€” 64-Π±ΠΈΡ‚Π½Ρ‹Π΅ раздСляСмыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² дистрибутивах Π½Π° основС RPM.
  • `/usr/local/lib` β€” Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, установлСнныС вмСстС с Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ скомпилированным ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм.
  • `/usr/lib/x86_64-linux-gnu/` β€” ΠŸΡƒΡ‚ΡŒ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ multiarch Π² Debian/Ubuntu, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ ΠΈ 64-Π±ΠΈΡ‚Π½Ρ‹ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ ΡΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ.

ΠœΠ΅Ρ…Π°Π½ΠΈΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния: ΠŸΡ€ΠΈ запускС Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ядро ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ динамичСскому ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΡƒ, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ELF (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ `/lib64/ld-linux-x86-64.so.2`). ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ зависимости раздСляСмых Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ кэша, построСнного `ldconfig`, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ `/etc/ld.so.conf` ΠΈ Π΅Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ. Если Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° установлСна, Π½ΠΎ `ldconfig` Π½Π΅ Π±Ρ‹Π» Π·Π°ΠΏΡƒΡ‰Π΅Π½, Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ с ошибкой Β«shared library not foundΒ», Π΄Π°ΠΆΠ΅ Ссли Ρ„Π°ΠΉΠ» сущСствуСт.

β€œ`bash

After installing a library to /usr/local/lib, always run:

ldconfig

Verify library resolution for a specific binary:

ldd /usr/bin/curl

β€œ`

Распространённая ошибка: Установка ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ скомпилированной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² `/usr/local/lib` Π±Π΅Π· ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ запуска `ldconfig` β€” ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ частых ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ошибок Β«cannot open shared object fileΒ» Π½Π° сСрвСрах Linux. Π­Ρ‚ΠΎ особСнно распространСно ΠΏΡ€ΠΈ сборкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈΠ· исходного ΠΊΠΎΠ΄Π° Π½Π° VPS с cPanel ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ… управляСмых срСдах, Π³Π΄Π΅ процСсс сборки ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ доступа root для запуска `ldconfig`.

UsrMerge: соврСмСнная консолидация Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы

Π˜Π½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π° UsrMerge (ΠΈΠ»ΠΈ `usr-merge`) заслуТиваСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ внимания, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ мСняСт ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ модСль, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ администраторы сохранили со Π²Ρ€Π΅ΠΌΡ‘Π½ старых систСм.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½Π° Ρ€Π΅ΡˆΠ°Π΅Ρ‚: Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ `/bin`, `/sbin`, `/lib` ΠΈ `/lib64` сущСствовали ΠΊΠ°ΠΊ нСзависимыС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ `/usr`. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ initramfs содСрТал ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ инструмСнтов для монтирования `/usr` Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ систСмы. По ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ initramfs стал ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ, Π° `/usr` Π½Π°Ρ‡Π°Π» Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Ρ‚ΠΎΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния, ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠΎ сСти ΠΈΠ»ΠΈ управляСмый Ρ‡Π΅Ρ€Π΅Π· снимки, Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ стало прСпятствиСм для Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹Ρ… ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΈ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ Π½Π° основС ΠΎΠ±Ρ€Π°Π·ΠΎΠ².

Π§Ρ‚ΠΎ измСнилось: На ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… систСмах Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ уровня становятся символичСскими ссылками:

β€œ`

/bin -> usr/bin

/sbin -> usr/sbin

/lib -> usr/lib

/lib64 -> usr/lib64

β€œ`

Дистрибутивы, Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ²ΡˆΠΈΠ΅ UsrMerge:

  • Fedora (начиная с Fedora 17, 2012 Π³.)
  • Arch Linux (начиная с 2013 Π³.)
  • Debian (начиная с Debian 12 Bookworm, 2023 Π³.)
  • Ubuntu (начиная с Ubuntu 21.10)
  • RHEL/CentOS (начиная с RHEL 7)

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ влияниС: Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ с Тёстко Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ `/bin/bash` ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ `/bin` являСтся символичСской ссылкой Π½Π° `/usr/bin`. Однако скрипты, ΠΏΡ‹Ρ‚Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ ΠΏΡƒΡ‚ΡŒ «сущСствСнным», провСряя, начинаСтся Π»ΠΈ ΠΎΠ½ с `/bin`, Π° Π½Π΅ с `/usr/bin`, Π±ΡƒΠ΄ΡƒΡ‚ Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅Π²Π΅Ρ€Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹. ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ Π² своих инструмСнтах Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠŸΡ€Π°Π²Π° доступа ΠΊ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌ дирСкториям ΠΈ усилСниС бСзопасности

ПониманиС Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ Π½Π΅ΠΎΡ‚Π΄Π΅Π»ΠΈΠΌΠΎ ΠΎΡ‚ понимания ΠΈΡ… послСдствий для бСзопасности. Ряд ΠΌΠ΅Ρ€ ΠΏΠΎ ΡƒΡΠΈΠ»Π΅Π½ΠΈΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ нСпосрСдствСнно касаСтся этих ΠΏΡƒΡ‚Π΅ΠΉ.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€Π°Π²Π° доступа:

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡΠ’Π»Π°Π΄Π΅Π»Π΅Ρ†Π“Ρ€ΡƒΠΏΠΏΠ°ΠŸΡ€Π°Π²Π° доступа
`/usr/bin`rootroot`755`
`/usr/sbin`rootroot`755`
`/usr/local/bin`rootroot`755`
`/usr/local/sbin`rootroot`750` ΠΈΠ»ΠΈ `755`
`/opt/<package>`rootroot`755`

Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ SUID/SGID: НСкоторыС Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² `/usr/bin` ΠΈ `/usr/sbin` ΠΈΠΌΠ΅ΡŽΡ‚ установлСнный Π±ΠΈΡ‚ SUID, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ с ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΌΠΈ привилСгиями нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ ΠΈΡ… Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ `passwd`, `sudo`, `su` ΠΈ `ping`. РСгулярно ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈΡ… Π°ΡƒΠ΄ΠΈΡ‚:

β€œ`bash

find /usr/bin /usr/sbin /bin /sbin -perm /4000 -o -perm /2000 2>/dev/null

β€œ`

НСизмСняСмыС Ρ„Π»Π°Π³ΠΈ: На систСмах с высоким ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ бСзопасности рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ примСнСния `chattr +i` ΠΊ критичСски Π²Π°ΠΆΠ½Ρ‹ΠΌ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈΠ»ΠΈ монтирования `/usr` Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²ΠΎ врСмя выполнСния врСдоносным ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм ΠΈΠ»ΠΈ скомпромСтированным процСссом, хотя для Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ½Ρ‹Ρ… ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² потрСбуСтся ΠΏΠ΅Ρ€Π΅ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ чтСния-записи.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ монтирования `noexec`: ΠœΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ `/tmp` ΠΈ `/var/tmp` с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ `noexec` ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ прямоС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΠΎΠΌΠ΅Ρ‰Ρ‘Π½Π½Ρ‹Ρ… Ρ‚ΡƒΠ΄Π°, β€” распространённый ΠΏΡ€ΠΈΡ‘ΠΌ Π² Π°Ρ‚Π°ΠΊΠ°Ρ… с использованиСм Π²Π΅Π±-шСллов. Π­Ρ‚ΠΎ Π½Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ сами Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Π½ΠΎ являСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ΅Ρ€ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹, Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ для любого сСрвСра с Π²Π΅Π±-прилоТСниями, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ срСды Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Π΅Π±-хостинга.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ окруТСния PATH ΠΈ порядок Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ `PATH` опрСдСляСт порядок, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΈΡ‰Π΅Ρ‚ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ Π² дирСкториях. ПониманиС этого порядка Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ошибок Β«command not foundΒ» ΠΈ для Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ пСрСкрытия Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ PATH для root Π² систСмС Debian/Ubuntu:

β€œ`

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

β€œ`

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ PATH для Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ:

β€œ`

/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

β€œ`

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ наблюдСния:

  • `/usr/local/bin` ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ `/usr/bin`, поэтому локально установлСнныС Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ управляСмыС ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².
  • `/sbin` ΠΈ `/usr/sbin` ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² стандартном PATH Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… дистрибутивах, поэтому запуск `ifconfig` ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ Π½Π΅-root ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ ошибкой Β«command not foundΒ», Π΄Π°ΠΆΠ΅ Ссли Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» сущСствуСт.
  • Когда слуТба запускаСтся ΠΏΠΎΠ΄ ΡƒΡ‡Ρ‘Ρ‚Π½ΠΎΠΉ записью Π½Π΅-root ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π΅Π±-прилоТСния), Π΅Ρ‘ PATH ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΅Ρ‰Ρ‘ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ. ВсСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ Π² Ρ„Π°ΠΉΠ»Π°Ρ… ΡŽΠ½ΠΈΡ‚ΠΎΠ² слуТб ΠΈ заданиях cron.

ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с PATH:

β€œ`bash

Find all instances of a binary across PATH directories:

which -a python3

Show full PATH resolution including aliases and functions:

type -a python3

Check the effective PATH for a specific service:

systemctl show myservice | grep -i environment

β€œ`

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ: ΠΊΡƒΠ΄Π° ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»

ΠŸΡ€ΠΈ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π½Π° сСрвСрС Linux β€” Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ скомпилированный инструмСнт, Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ скрипт β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ схСму принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ:

УправляСтся Π»ΠΈ ΠΎΠ½ΠΎ систСмным ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²?

  • Π”Π°: ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² автоматичСски ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² `/usr/bin` ΠΈΠ»ΠΈ `/usr/sbin`. НС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ.

Π­Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ скрипт, установлСнный Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ?

  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ: `/usr/local/bin`
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ для root/администратора: `/usr/local/sbin`

Π­Ρ‚ΠΎ самодостаточный ΠΏΠ°ΠΊΠ΅Ρ‚ прилоТСния с собствСнными зависимостями?

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `/opt/<vendor>/<package>/` ΠΈ создайтС ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ссылку Π½Π° основной Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² `/usr/local/bin`

Π­Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ инструмСнт?

  • ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π² `~/bin` (создайтС ΠΏΡ€ΠΈ отсутствии) ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ `~/bin` Π² Π»ΠΈΡ‡Π½Ρ‹ΠΉ `PATH` Π² `~/.bashrc` ΠΈΠ»ΠΈ `~/.profile`

Π­Ρ‚ΠΎ раздСляСмая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ скомпилированного прилоТСния?

  • УстановитС Π² `/usr/local/lib`, Π·Π°Ρ‚Π΅ΠΌ запуститС `ldconfig`

Π­Ρ‚Π° схСма ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½Ρ‘Π½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ энтропии Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы Π½Π° Π΄ΠΎΠ»Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… сСрвСрах: Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, разбросанныС ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ располоТСниям, Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ для ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ Π·Π°Π±Ρ‹Ρ‚Ρ‹Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ²ΡˆΠΈΠΌ ΠΈΡ… администратором.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ список ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… тСхничСских Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ²

  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ статус UsrMerge Π² вашСй систСмС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `ls -la /bin /sbin /lib`. Если ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ символичСскими ссылками, `/bin` ΠΈ `/usr/bin` β€” это ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ пространство ΠΈΠΌΡ‘Π½.
  • Никогда Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ нСпосрСдствСнно Π² `/usr/bin` ΠΈΠ»ΠΈ `/usr/sbin` β€” обновлСния ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡˆΡƒΡ‚ ΠΈΡ… Π±Π΅Π· прСдупрСТдСния.
  • ВсСгда запускайтС `ldconfig` послС установки раздСляСмых Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π² `/usr/local/lib` ΠΈΠ»ΠΈ любой нСстандартный ΠΏΡƒΡ‚ΡŒ.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ Π² заданиях cron, Ρ„Π°ΠΉΠ»Π°Ρ… ΡŽΠ½ΠΈΡ‚ΠΎΠ² systemd ΠΈ скриптах ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ β€” Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠ»Π°Π³Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΡƒΡŽ установку `PATH` Π² Π½Π΅ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… контСкстах.
  • Π•ΠΆΠ΅ΠΊΠ²Π°Ρ€Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅ Π°ΡƒΠ΄ΠΈΡ‚ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² SUID/SGID Π½Π° производствСнных сСрвСрах: `find /usr /bin /sbin -perm /6000 -type f`
  • Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», установлСнный Π² `/usr/local/` ΠΈ `/opt/`, с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ вСрсии, URL источника ΠΈ Π΄Π°Ρ‚Ρ‹ установки Π² систСмС управлСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π² локальном ΠΆΡƒΡ€Π½Π°Π»Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
  • На систСмах с ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹ΠΌ usr ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Π»ΡŽΠ±ΡƒΡŽ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ, Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‰ΡƒΡŽ «сущСствСнныС» Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ прСфиксу ΠΏΡƒΡ‚ΠΈ β€” это Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ носит ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сСмантичСский Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€.
  • ΠŸΡ€ΠΈ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠŸΠ°Π½Π΅Π»ΡΡ… управлСния VPS ΠΈΠ»ΠΈ Π² управляСмых хостинговых срСдах ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, измСняСт Π»ΠΈ панСль управлСния `PATH` ΠΈΠ»ΠΈ устанавливаСт собствСнныС вСрсии Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π² `/opt` ΠΈΠ»ΠΈ `/usr/local`, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ вСрсий с систСмными инструмСнтами.
  • Для инструмСнтов, связанных с SSL (`openssl`, `certbot`), ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, какая вСрсия Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° вызываСтся β€” ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ°Ρ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ установлСнная вСрсия Π² `/usr/local/bin` Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСисправлСнныС уязвимости. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ это Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ SSL-сСртификатами, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ всСй криптографичСской Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ инструмСнтов.

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы

Π’ Ρ‡Ρ‘ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ `/bin` ΠΈ `/usr/bin` Π² соврСмСнном Linux?

Π’ соврСмСнных дистрибутивах, Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ²ΡˆΠΈΡ… UsrMerge, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π½Π΅Ρ‚ β€” `/bin` являСтся символичСской ссылкой Π½Π° `/usr/bin`. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ `/bin` содСрТал Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄ΠΎ монтирования `/usr`, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ `/usr/bin` содСрТал всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅. На ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… систСмах это Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ носит сСмантичСский Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€, Π½ΠΎ остаётся Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΌ Π½Π° старых ΠΈΠ»ΠΈ встроСнных установках Linux.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π² `/usr/local/bin` ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½Ρ‹ΠΉ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² `/usr/bin`?

ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ `/usr/local/bin` появляСтся Ρ€Π°Π½ΡŒΡˆΠ΅ Π² стандартном `PATH`, Ρ‡Π΅ΠΌ `/usr/bin`. ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ просматривая Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ `PATH` слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ ΠΈ выполняя ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ΅ совпадСниС. Π’Π°ΠΊΠΎΠΉ порядок Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π΅Π½ β€” ΠΎΠ½ позволяСт администраторам Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ пСрСопрСдСлСния Π±Π΅Π· измСнСния Ρ„Π°ΠΉΠ»ΠΎΠ², управляСмых ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚, Ссли я Π·Π°Π±ΡƒΠ΄Ρƒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ `ldconfig` послС установки раздСляСмой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ?

Кэш динамичСского ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ° (`/etc/ld.so.cache`) Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΠΈ любой зависящий ΠΎΡ‚ Π½Π΅Ρ‘ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ с ошибкой Π²ΠΎ врСмя выполнСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ `error while loading shared libraries: libfoo.so.1: cannot open shared object file: No such file or directory`. Запуск `sudo ldconfig` пСрСстраиваСт кэш ΠΈ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ устраняСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

БСзопасно Π»ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС нСпосрСдствСнно Π² `/usr/bin` вмСсто `/usr/local/bin`?

НСт. Π€Π°ΠΉΠ»Ρ‹ Π² `/usr/bin` ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρƒ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈΠΌ. Π‘ΡƒΠ΄ΡƒΡ‰Π΅Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈΠ»ΠΈ систСмноС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ любой Ρ„Π°ΠΉΠ» Π² этой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π±Π΅Π· прСдупрСТдСния. ВсСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `/usr/local/bin` для Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², установлСнных Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‘Ρ‚ΠΊΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм, управляСмым ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм, управляСмым администратором.

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΈΠ· ΠΊΠ°ΠΊΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ выполняСтся ΠΊΠΎΠΌΠ°Π½Π΄Π°?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `which <command>` для быстрого поиска ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ совпадСния Π² `PATH`, ΠΈΠ»ΠΈ `type -a <command>` для Π²Ρ‹Π²ΠΎΠ΄Π° всСх совпадСний, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ встроСнныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, псСвдонимы ΠΈ всС экзСмпляры Π²ΠΎ всСх дирСкториях `PATH`. Для ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π° с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ символичСских ссылок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `readlink -f $(which <command>)`.