БпСстСтС 15% ΠΎΡ‚ всички хостинг услуги

ВСствай умСнията си ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠžΡ‚ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° всСки хостинг ΠΏΠ»Π°Π½

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄: Skills Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ
Заглавия
Linux Администрация Π—Π°Ρ‰ΠΈΡ‚Π°

Как Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ исканСто Π·Π° ΠΏΠ°Ρ€ΠΎΠ»Π° Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Sudo Π² Linux

ΠšΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° sudo β€” ΡΡŠΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΡ‚ superuser do β€” прСдоставя Π½Π° ΠΎΡ‚ΠΎΡ€ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Linux ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π½Π° root Π½ΠΈΠ²ΠΎ Π·Π° изпълнСниС Π½Π° административни Π·Π°Π΄Π°Ρ‡ΠΈ. По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ всяко ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° sudo изисква удостовСряванС с ΠΏΠ°Ρ€ΠΎΠ»Π° Π·Π° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° самоличността Π½Π° извикващия. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ Ρ‚Π°Π·ΠΈ ΠΏΠΎΠ΄ΠΊΠ°Π½Π° Π·Π° ΠΏΠ°Ρ€ΠΎΠ»Π° ΠΈΠ»ΠΈ Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ Π·Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», ΠΈΠ»ΠΈ ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚Π΅Π»Π½ΠΎ Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π° сСсия, ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»Π° /etc/sudoers Ρ‡Ρ€Π΅Π· visudo ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ‚Π° timestamp_timeout.

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅: Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° удостовСряванСто с ΠΏΠ°Ρ€ΠΎΠ»Π° Π·Π° sudo намалява Π·Π°Ρ‰ΠΈΡ‚Π°Ρ‚Π° Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° систСма Π² Π΄ΡŠΠ»Π±ΠΎΡ‡ΠΈΠ½Π°. ΠŸΡ€ΠΈΠ»Π°Π³Π°ΠΉΡ‚Π΅ Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ само към Π΄ΠΎΠ²Π΅Ρ€Π΅Π½ΠΈ Π°ΠΊΠ°ΡƒΠ½Ρ‚ΠΈ, Π·Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ Π΄ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Π° Π½Π΅ Π·Π° ΠΎΠ±Ρ‰ΠΈ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ALL. Π’ производствСна срСда с VPS Π₯остинг, Ρ‚Ρ€Π΅Ρ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ passwordless sudo ΠΊΠ°Ρ‚ΠΎ обмислСн компромис, Π° Π½Π΅ ΠΊΠ°Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π° настройка ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° Π½Π°Ρ‡ΠΈΠ½Π° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° удостовСряванСто Π² Sudo

ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» изпълни sudo, ΡΡ‚Π΅ΠΊΡŠΡ‚ Linux PAM (Pluggable Authentication Modules) удостовСрява заявката спрямо ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π°, Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ Π² /etc/sudoers. ΠŸΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ удостовСряванС ядрото записва Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚ Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ Π² /run/sudo/ts/ (ΠΈΠ»ΠΈ /var/db/sudo/ ΠΏΡ€ΠΈ ΠΏΠΎ-стари дистрибуции). ΠŸΠΎΡΠ»Π΅Π΄Π²Π°Ρ‰ΠΈΡ‚Π΅ извиквания Π½Π° sudo Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π° timestamp_timeout β€” 15 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ β€” пропускат ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΡ‚ΠΎ удостовСряванС изцяло.

Π’Π°Π·ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ ΠΈΠΌΠ° Π΄Π²Π° Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ лоста, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° задСйстватС:

  • ΠšΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ β€” Ρ€Π°Π·ΡˆΠΈΡ€Π΅Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π° Π·Π° ΠΈΠ·Ρ‚ΠΈΡ‡Π°Π½Π΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ потрСбитСлят Π΄Π° сС удостовСри вСднъТ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ Π΄Π° сС Π·Π°ΠΏΠ°Π·Π²Π°Ρ‚ ΠΏΠΎ-дълго.
  • Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° NOPASSWD β€” инструктирайтС sudo Π΄Π° пропуснС удостовСряванСто изцяло Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ, нСзависимо ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ.

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠ²Π° Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π΅ ΠΎΡ‚ Ρ€Π΅ΡˆΠ°Π²Π°Ρ‰ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° timestamp_timeout Π΄ΠΎ голяма стойност всС ΠΎΡ‰Π΅ изисква Π΅Π΄Π½ΠΎ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ удостовСряванС. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ‚Π° NOPASSWD изисква Π½ΡƒΠ»Π΅Π²ΠΎ удостовСряванС, Π½ΠΈΠΊΠΎΠ³Π°. Π’Π΅ Π½Π΅ са Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΈ ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° сигурността.

