ΠΠ°ΠΊ Π΄Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ ΠΈΡΠΊΠ°Π½Π΅ΡΠΎ Π·Π° ΠΏΠ°ΡΠΎΠ»Π° Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° 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 -lsudo -l ΠΈΠ·Π±ΡΠΎΡΠ²Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ΠΊΡΡΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» ΠΈΠΌΠ° ΠΏΡΠ°Π²ΠΎ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΊΠΎΠΈ ΡΠ° NOPASSWD. Π’ΠΎΠ²Π° Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΡ Π²ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π΄Π°Π΄Π΅Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π½Π΅ ΡΠ΅ Π΄ΡΡΠΆΠΈ ΠΏΠΎ ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΈΡ Π½Π°ΡΠΈΠ½.
ΠΠ° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π½Π° sudoers Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» ΠΎΡ root ΡΠ΅ΡΠΈΡ:
sudo -l -U usernameΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π·Π° ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π± ΡΡΡΠ²ΡΡ
ΠΠΎ-Π΄ΠΎΠ»Ρ Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½Π° ΠΏΡΠ»Π½Π°, Π³ΠΎΡΠΎΠ²Π° Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π± ΡΡΡΠ²ΡΡ β Π²ΠΈΠ΄Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ°, ΠΊΠΎΡΡΠΎ Π±ΠΈΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ Π½Π° VPS Ρ cPanel ΠΈΠ»ΠΈ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ LEMP/LAMP ΡΡΠ΅ΠΊ:
1. Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅:
sudo useradd -m -s /bin/bash deploy
sudo passwd deploy2. Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ 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/html3. ΠΠ°Π΄Π°ΠΉΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ Π²Π°Π»ΠΈΠ΄ΠΈΡΠ°ΠΉΡΠ΅:
sudo chmod 0440 /etc/sudoers.d/deploy
sudo visudo -c4. Π’Π΅ΡΡΠ²Π°ΠΉΡΠ΅ ΠΊΠ°ΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅:
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 ΠΏΡΠΎΠΏΡΡΠΊΠ° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ΡΠΎ ΠΈΠ·ΡΡΠ»ΠΎ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°ΠΌΠΎΡΠΎ ΠΏΡΡΠ²ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅. ΠΡΡΠ²ΠΎΡΠΎ Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ.
ΠΎΡ Π²ΡΠΈΡΠΊΠΈ Ρ
ΠΎΡΡΠΈΠ½Π³ ΡΡΠ»ΡΠ³ΠΈ