ΠΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ»ΠΎΠΆΠΈΠ»ΠΎΡΡ, ΡΡΠΎ sudo ΠΏΡΠ°Π²Π° ΡΠ΅Π³ΡΠ»ΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· /etc/sudoers.d ΠΈ visudo, Π° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎ ΠΊΠ»ΡΡΠ°ΠΌ Π²Π΅Π»Π°ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ~/.ssh/authorized_keys. ΠΠ΄Π½Π°ΠΊΠΎ Ρ ΡΠΎΡΡΠΎΠΌ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΠΈΠΌΠΈ ΠΏΡΠ°Π²Π°ΠΌΠΈ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎ. ΠΠ° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ Π΄Π΅Π½Ρ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ:
- Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ β Chef, Puppet, Ansible, Salt
- Active Directory + sssd
- Π Π°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠ΅ ΠΈΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π² Π²ΠΈΠ΄Π΅ ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΈ ΡΡΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΠ° ΠΌΠΎΠΉ ΡΡΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π²Π·Π³Π»ΡΠ΄, ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΡΠ²ΡΠ·ΠΊΠ° Active Directory + sssd. ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π²ΠΎΡ Π² ΡΠ΅ΠΌ:
- ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΠ΄ΠΈΠ½ΡΠΉ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
- Π Π°Π·Π΄Π°ΡΠ° ΠΏΡΠ°Π² sudo ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π³ΡΡΠΏΠΏΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
- Π ΡΠ»ΡΡΠ°Π΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Linux-ΡΠΈΡΡΠ΅ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π²Π²ΠΎΠ΄ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΠ‘ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
Π‘Π΅Π³ΠΎΠ΄Π½ΡΡΠ½ΡΡ ΡΡΠΈΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ²ΡΠ·ΠΊΠ΅ Active Directory + sssd Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠ°Π²Π°ΠΌΠΈ sudo ΠΈ Ρ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ ssh ΠΊΠ»ΡΡΠ΅ΠΉ Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ.
ΠΡΠ°ΠΊ, Π·Π°Π» Π·Π°ΡΡΡΠ» Π² Π½Π°ΠΏΡΡΠΆΠ΅Π½Π½ΠΎΠΌ ΠΌΠΎΠ»ΡΠ°Π½ΠΈΠΈ, Π΄ΠΈΡΠΈΠΆΠ΅Ρ ΠΏΠΎΠ΄Π½ΡΠ» ΠΏΠ°Π»ΠΎΡΠΊΡ, ΠΎΡΠΊΠ΅ΡΡΡ ΠΏΡΠΈΠ³ΠΎΡΠΎΠ²ΠΈΠ»ΡΡ.
ΠΠΎΠ΅Ρ
Π°Π»ΠΈ.
ΠΠ°Π½ΠΎ:
β ΠΠΎΠΌΠ΅Π½ Active Directory testopf.local Π½Π° Windows Server 2012 R2.
β Linux Ρ
ΠΎΡΡ ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Centos 7
β ΠΠ°ΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ sssd
ΠΠ±Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ Π²Π½ΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΡ
Π΅ΠΌΡ Active Directory, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π²ΡΠ΅ Π½Π° ΡΠ΅ΡΡΠΎΠ²ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΌ Π²Π½ΠΎΡΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°Π±ΠΎΡΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ. Π₯ΠΎΡΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ β Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΡΠ΅ΡΠ½ΡΠ΅ ΠΈ, ΠΏΠΎ ΡΡΡΠΈ, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π»ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈ ΠΊΠ»Π°ΡΡΡ.
ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ 1: ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ sudo ΡΠΎΠ»ΡΠΌΠΈ ΡΠ΅ΡΠ΅Π· Active Directory.
ΠΠ»Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΡ
Π΅ΠΌΡ Active Directory Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°ΡΠ°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ΅Π»ΠΈΠ·
ldifde -i -f schema.ActiveDirectory -c dc=X dc=testopf,dc=local
(ΠΠ΅ Π·Π°Π±ΡΠ²Π°Π΅ΠΌ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠ²ΠΎΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ)
ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ adsiedit.msc ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ ΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ:
Π ΠΊΠΎΡΠ½Π΅ Π΄ΠΎΠΌΠ΅Π½Π° ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ sudoers. (ΠΡΡΠΆΡΠΈΠ½Ρ ΡΠΏΠΎΡΠ½ΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΡΡΠΎΠΌ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π΄Π΅ΠΌΠΎΠ½ sssd ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΏΠΎΠΈΡΠΊ Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ sudoRole ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΠΎΡΠ»Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π΄Π΅Π±Π°Π³Π° ΠΈ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Π»ΠΎΠ³ΠΎΠ², Π±ΡΠ»ΠΎ Π²ΡΡΠ²Π»Π΅Π½ΠΎ, ΡΡΠΎ ΠΏΠΎΠΈΡΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ Π΄Π΅ΡΠ΅Π²Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°.)
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π² ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠΉ ΠΊΠ»Π°ΡΡΡ sudoRole. ΠΠΌΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ±ΡΠ°Π½ΠΎ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ»ΡΠΆΠΈΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ.
Π‘ΡΠ΅Π΄ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΈΠ· ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΡ
Π΅ΠΌΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
- sudoCommand β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Ρ ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π° Ρ ΠΎΡΡΠ΅.
- sudoHost β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΄Π»Ρ ΠΊΠ°ΠΊΠΈΡ Ρ ΠΎΡΡΠΎΠ² ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π°Π½Π½Π°Ρ ΡΠΎΠ»Ρ. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π΄Π°Π½ΠΎ ΠΊΠ°ΠΊ ALL, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Ρ ΠΎΡΡΠ° ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ. Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΠΊΠΈ.
- sudoUser β ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ, ΠΊΠ°ΠΊΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ sudo.
Π ΡΠ»ΡΡΠ°Π΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π³ΡΡΠΏΠΏΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π² Π½Π°ΡΠ°Π»Π΅ ΠΈΠΌΠ΅Π½ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π·Π½Π°ΠΊ β%β. ΠΡΠ»ΠΈ Π² ΠΈΠΌΠ΅Π½ΠΈ Π³ΡΡΠΏΠΏΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ ΠΏΡΠΎΠ±Π΅Π»Ρ, Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ Π½Π΅ ΠΎ ΡΠ΅ΠΌ. Π‘ΡΠ΄Ρ ΠΏΠΎ Π»ΠΎΠ³Π°ΠΌ, Π·Π°Π΄Π°ΡΡ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² Π±Π΅ΡΠ΅Ρ Π½Π° ΡΠ΅Π±Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ sssd.
ΡΠΈΡ 1. ΠΠ±ΡΠ΅ΠΊΡΡ sudoRole Π² ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ sudoers Π² ΠΊΠΎΡΠ½Π΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°
ΡΠΈΡ 2. Π§Π»Π΅Π½ΡΡΠ²ΠΎ Π² Π³ΡΡΠΏΠΏΠ°Ρ
Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΡΠΊΠ°Π·Π°Π½Π½ΡΡ
Π² sudoRole-ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ
.
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ Linux.
Π ΡΠ°ΠΉΠ»Π΅ /etc/nsswitch.conf Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² ΠΊΠΎΠ½Π΅Ρ ΡΠ°ΠΉΠ»Π° ΡΡΡΠΎΠΊΡ:
sudoers: files sss
Π ΡΠ°ΠΉΠ»Π΅ /etc/sssd/sssd.conf Π² ΡΠ΅ΠΊΡΠΈΠΈ [sssd] Π² ΡΠ΅ΡΠ²ΠΈΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ sudo
cat /etc/sssd/sssd.conf | grep services
services = nss, pam, sudo
ΠΠΎΡΠ»Π΅ Π²ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΈΡΡΠΈΡΡ ΠΊΡΡ sssd Π΄Π΅ΠΌΠΎΠ½Π°. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ°Π· Π² 6 ΡΠ°ΡΠΎΠ², Π½ΠΎ Π·Π°ΡΠ΅ΠΌ Π½Π°ΠΌ ΡΡΠΎΠ»ΡΠΊΠΎ ΠΆΠ΄Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ.
sss_cache -E
Π§Π°ΡΡΠ΅Π½ΡΠΊΠΎ ΡΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ°ΠΊ, ΡΡΠΎ ΠΎΡΠΈΡΡΠΊΠ° ΠΊΡΡΠ° Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ. Π’ΠΎΠ³Π΄Π° ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ΅ΡΠ²ΠΈΡ, ΡΠΈΡΡΠΈΠΌ Π±Π°Π·Ρ, ΡΡΠ°ΡΡΡΠ΅ΠΌ ΡΠ΅ΡΠ²ΠΈΡ.
service sssd stop
rm -rf /var/lib/sss/db/*
service sssd start
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ ΠΏΠΎΠ΄ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΡΠΎ Π΅ΠΌΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΠΈΠ·-ΠΏΠΎΠ΄ sudo:
su user1
[user1@testsshad log]$ id
uid=1109801141(user1) gid=1109800513(domain users) groups=1109800513(domain users),1109801132(admins_)
[user1@testsshad log]$ sudo -l
[sudo] password for user1:
Matching Defaults entries for user1 on testsshad:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin:/bin:/usr/sbin:/usr/bin
User user1 may run the following commands on testsshad:
(root) /usr/bin/ls, /usr/bin/cat
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΏΡΠΎΠ΄Π΅Π»ΡΠ²Π°Π΅ΠΌ ΡΠΎ Π²ΡΠΎΡΡΠΌ Π½Π°ΡΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ:
su user2
[user2@testsshad log]$ id
uid=1109801142(user2) gid=1109800513(domain users) groups=1109800513(domain users),1109801138(sudo_root)
[user2@testsshad log]$ sudo -l
Matching Defaults entries for user2 on testsshad:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin:/bin:/usr/sbin:/usr/bin
User user2 may run the following commands on testsshad:
(root) ALL
ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠΎΠ»ΠΈ sudo Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π³ΡΡΠΏΠΏ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ssh ΠΊΠ»ΡΡΠ΅ΠΉ Π² Active Directory
ΠΡΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΈ ΡΡ Π΅ΠΌΡ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Ρ ΡΠ°Π½ΠΈΡΡ ΠΊΠ»ΡΡΠΈ ssh Π² Π°ΡΡΠΈΠ±ΡΡΠ°Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Active Directory ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ ΠΏΡΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Π½Π° Linux Ρ ΠΎΡΡΠ°Ρ .
ΠΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π½Π°ΡΡΡΠΎΠ΅Π½Π° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· sssd.
ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ PowerShell ΡΠΊΡΠΈΠΏΡΠ°.
AddsshPublicKeyAttribute.ps1Function New-AttributeID {
$Prefix=Β«1.2.840.113556.1.8000.2554Β»
$GUID=[System.Guid]::NewGuid().ToString()
$Parts=@()
$Parts+=[UInt64]::Parse($guid.SubString(0,4),Β«AllowHexSpecifierΒ»)
$Parts+=[UInt64]::Parse($guid.SubString(4,4),Β«AllowHexSpecifierΒ»)
$Parts+=[UInt64]::Parse($guid.SubString(9,4),Β«AllowHexSpecifierΒ»)
$Parts+=[UInt64]::Parse($guid.SubString(14,4),Β«AllowHexSpecifierΒ»)
$Parts+=[UInt64]::Parse($guid.SubString(19,4),Β«AllowHexSpecifierΒ»)
$Parts+=[UInt64]::Parse($guid.SubString(24,6),Β«AllowHexSpecifierΒ»)
$Parts+=[UInt64]::Parse($guid.SubString(30,6),Β«AllowHexSpecifierΒ»)
$oid=[String]::Format(«{0}.{1}.{2}.{3}.{4}.{5}.{6}.{7}»,$prefix,$Parts[0],
$Parts[1],$Parts[2],$Parts[3],$Parts[4],$Parts[5],$Parts[6])
$oid
}
$schemaPath = (Get-ADRootDSE).schemaNamingContext
$oid = New-AttributeID
$attributes = @{
lDAPDisplayName = ‘sshPublicKey’;
attributeId = $oid;
oMSyntax = 22;
attributeSyntax = Β«2.5.5.5Β»;
isSingleValued = $true;
adminDescription = ‘User Public key for SSH login’;
}
New-ADObject -Name sshPublicKey -Type attributeSchema -Path $schemapath -OtherAttributes $attributes
$userSchema = get-adobject -SearchBase $schemapath -Filter ‘name -eq Β«userΒ»’
$userSchema | Set-ADObject -Add @{mayContain = ‘sshPublicKey’}
ΠΠΎΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠ° Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ»ΡΠΆΠ±Ρ Active Directory Domain Services.
ΠΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Active Directory. ΠΡΠ±ΡΠΌ ΡΠ΄ΠΎΠ±Π½ΡΠΌ Π΄Π»Ρ ΠΠ°Ρ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ ΠΏΠ°ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π΄Π»Ρ ssh ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ PuttyGen, Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΎΡΠΊΡ Β«GenerateΒ» ΠΈ ΡΡΠ΄ΠΎΡΠΎΠΆΠ½ΠΎ Π΅Π»ΠΎΠ·ΠΈΠΌ ΠΌΡΡΡΡ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ
ΠΏΡΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ.
ΠΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΈ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠΈ, Π·Π°Π»ΠΈΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π² Π°ΡΡΠΈΠ±ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Active Directory ΠΈ Π½Π°ΡΠ»Π°ΠΆΠ΄Π°ΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ· ΠΎΠΊΠ½Π° «Public key for pasting into OpenSSH authorized_keys file:«.
ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊΠ»ΡΡ Π² Π°ΡΡΠΈΠ±ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠ°ΡΠΈΠ°Π½Ρ 1 β GUI:
ΠΠ°ΡΠΈΠ°Π½Ρ 2 β PowerShell:
get-aduser user1 | set-aduser -add @{sshPublicKey = 'AAAAB...XAVnX9ZRJJ0p/Q=='}
ΠΡΠ°ΠΊ, ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ: ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠΌ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ sshPublicKey, Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ Putty Π΄Π»Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎ ΠΊΠ»ΡΡΠ°ΠΌ. ΠΡΡΠ°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠ°ΠΊ ΠΆΠ΅ Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π΄Π΅ΠΌΠΎΠ½ sshd Π²ΡΡΡΠ³ΠΈΠ²Π°ΡΡ Π½ΡΠΆΠ½ΡΠΉ Π½Π°ΠΌ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΠΈΠ· Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π‘ ΡΡΠΈΠΌ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΊΡΠΈΠΏΡ, Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠΉ Π½Π° ΠΏΡΠΎΡΡΠΎΡΠ°Ρ
Π±ΡΡΠΆΡΠΉΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°.
cat /usr/local/bin/fetchSSHKeysFromLDAP
#!/bin/sh
ldapsearch -h testmdt.testopf.local -xb "dc=testopf,dc=local" '(sAMAccountName='"${1%@*}"')' -D [email protected] -w superSecretPassword 'sshPublicKey' | sed -n '/^ /{H;d};/sshPublicKey:/x;$g;s/n *//g;s/sshPublicKey: //gp'
ΠΡΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π½Π° Π½Π΅Π³ΠΎ ΠΏΡΠ°Π²Π° 0500 Π΄Π»Ρ root.
chmod 0500 /usr/local/bin/fetchSSHKeysFromLDAP
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ Π±ΠΈΠ½Π΄Π° ΠΊ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ΅ΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°. Π Π±ΠΎΠ΅Π²ΡΡ
ΡΡΠ»ΠΎΠ²ΠΈΡΡ
Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΡΠ΅ΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΏΡΠ°Π².
ΠΠ΅Π½Ρ Π»ΠΈΡΠ½ΠΎ ΠΎΡΠ΅Π½Ρ ΡΠΌΡΡΠ°Π» ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠ°ΡΠΎΠ»Ρ Π² ΡΠΈΡΡΠΎΠΌ Π²ΠΈΠ΄Π΅ Π² ΡΠΊΡΠΈΠΏΡΠ΅, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° Π²ΡΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠ°Π²Π°.
ΠΠ°ΡΠΈΠ°Π½Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ:
- Π‘ΠΎΡ
ΡΠ°Π½ΡΡ ΠΏΠ°ΡΠΎΠ»Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ»:
echo -n Supersecretpassword > /usr/local/etc/secretpass
- ΠΡΡΡΠ°Π²Π»ΡΡ ΠΏΡΠ°Π²Π° Π½Π° ΡΠ°ΠΉΠ» 0500 Π΄Π»Ρ root
chmod 0500 /usr/local/etc/secretpass
- ΠΠ΅Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°ΠΏΡΡΠΊΠ° ldapsearch: ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ -w superSecretPassword ΠΌΠ΅Π½ΡΡ Π½Π° -y /usr/local/etc/secretpass
Π€ΠΈΠ½Π°Π»ΡΠ½ΡΠΌ Π°ΠΊΠΊΠΎΡΠ΄ΠΎΠΌ Π² ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½Π΅ΠΉ ΡΡΠΈΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌ sshd_config
cat /etc/ssh/sshd_config | egrep -v -E "#|^$" | grep -E "AuthorizedKeysCommand|PubkeyAuthe"
PubkeyAuthentication yes
AuthorizedKeysCommand /usr/local/bin/fetchSSHKeysFromLDAP
AuthorizedKeysCommandUser root
ΠΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈ Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎ ΠΊΠ»ΡΡΠ°ΠΌ Π² ssh ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅:
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ, ΡΠΊΠ°Π·ΡΠ²Π°Ρ ΡΠ²ΠΎΠΉ Π»ΠΎΠ³ΠΈΠ½.
- ΠΠ΅ΠΌΠΎΠ½ sshd ΡΠ΅ΡΠ΅Π· ΡΠΊΡΠΈΠΏΡ Π²ΡΡΡΠ³ΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΠΈΠ· Π°ΡΡΠΈΠ±ΡΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Active Directory ΠΈ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎ ΠΊΠ»ΡΡΠ°ΠΌ.
- ΠΠ΅ΠΌΠΎΠ½ sssd ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΠΈ ΠΊ Π³ΡΡΠΏΠΏΠ΅. ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅! ΠΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ²Π°Ρ Π½Π΅ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½Π°, ΡΠΎ Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠΌΠ΅Π½Π° Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Ρ ΠΎΡΡΡ.
- ΠΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ sudo ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΠΈΡΠΊ Π΄Π΅ΠΌΠΎΠ½ΠΎΠΌ sssd Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Active Directory Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΡΠΎΠ»Π΅ΠΉ. ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΠΎΠ»Π΅ΠΉ ΠΏΡΠΎΠ²Π΅ΡΡΡΡΡΡ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈ ΡΠ»Π΅Π½ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Π³ΡΡΠΏΠΏΠ΅ (Π΅ΡΠ»ΠΈ sudoRoles Π½Π°ΡΡΡΠΎΠ΅Π½Ρ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π³ΡΡΠΏΠΏ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ)
ΠΡΠΎΠ³.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΠ»ΡΡΠΈ Ρ
ΡΠ°Π½ΡΡΡΡ Π² Π°ΡΡΠΈΠ±ΡΡΠ°Ρ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Active Directory, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ sudo β Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, Π΄ΠΎΡΡΡΠΏ ΠΊ Ρ
ΠΎΡΡΠ°ΠΌ Linux ΠΏΠΎ Π΄ΠΎΠΌΠ΅Π½Π½ΡΠΌ ΡΡΠ΅ΡΠ½ΡΠΌ Π·Π°ΠΏΠΈΡΡΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΠΈ ΠΊ Π³ΡΡΠΏΠΏΠ΅ Active Directory.
Π€ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ Π²Π·ΠΌΠ°Ρ
Π΄ΠΈΡΠΈΠΆΠ΅ΡΡΠΊΠΎΠΉ ΠΏΠ°Π»ΠΎΡΠΊΠΈ β ΠΈ Π·Π°Π» Π·Π°ΠΌΠΈΡΠ°Π΅Ρ Π² Π±Π»Π°Π³ΠΎΠ³ΠΎΠ²Π΅ΠΉΠ½ΠΎΠΉ ΡΠΈΡΠΈΠ½Π΅.
Π Π΅ΡΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ:
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com