Π€Π°ΠΉΠ»ΡŠΡ‚ sudoers: АрхитСктура ΠΈ бСзопасно Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅

ΠžΡΠ½ΠΎΠ²Π½ΠΈΡΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Ρ„Π°ΠΉΠ» Π΅ /etc/sudoers. Π’ΠΎΠΉ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ трябва Π΄Π° сС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ със стандартСн тСкстов Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€. Π’ΠΈΠ½Π°Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ visudo, ΠΊΠΎΠΉΡ‚ΠΎ:

  • Π—Π°ΠΊΠ»ΡŽΡ‡Π²Π° Ρ„Π°ΠΉΠ»Π° срСщу Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΈ
  • Π’Π°Π»ΠΈΠ΄ΠΈΡ€Π° синтаксиса ΠΏΡ€Π΅Π΄ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅
  • ΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΡΠ²Π° ΠΏΠΎΠ²Ρ€Π΅Π΄Π΅Π½ Ρ„Π°ΠΉΠ» sudoers Π΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈ всички ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ извън sudo
sudo visudo

ΠŸΡ€ΠΈ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ систСми Debian/Ubuntu, /etc/sudoers Π²ΠΊΠ»ΡŽΡ‡Π²Π° дирСктория Π·Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅:

/etc/sudoers.d/

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° поставятС ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ‚ΡƒΠΊ, вмСсто Π΄Π° промСнятС Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ основния Ρ„Π°ΠΉΠ». Π’ΠΎΠ²Π° Π΅ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡ΠΈΡ‚Π΅Π»Π½ΠΈΡΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π·Π° производствСни систСми β€” Ρ‚ΠΎΠΉ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π²Π°ΡˆΠΈΡ‚Π΅ пСрсонализирани ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ΠΈ ΠΈ ΠΏΡ€Π°Π²ΠΈ ΠΎΠ΄ΠΈΡ‚Π° лСсСн.

sudo visudo -f /etc/sudoers.d/custom_nopasswd

Π€Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ Π² /etc/sudoers.d/ Π½Π΅ трябва Π΄Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ . Π² ΠΈΠΌΠ΅Ρ‚ΠΎ си (Π½Π°ΠΏΡ€. избягвайтС custom.conf) ΠΈ трябва Π΄Π° ΠΈΠΌΠ°Ρ‚ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ 0440:

sudo chmod 0440 /etc/sudoers.d/custom_nopasswd

ΠœΠ΅Ρ‚ΠΎΠ΄ 1: Π’Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ заобикалянС Π½Π° ΠΏΠΎΠ΄ΠΊΠ°Π½Π°Ρ‚Π° Π·Π° ΠΏΠ°Ρ€ΠΎΠ»Π° Π·Π° Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Π° сСсия

Π€Π»Π°Π³ΡŠΡ‚ -S инструктира sudo Π΄Π° Ρ‡Π΅Ρ‚Π΅ ΠΏΠ°Ρ€ΠΎΠ»Π°Ρ‚Π° ΠΎΡ‚ стандартния Π²Ρ…ΠΎΠ΄ (stdin), Π° Π½Π΅ ΠΎΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°. Π’ΠΎΠ²Π° Π΅ ΠΏΡ€Π΅Π΄ΠΈΠΌΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² Π½Π΅ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ скриптовС, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅ ΠΏΠ°Ρ€ΠΎΠ»Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΎ Ρ‡Ρ€Π΅Π· Ρ‚Ρ€ΡŠΠ±Π°:

echo "your_password" | sudo -S apt update

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: Π’Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°Ρ€ΠΎΠ»ΠΈ Π² ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ тСкст Π² скриптовС ΠΈΠ»ΠΈ история Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°Ρ‚Π° Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π΅Π½ риск Π·Π° сигурността. Π’ΠΎΠ·ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΅ подходящ Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ΠΈ Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈ Π·Π° автоматизация, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΏΠ°Ρ€ΠΎΠ»Π°Ρ‚Π° сС ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€Π° Ρ‡Ρ€Π΅Π· ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π½Π° Ρ‚Π°ΠΉΠ½ΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° срСдата β€” Π½Π΅ Π΅ Ρ‚Π²ΡŠΡ€Π΄ΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π° Π² скриптов Ρ„Π°ΠΉΠ». Π—Π° автоматизация Π±Π΅Π· Π½Π°Π΄Π·ΠΎΡ€ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ‚Π° NOPASSWD, описана ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ, Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎ ΠΏΠΎ-чистото Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

ΠœΠ΅Ρ‚ΠΎΠ΄ 2: Π”Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΊΠ°Π½Π°Ρ‚Π° Π·Π° ΠΏΠ°Ρ€ΠΎΠ»Π° Π·Π° всички ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»

Π’ΠΎΠ·ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ прСдоставя Π½Π° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° изпълнява всяка ΠΊΠΎΠΌΠ°Π½Π΄Π° sudo Π±Π΅Π· ΠΏΠ°Ρ€ΠΎΠ»Π°. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Π³ΠΎ пСстСливо β€” ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π·Π° спСциализирани сСрвизни Π°ΠΊΠ°ΡƒΠ½Ρ‚ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π·Π° автоматизация, Π° Π½Π΅ Π·Π° Π°ΠΊΠ°ΡƒΠ½Ρ‚ΠΈ Π½Π° Ρ‡ΠΎΠ²Π΅ΡˆΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ.

Π‘Ρ‚ΡŠΠΏΠΊΠ° 1: ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ Ρ„Π°ΠΉΠ»Π° sudoers:

sudo visudo

Π‘Ρ‚ΡŠΠΏΠΊΠ° 2: Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ слСдния Ρ€Π΅Π΄, ΠΊΠ°Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ username с дСйствитСлното ΠΈΠΌΠ΅ Π½Π° Linux Π°ΠΊΠ°ΡƒΠ½Ρ‚Π°:

username ALL=(ALL) NOPASSWD: ALL

Π‘Ρ‚ΡŠΠΏΠΊΠ° 3: Π—Π°ΠΏΠ°Π·Π΅Ρ‚Π΅ ΠΈ ΠΈΠ·Π»Π΅Π·Ρ‚Π΅. Π’ nano-Π±Π°Π·ΠΈΡ€Π°Π½ visudo, натиснСтС Ctrl+X, слСд Ρ‚ΠΎΠ²Π° Y, слСд Ρ‚ΠΎΠ²Π° Enter. Π’ vi-Π±Π°Π·ΠΈΡ€Π°Π½ visudo, Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ :wq.

Какво ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° Ρ‚ΠΎΠ²Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ€Π°Π·Π±ΠΈΡ‚ΠΎ Π½Π° части:

ΠŸΠΎΠ»Π΅Π‘Ρ‚ΠΎΠΉΠ½ΠΎΡΡ‚Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
usernameЦСлСвият ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»Π—Π° ΠΊΠΎΠ³ΠΎ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ
ALL (ΠΏΡŠΡ€Π²ΠΈ)ВсСки Ρ…ΠΎΡΡ‚ΠŸΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° Π½Π° всички машини (ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° сподСлСни ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° sudoers)
(ALL)ВсСки Ρ†Π΅Π»Π΅Π²ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠœΠΎΠΆΠ΅ Π΄Π° изпълнява ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΊΠ°Ρ‚ΠΎ всСки ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ root
NOPASSWD: ALLВсички ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Π±Π΅Π· паролаНС сС изисква удостовСряванС Π·Π° никоя ΠΊΠΎΠΌΠ°Π½Π΄Π°

ΠœΠ΅Ρ‚ΠΎΠ΄ 3: Π”Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΊΠ°Π½Π°Ρ‚Π° Π·Π° ΠΏΠ°Ρ€ΠΎΠ»Π° само Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ

Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-ΡΡŠΠΎΠ±Ρ€Π°Π·Π΅Π½ΠΈΡΡ‚ със сигурността ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π±Π΅Π· ΠΏΠ°Ρ€ΠΎΠ»Π° Π΅ наистина Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. ВмСсто Π΄Π° прСдоставятС ΠΎΠ±Ρ‰ΠΈ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ NOPASSWD: ALL, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Ρ‚Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄ΠΎ Ρ‚ΠΎΡ‡Π΅Π½ ΠΏΡŠΡ‚ Π½Π° Π΄Π²ΠΎΠΈΡ‡Π΅Π½ Ρ„Π°ΠΉΠ».

Π‘Ρ‚ΡŠΠΏΠΊΠ° 1: ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ Ρ„Π°ΠΉΠ»Π° sudoers:

sudo visudo

Π‘Ρ‚ΡŠΠΏΠΊΠ° 2: НамСрСтС сСкцията Defaults ΠΈ Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ цСлСнасочСно ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΏΠΎΠ΄ нСя:

username ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/apt-get update

Π—Π°ΠΌΠ΅Π½Π΅Ρ‚Π΅ username с дСйствитСлния Π°ΠΊΠ°ΡƒΠ½Ρ‚ ΠΈ посочСтС пълния, Π°Π±ΡΠΎΠ»ΡŽΡ‚Π΅Π½ ΠΏΡŠΡ‚ Π΄ΠΎ всяка ΠΊΠΎΠΌΠ°Π½Π΄Π°. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° раздСлятС мноТСство ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ със запСтая Π½Π° Π΅Π΄ΠΈΠ½ Ρ€Π΅Π΄.

Π‘Ρ‚ΡŠΠΏΠΊΠ° 3: Π—Π°ΠΏΠ°Π·Π΅Ρ‚Π΅ ΠΈ ΠΈΠ·Π»Π΅Π·Ρ‚Π΅.

Π—Π°Ρ‰ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΈΡ‚Π΅ ΠΏΡŠΡ‚ΠΈΡ‰Π° ΠΈΠΌΠ°Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: sudo Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅ спрямо ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π½Π° sudoers, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ пълния ΠΏΡŠΡ‚ Π½Π° двоичния Ρ„Π°ΠΉΠ». Ако посочитС apt-get Π±Π΅Π· ΠΏΡŠΡ‚, ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ съвпаднС, ΠΈΠ»ΠΈ ΠΏΠΎ-лошо, Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½ Π΄Π²ΠΎΠΈΡ‡Π΅Π½ Ρ„Π°ΠΉΠ», поставСн ΠΏΠΎ-Ρ€Π°Π½ΠΎ Π² $PATH, ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·Π²ΠΈΠΊΠ°Π½ вмСсто Π½Π΅Π³ΠΎ. Π’ΠΈΠ½Π°Π³ΠΈ провСрявайтС ΠΏΡŠΡ‚ΠΈΡ‰Π°Ρ‚Π° с which:

which systemctl
# /usr/bin/systemctl

Π Π΅Π°Π»Π΅Π½ случай Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°: Π’Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ Π·Π° внСдряванС, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» deploy, трябва Π΄Π° рСстартира ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ½ΠΈ услуги слСд всяко ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡΠ½Π΅Ρ‚ΠΎ Π½Π° NOPASSWD само Π·Π° systemctl restart myapp ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎ, Π±Π΅Π· Π΄Π° ΠΈΠ·Π»Π°Π³Π° пълСн root Π΄ΠΎΡΡ‚ΡŠΠΏ.

ΠœΠ΅Ρ‚ΠΎΠ΄ 4: Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·Ρ‚ΠΈΡ‡Π°Π½Π΅Ρ‚ΠΎ Π½Π° врСмСвия ΠΏΠ΅Ρ‡Π°Ρ‚ Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ

ВмСсто Π΄Π° Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ удостовСряванСто изцяло, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π·ΡˆΠΈΡ€ΠΈΡ‚Π΅ ΠΊΠΎΠ»ΠΊΠΎ дълго sudo ΠΏΠΎΠΌΠ½ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡ‚ΠΎ удостовСряванС. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΎ ΠΈΠ½Π²Π°Π·ΠΈΠ²Π½Π°Ρ‚Π° опция Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ мноТСство административни ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½Π° сСсия.

Π‘Ρ‚ΡŠΠΏΠΊΠ° 1: ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ Ρ„Π°ΠΉΠ»Π° sudoers:

sudo visudo

Π‘Ρ‚ΡŠΠΏΠΊΠ° 2: ΠŸΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚Π΅ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ‚Π° timestamp_timeout ΠΏΠΎΠ΄ Π±Π»ΠΎΠΊΠ° Defaults:

Defaults    timestamp_timeout=60

Π’ΠΎΠ²Π° Π·Π°Π΄Π°Π²Π° кСша Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ Π½Π° 60 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ. ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡΡ‚ сС удостовСрява вСднъТ ΠΈ послСдващитС ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ sudo Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ† Π½Π΅ изискват ΠΏΠ°Ρ€ΠΎΠ»Π°.

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»Π½ΠΈ стойности:

Π‘Ρ‚ΠΎΠΉΠ½ΠΎΡΡ‚ΠŸΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
0ΠŸΠ°Ρ€ΠΎΠ»Π°Ρ‚Π° сС изисква ΠΏΡ€ΠΈ всяко Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° sudo
-1Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ ΠΈΠ·Ρ‚ΠΈΡ‡Π°Ρ‚ (Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π±Π΅Π· ΠΏΠ°Ρ€ΠΎΠ»Π° слСд ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ удостовСряванС)
15По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΏΡ€ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ дистрибуции
60Π Π°Π·ΡƒΠΌΠ½ΠΎ Π·Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ административни сСсии

Π‘Ρ‚ΡŠΠΏΠΊΠ° 3: Π—Π°ΠΏΠ°Π·Π΅Ρ‚Π΅ ΠΈ ΠΈΠ·Π»Π΅Π·Ρ‚Π΅.

Π—Π° Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚Π΅ замяна Π½Π° ΠΈΠ·Ρ‚ΠΈΡ‡Π°Π½Π΅Ρ‚ΠΎ само Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», Π° Π½Π΅ Π·Π° цялата систСма:

Defaults:username    timestamp_timeout=60

ΠœΠ΅Ρ‚ΠΎΠ΄ 5: ИзползванС Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ Ρ„Π°ΠΉΠ» sudoers (Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π·Π° производство)

ВмСсто Π΄Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Ρ‚Π΅ /etc/sudoers Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ, ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ Ρ„Π°ΠΉΠ». Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π΅ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π΅Π½, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ Π½Π° ΠΎΠ΄ΠΈΡ‚ ΠΈ бСзопасСн Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‡Ρ€Π΅Π· инструмСнти Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ Ansible, Puppet ΠΈΠ»ΠΈ Chef.

sudo visudo -f /etc/sudoers.d/deploy_nopasswd

Π’ΡŠΡ‚Ρ€Π΅ Π² Ρ„Π°ΠΉΠ»Π°:

# Allow the deploy user to restart services without a password
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart myapp

Π—Π°Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

sudo chmod 0440 /etc/sudoers.d/deploy_nopasswd

ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ конфигурацията Π½Π° sudoers Π΅ Π²Π°Π»ΠΈΠ΄Π½Π° Π·Π° всички Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅:

sudo visudo -c
# sudoers file: /etc/sudoers, parsed OK
# sudoers file: /etc/sudoers.d/deploy_nopasswd, parsed OK

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π° всички ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ

ΠœΠ΅Ρ‚ΠΎΠ΄ΠžΠ±Ρ…Π²Π°Ρ‚Π˜Π·ΠΈΡΠΊΠ²Π° ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ удостовСряванСРиск Π·Π° сигурносттаНай-Π΄ΠΎΠ±ΡŠΡ€ случай Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°
sudo -S със stdinΠ•Π΄ΠΈΠ½ΠΈΡ‡Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Π”Π° (Ρ‡Ρ€Π΅Π· Ρ‚Ρ€ΡŠΠ±Π°)Висок ΠΏΡ€ΠΈ Ρ‚Π²ΡŠΡ€Π΄ΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅CI/CD с ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π½Π° Ρ‚Π°ΠΉΠ½ΠΈ
NOPASSWD: ALLВсички ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Π΅Π΄ΠΈΠ½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΠ΅ΠœΠ½ΠΎΠ³ΠΎ Π²ΠΈΡΠΎΠΊΠ˜Π·ΠΎΠ»ΠΈΡ€Π°Π½ΠΈ Π°ΠΊΠ°ΡƒΠ½Ρ‚ΠΈ Π·Π° автоматизация
NOPASSWD: /path/cmdΠ‘Π°ΠΌΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ командиНСНисък-ΡΡ€Π΅Π΄Π΅Π½Π’Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈ Π·Π° внСдряванС, скриптовС
Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ Π½Π° timestamp_timeoutВсички ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π”Π° (вСднъТ)ΠΠΈΡΡŠΠΊΠ˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ административни сСсии
Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ Ρ„Π°ΠΉΠ» /etc/sudoers.d/ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΠ—Π°Π²ΠΈΡΠΈ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚Π²ΠΎ, ΡΡŠΡ€Π²ΡŠΡ€ΠΈ управлявани Ρ‡Ρ€Π΅Π· IaC

Π‘ΡŠΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ Π·Π° ΡƒΠΊΡ€Π΅ΠΏΠ²Π°Π½Π΅ Π½Π° сигурността

Π”Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ΄ΠΊΠ°Π½ΠΈΡ‚Π΅ Π·Π° ΠΏΠ°Ρ€ΠΎΠ»Π° Π½Π° sudo въвСТда Ρ€Π΅Π°Π»Π½Π° ΠΏΠΎΠ²ΡŠΡ€Ρ…Π½ΠΎΡΡ‚ Π·Π° Π°Ρ‚Π°ΠΊΠ°. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Ρ‚Π΅ слСднитС ΠΌΠ΅Ρ€ΠΊΠΈ Π·Π° смСкчаванС:

  • ΠžΠ΄ΠΈΡ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° sudo: АктивирайтС рСгистриранСто Π½Π° sudo, ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Defaults logfile="/var/log/sudo.log" към Π²Π°ΡˆΠ°Ρ‚Π° конфигурация Π½Π° sudoers. ΠŸΡ€Π΅Π³Π»Π΅ΠΆΠ΄Π°ΠΉΡ‚Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΆΡƒΡ€Π½Π°Π» Ρ€Π΅Π΄ΠΎΠ²Π½ΠΎ.
  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Ρ‚Π΅ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚: NOPASSWD: /usr/bin/systemctl restart nginx Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-бСзопасно ΠΎΡ‚ NOPASSWD: /usr/bin/systemctl β€” послСдното позволява Π½Π° потрСбитСля Π΄Π° спира, Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° ΠΈΠ»ΠΈ маскира всяка услуга.
  • Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ спСциализирани сСрвизни Π°ΠΊΠ°ΡƒΠ½Ρ‚ΠΈ: Никога Π½Π΅ ΠΏΡ€ΠΈΠ»Π°Π³Π°ΠΉΡ‚Π΅ NOPASSWD: ALL към основния Π°ΠΊΠ°ΡƒΠ½Ρ‚ Π½Π° Ρ‡ΠΎΠ²Π΅ΡˆΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ Π°ΠΊΠ°ΡƒΠ½Ρ‚ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° Ρ†Π΅Π» (Π½Π°ΠΏΡ€. deploy, monitor) с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ списък с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ.
  • ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°ΠΉΡ‚Π΅ с удостовСряванС само Ρ‡Ρ€Π΅Π· SSH ΠΊΠ»ΡŽΡ‡: Ако Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ passwordless sudo, ΡƒΠ²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ самият SSH Π΄ΠΎΡΡ‚ΡŠΠΏ изисква удостовСряванС с ΠΊΠ»ΡŽΡ‡. Π•Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΡ‚ΠΎ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° SSH ΠΏΠ°Ρ€ΠΎΠ»ΠΈ ΠΈ sudo ΠΏΠ°Ρ€ΠΎΠ»ΠΈ Π½Π° ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ ΡΡŠΡ€Π²ΡŠΡ€ Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° Π³Ρ€Π΅ΡˆΠ½Π° конфигурация.
  • Π ΠΎΡ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΈ ΠΏΡ€Π΅Π³Π»Π΅ΠΆΠ΄Π°ΠΉΡ‚Π΅: ΠŸΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ ΠΎΠ΄ΠΈΡ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ /etc/sudoers.d/ Π·Π° остарСли ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΈ Π°ΠΊΠ°ΡƒΠ½Ρ‚ΠΈ ΠΈΠ»ΠΈ остарСли скриптовС.

На Dedicated ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΈΠΌΠ°Ρ‚Π΅ пълСн Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π΅Π½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ», Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ°Ρ‚ ΠΎΡ‰Π΅ ΠΏΠΎ-голямо Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚ΠΈΡ€Π°Π½ Π°ΠΊΠ°ΡƒΠ½Ρ‚ с passwordless sudo Π½Π° dedicated машина ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° пълСн, нСоспорСн root Π΄ΠΎΡΡ‚ΡŠΠΏ Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π½ΠΈΠ²ΠΎ Ρ…ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° конфигурация

Π‘Π»Π΅Π΄ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, Π²ΠΈΠ½Π°Π³ΠΈ тСствайтС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ ΠΊΠ°Ρ‚ΠΎ цСлСвия ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», Π±Π΅Π· Π΄Π° ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚Π΅ към root:

# Switch to the target user
su - username

# Test a specific command
sudo /usr/bin/systemctl restart nginx

# Verify sudo privileges without executing a command
sudo -l

sudo -l изброява всички ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ тСкущият ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» ΠΈΠΌΠ° ΠΏΡ€Π°Π²ΠΎ Π΄Π° изпълнява, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΊΠΎΠΈ са NOPASSWD. Π’ΠΎΠ²Π° Π΅ основният Π²ΠΈ инструмСнт Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄Π°Π΄Π΅Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π½Π΅ сС Π΄ΡŠΡ€ΠΆΠΈ ΠΏΠΎ очаквания Π½Π°Ρ‡ΠΈΠ½.

Π—Π° Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π° sudoers Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» ΠΎΡ‚ root сСсия:

sudo -l -U username

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠ° конфигурация Π·Π° Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ Π·Π° внСдряванС Π½Π° ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€

По-Π΄ΠΎΠ»Ρƒ Π΅ прСдставСна пълна, Π³ΠΎΡ‚ΠΎΠ²Π° Π·Π° производство конфигурация Π·Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π·Π° внСдряванС Π½Π° ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ β€” Π²ΠΈΠ΄Π° настройка, която Π±ΠΈΡ…Ρ‚Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ Π½Π° VPS с cPanel ΠΈΠ»ΠΈ пСрсонализиран LEMP/LAMP стСк:

1. Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ потрСбитСля Π·Π° внСдряванС:

sudo useradd -m -s /bin/bash deploy
sudo passwd deploy

2. Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎΡ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ sudoers:

sudo visudo -f /etc/sudoers.d/deploy
# Deployment pipeline: passwordless service management only
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart php8.2-fpm
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl reload nginx
deploy ALL=(ALL) NOPASSWD: /usr/bin/chown -R www-data /var/www/html

3. Π—Π°Π΄Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π°ΠΉΡ‚Π΅:

sudo chmod 0440 /etc/sudoers.d/deploy
sudo visudo -c

4. ВСствайтС ΠΊΠ°Ρ‚ΠΎ потрСбитСля Π·Π° внСдряванС:

su - deploy
sudo systemctl restart nginx
# Should execute without a password prompt

Π’ΠΎΠ·ΠΈ ΠΌΠΎΠ΄Π΅Π» Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ към всСки Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ процСс Π·Π° внСдряванС, нСзависимо Π΄Π°Π»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ GitHub Actions, GitLab CI, Jenkins ΠΈΠ»ΠΈ пСрсонализиран шСл скрипт, задСйстван Ρ‡Ρ€Π΅Π· SSH.

Ако Π²Π°ΡˆΠ°Ρ‚Π° инфраструктура Π²ΠΊΠ»ΡŽΡ‡Π²Π° управлявани VPS ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ, ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ собствСният систСмСн ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π½Π° ΠΏΠ°Π½Π΅Π»Π° (Π½Π°ΠΏΡ€. cpanel, plesk) Π½Π΅ Π΅ Π½Π΅ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΎ засСгнат ΠΎΡ‚ ΡˆΠΈΡ€ΠΎΠΊΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° NOPASSWD: ALL, ΠΊΠΎΠΈΡ‚ΠΎ добавятС към sudoers.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ списък с ΠΊΠ»ΡŽΡ‡ΠΎΠ²ΠΈ ΠΈΠ·Π²ΠΎΠ΄ΠΈ

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠ²Π°Ρ‚ΠΎ ΠΈ Π΄Π° Π΅ конфигурация Π½Π° passwordless sudo, ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ ΠΏΡ€Π΅Π· Ρ‚Π°Π·ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Π·Π° Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

  • Π’ΠΎΠ²Π° Π°ΠΊΠ°ΡƒΠ½Ρ‚ Π½Π° Ρ‡ΠΎΠ²Π΅ΠΊ Π»ΠΈ Π΅ ΠΈΠ»ΠΈ сСрвизСн Π°ΠΊΠ°ΡƒΠ½Ρ‚? Π‘Π΅Ρ€Π²ΠΈΠ·Π½ΠΈΡ‚Π΅ Π°ΠΊΠ°ΡƒΠ½Ρ‚ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° понСсат NOPASSWD; Ρ‡ΠΎΠ²Π΅ΡˆΠΊΠΈΡ‚Π΅ Π°ΠΊΠ°ΡƒΠ½Ρ‚ΠΈ трябва Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ Π½Π° timestamp_timeout вмСсто Ρ‚ΠΎΠ²Π°.
  • ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π΄Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ? Π’ΠΈΠ½Π°Π³ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ NOPASSWD: /path/to/command ΠΏΡ€Π΅Π΄ NOPASSWD: ALL.
  • ΠžΡΠΈΠ³ΡƒΡ€Π΅Π½ Π»ΠΈ Π΅ SSH Π΄ΠΎΡΡ‚ΡŠΠΏΡŠΡ‚ с удостовСряванС с ΠΊΠ»ΡŽΡ‡? Ако Π½Π΅, ΠΏΠΎΠΏΡ€Π°Π²Π΅Ρ‚Π΅ Ρ‚ΠΎΠ²Π° ΠΏΡŠΡ€Π²ΠΎ, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° ΠΎΠ±Π»Π΅ΠΊΡ‡ΠΈΡ‚Π΅ изискванията Π·Π° sudo.
  • РСгистрира Π»ΠΈ сС активността Π½Π° sudo? Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ Defaults logfile="/var/log/sudo.log", Π°ΠΊΠΎ всС ΠΎΡ‰Π΅ Π½Π΅ Π΅ Π½Π°Π»ΠΈΡ‡Π½ΠΎ.
  • Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π»ΠΈ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² /etc/sudoers.d/? ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚ΠΎΠ²Π° ΠΏΡ€Π΅Π΄ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎΡ‚ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° /etc/sudoers Π·Π° ΠΏΠΎ-лСсна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°.
  • Изпълнили Π»ΠΈ стС sudo visudo -c Π·Π° Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π° синтаксиса? Никога Π½Π΅ пропускайтС Ρ‚Π°Π·ΠΈ ΡΡ‚ΡŠΠΏΠΊΠ° β€” синтактична Π³Ρ€Π΅ΡˆΠΊΠ° Π² sudoers ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈ изцяло ΠΎΡ‚ административния Π΄ΠΎΡΡ‚ΡŠΠΏ.
  • Π˜ΠΌΠ°Ρ‚Π΅ Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ извън ΠΎΠ±Ρ…Π²Π°Ρ‚Π°? ΠŸΡ€ΠΈ ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ VPS инстанции, ΡƒΠ²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΊΠΎΠ½Π·ΠΎΠ»Π° ΠΈΠ»ΠΈ снимка Π·Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² sudoers.

Π§Π—Π’

Какъв Π΅ Π½Π°ΠΉ-бСзопасният Π½Π°Ρ‡ΠΈΠ½ Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ passwordless sudo Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ скрипт?

Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΎΠ±Π²ΠΈΠ²Π°Ρ‰ скрипт с фиксиран Π°Π±ΡΠΎΠ»ΡŽΡ‚Π΅Π½ ΠΏΡŠΡ‚, поставСтС Π³ΠΎ Π² систСмна дирСктория (Π½Π°ΠΏΡ€. /usr/local/bin/deploy-restart.sh) ΠΈ прСдоставСтС NOPASSWD само Π·Π° Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ ΠΏΡŠΡ‚ Π² /etc/sudoers.d/. Π’ΠΎΠ²Π° прСдотвратява ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π° Ρ‰Π΅Ρ‚ΠΈΡ‚Π΅, Π°ΠΊΠΎ Π°ΠΊΠ°ΡƒΠ½Ρ‚ΡŠΡ‚ бъдС ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚ΠΈΡ€Π°Π½.

Π”Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ΄ΠΊΠ°Π½Π°Ρ‚Π° Π·Π° ΠΏΠ°Ρ€ΠΎΠ»Π° Π½Π° sudo Ρ‰Π΅ засСгнС Π»ΠΈ всички Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π½ΠΈ сСсии Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ?

Π”Π°. ΠŸΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² /etc/sudoers ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ Π² /etc/sudoers.d/ Π²Π»ΠΈΠ·Π°Ρ‚ Π² сила Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π·Π° всички Π½ΠΎΠ²ΠΈ извиквания Π½Π° sudo. НС Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° рСстартиратС никоя услуга ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·Π»ΠΈΠ·Π°Ρ‚Π΅ ΠΎΡ‚ систСмата. Π‘ΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ‚Π΅ ΠΊΠ΅ΡˆΠΈΡ€Π°Π½ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π΅ сС засягат Π΄ΠΎ ΠΈΠ·Ρ‚ΠΈΡ‡Π°Π½Π΅Ρ‚ΠΎ ΠΈΠΌ.

Какво сС случва, Π°ΠΊΠΎ направя синтактична Π³Ρ€Π΅ΡˆΠΊΠ° Π² Ρ„Π°ΠΉΠ»Π° sudoers?

Ако стС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ visudo, Ρ‚ΠΎΠΉ Ρ‰Π΅ ΡƒΠ»ΠΎΠ²ΠΈ Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° ΠΏΡ€Π΅Π΄ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ ΠΈ Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠ΄ΠΊΠ°Π½ΠΈ Π΄Π° я ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ‚Π΅. Ако ΠΏΠΎ някакъв Π½Π°Ρ‡ΠΈΠ½ стС Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈΠ»ΠΈ visudo ΠΈ стС въвСли синтактична Π³Ρ€Π΅ΡˆΠΊΠ°, sudo Ρ‰Π΅ ΠΎΡ‚ΠΊΠ°ΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ изцяло. Π’ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅Ρ‚ΠΎ изисква Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌ Π·Π° Π΅Π΄ΠΈΠ½ΠΈΡ‡Π΅Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΊΠΎΠ½Π·ΠΎΠ»Π° извън ΠΎΠ±Ρ…Π²Π°Ρ‚Π° Π·Π° ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ„Π°ΠΉΠ»Π°.

Мога Π»ΠΈ Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ° NOPASSWD към Π³Ρ€ΡƒΠΏΠ° вмСсто към ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»?

Π”Π°. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ синтаксиса %groupname: %developers ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx. Π’ΠΎΠ²Π° ΠΏΡ€ΠΈΠ»Π°Π³Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ към всички Ρ‡Π»Π΅Π½ΠΎΠ²Π΅ Π½Π° Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° developers, ΠΊΠΎΠ΅Ρ‚ΠΎ улСснява ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π² ΠΌΠ°Ρ‰Π°Π±, Π±Π΅Π· Π΄Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Ρ‚Π΅ sudoers Π·Π° всСки Π½ΠΎΠ² Ρ‡Π»Π΅Π½ Π½Π° Π΅ΠΊΠΈΠΏΠ°.

Π”ΡŠΡ€ΠΆΠΈ Π»ΠΈ сС timestamp_timeout=-1 ΠΏΠΎ ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½ ΠΊΠ°Ρ‚ΠΎ NOPASSWD: ALL?

НС. timestamp_timeout=-1 ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ ΠΈΠ·Ρ‚ΠΈΡ‡Π°Ρ‚ слСд ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ удостовСряванС β€” Π½ΠΎ Ρ‚ΠΎΠ²Π° ΠΏΡŠΡ€Π²ΠΎ удостовСряванС всС ΠΎΡ‰Π΅ изисква ΠΏΠ°Ρ€ΠΎΠ»Π°. NOPASSWD: ALL пропуска удостовСряванСто изцяло, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ самото ΠΏΡŠΡ€Π²ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅. ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-бСзопасно Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ.