αž’αŸ’αž“αž€αžˆαŸ’αž“αŸ‡αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαž€αž½αžαž’αž“αŸ’αžαžšαž‡αžΆαžαž· SSH αž“αž·αž„ sudo αž‘αžΎαž„αž†αžΆαž€αž˜αŸ’αžαž„αž‘αŸ€αžαŸ” αžŠαžΉαž€αž“αžΆαŸ†αžŠαŸ„αž™αž’αŸ’αž“αž€αž“αžΆαŸ†αž•αŸ’αž›αžΌαžœαžŸαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž˜αžΆαž“αž€αž·αžαŸ’αžαž·αž™αžŸ

αž‡αžΆαž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαžΆαžŸαŸ’αžαŸ’αžš αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαž sudo αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαŸ„αž™αž˜αžΆαžαž·αž€αžΆαž“αŸƒαž―αž€αžŸαžΆαžšαž–αžΈ /etc/sudoers.d ΠΈ αžœαžΈαžŸαžΌαžŒαžΌαž αžΎαž™αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαžŸαŸ†αžαžΆαž“αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž”αŸ’αžšαžΎ ~/.ssh/authorized_keys. αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαžΈαž€αž…αž˜αŸ’αžšαžΎαž“ αž˜αžΆαž“αž”αŸ†αžŽαž„αž…αž„αŸ‹αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŸαž·αž‘αŸ’αž’αž·αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‡αžΆαž€αžŽαŸ’αžαžΆαž›αŸ” αžαŸ’αž„αŸƒαž“αŸαŸ‡αž’αžΆαž…αž˜αžΆαž“αž‡αž˜αŸ’αžšαžΎαžŸαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ–

  • αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ - αž”αŸ’αžšαž’αžΆαž“, Puppet, Ansible, αž’αŸ†αž”αž·αž›
  • Active Directory + ធេសធេសឌី
  • αž€αžΆαžšαž”αŸ†αž”αŸ’αž›αŸ‚αž„αž•αŸ’αžŸαŸαž„αŸ—αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž‡αžΆαžŸαŸ’αž‚αŸ’αžšαžΈαž” αž“αž·αž„αž€αžΆαžšαž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αž―αž€αžŸαžΆαžšαžŠαŸ„αž™αžŠαŸƒ

αžαžΆαž˜αž‚αŸ†αž“αž·αžαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αž‡αž˜αŸ’αžšαžΎαžŸαžŠαŸαž›αŸ’αž’αž”αŸ†αž•αž»αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžŽαŸ’αžαžΆαž›αž“αŸ…αžαŸ‚αž‡αžΆαž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆ Active Directory + ធេសធេសឌី. αž‚αž»αžŽαžŸαž˜αŸ’αž”αžαŸ’αžαž·αž“αŸƒαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž‚αžΊαŸ–

  • αž–αž·αžβ€‹αž‡αžΆβ€‹αž”αž‰αŸ’αž‡αžΈβ€‹αž’αŸ’αž“αž€β€‹αž”αŸ’αžšαžΎβ€‹αž€αžŽαŸ’αžαžΆαž›β€‹αžαŸ‚αž˜αž½αž™αŸ”
  • αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αžŸαž·αž‘αŸ’αž’αž· sudo αž…αž»αŸ‡αž˜αž€αžŠαžΎαž˜αŸ’αž”αžΈαž”αž“αŸ’αžαŸ‚αž˜αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αŸ…αž€αŸ’αžšαž»αž˜αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αŸ”
  • αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž›αžΈαž“αž»αž…αž•αŸ’αžŸαŸαž„αŸ— αžœαžΆαž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαžŽαŸ‚αž“αžΆαŸ†αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αž“αŸ’αžαŸ‚αž˜αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ”

αžˆαž»αžαžαŸ’αž„αŸƒαž“αŸαŸ‡αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž§αž‘αŸ’αž‘αž·αžŸαž‡αžΆαž–αž·αžŸαŸαžŸαž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹ Active Directory + ធេសធេសឌី αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŸαž·αž‘αŸ’αž’αž· sudo αž“αž·αž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€ ssh αž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž…αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αžαŸ‚αž˜αž½αž™αŸ”
αžŠαžΌαž…αŸ’αž“αŸαŸ‡β€‹αž αžΎαž™ αžŸαžΆαž›β€‹αž”αžΆαž“β€‹αž”αž„αŸ’αž€αž€β€‹αž€αŸ’αž“αž»αž„β€‹αž—αžΆαž–β€‹αžŸαŸ’αž„αŸ€αž˜αžŸαŸ’αž„αžΆαžαŸ‹ αž’αŸ’αž“αž€β€‹αžŠαžΉαž€αž“αžΆαŸ†β€‹αž”αžΆαž“β€‹αž›αžΎαž€β€‹αžŠαŸ†αž”αž„ αž αžΎαž™β€‹αžœαž„αŸ‹αž—αŸ’αž›αŸαž„β€‹αž”αžΆαž“β€‹αžαŸ’αžšαŸ€αž˜β€‹αžαŸ’αž›αž½αž“β€‹αž‡αžΆβ€‹αžŸαŸ’αžšαŸαž…αŸ”
αž‘αŸ…αŸ”

αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αŸ–
- αžŠαŸ‚αž“αžαžαžŸαž€αž˜αŸ’αž˜ testopf. αž€αŸ’αž“αž»αž„αžŸαŸ’αžšαž»αž€ αž“αŸ…αž›αžΎ Windows Server 2012 R2.
- αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ Linux αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Centos 7
- αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαžŠαŸ„αž™αž”αŸ’αžšαžΎ ធេសធេសឌី
αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‘αžΆαŸ†αž„αž–αžΈαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸ Active DirectoryαžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž™αžΎαž„αž–αž·αž“αž·αžαŸ’αž™αž’αŸ’αžœαžΈαŸ—αž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸαžŸαžΆαž€αž›αŸ’αž”αž„ αž αžΎαž™αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž’αŸ’αžœαžΎαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ…αž›αžΎαž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž‚αŸ„αž›αžŠαŸ…αž αžΎαž™αžαžΆαž˜αž€αžΆαžšαž–αž·αžαž”αž“αŸ’αžαŸ‚αž˜αžαŸ‚αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž…αžΆαŸ†αž”αžΆαž…αŸ‹αž“αž·αž„αžαŸ’αž“αžΆαž€αŸ‹αŸ”

αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž‘αžΈ 1: αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ sudo αžαž½αž“αžΆαž‘αžΈαžαžΆαž˜αžšαž™αŸˆ Active Directory.

αžŠαžΎαž˜αŸ’αž”αžΈαž–αž„αŸ’αžšαžΈαž€αžŸαŸ€αž‚αŸ’αžœαžΈ Active Directory αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž‘αžΆαž‰αž™αž€αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αžαŸ” sudo - 1.8.27 αž‚αž·αžαžαŸ’αžšαžΉαž˜αžαŸ’αž„αŸƒαž“αŸαŸ‡αŸ” αžŠαŸ„αŸ‡β€‹αžαŸ’αž…αž”αŸ‹β€‹αž αžΎαž™β€‹αž…αž˜αŸ’αž›αž„β€‹αž―αž€αžŸαžΆαžš schema.ActiveDirectory αž–αžΈαžαžαž―αž€αžŸαžΆαžš ./doc αž‘αŸ…αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαžŠαŸ‚αž“αŸ” αž–αžΈαž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαŸ‚αž›αž˜αžΆαž“αžŸαž·αž‘αŸ’αž’αž·αž‡αžΆαž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž–αžΈαžαžαžŠαŸ‚αž›αž―αž€αžŸαžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž˜αŸ’αž›αž„αžŸαžΌαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ–
ldifde -i -f schema.ActiveDirectory -c dc=X dc=testopf,dc=local
(αž€αž»αŸ†αž—αŸ’αž›αŸαž…αž‡αŸ†αž“αž½αžŸαžαž˜αŸ’αž›αŸƒαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€)
αž”αžΎαž€ adsiedit.msc αž αžΎαž™αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž”αžšαž·αž”αž‘αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αŸ–
αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž”αŸ‚αž„αž…αŸ‚αž€αž“αŸ…αž«αžŸαž“αŸƒαžŠαŸ‚αž“ αž”αŸ‚αž€αž‰αžΎαžŸ. (αž–αž½αž€β€‹αž˜αž αžΆαžŸαŸαžŠαŸ’αž‹αžΈβ€‹αžšαžΉαž„αžšαžΌαžŸβ€‹αž’αŸ‡αž’αžΆαž„β€‹αžαžΆβ€‹αžœαžΆβ€‹αžŸαŸ’αžαž·αžβ€‹αž“αŸ…β€‹αž€αŸ’αž“αž»αž„β€‹αž’αž„αŸ’αž‚αž—αžΆαž–β€‹αž“αŸαŸ‡β€‹αžŠαŸ‚αž›β€‹αž”αž·αžŸαžΆαž…β€‹αž“αŸ„αŸ‡ ធេសធេសឌី αžŸαŸ’αžœαŸ‚αž„αžšαž€αž’αžΆαžαž»αž˜αž½αž™αŸ” sudoRole αžœαžαŸ’αžαž»αŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αžΎαž€αž€αžΆαžšαž€αŸ‚αž€αŸ†αž αž»αžŸαž›αž˜αŸ’αž’αž·αž αž“αž·αž„αžŸαž·αž€αŸ’αžŸαžΆαž€αŸ†αžŽαžαŸ‹αž αŸαžαž» αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαžΆαž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž‘αžΌαž‘αžΆαŸ†αž„αž˜αŸ‚αž€αž’αžΆαž„αžαžαž‘αžΆαŸ†αž„αž˜αžΌαž›αŸ”)
αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαžœαžαŸ’αžαž»αž‘αžΈαž˜αž½αž™αžŠαŸ‚αž›αž‡αžΆαž€αž˜αŸ’αž˜αžŸαž·αž‘αŸ’αž’αž·αžšαž”αžŸαŸ‹αžαŸ’αž“αžΆαž€αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€ sudoRole. αžˆαŸ’αž˜αŸ„αŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžαžΆαž˜αž’αŸ†αž–αžΎαž…αž·αžαŸ’αž αž–αŸ’αžšαŸ„αŸ‡αžœαžΆαž”αž˜αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž„αžΆαž™αžŸαŸ’αžšαž½αž›αžαŸ‚αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”
αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαžŠαŸ‚αž›αž’αžΆαž…αž˜αžΆαž“αž”αžΆαž“αž–αžΈαž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸ αž›αž€αŸ’αžαžŽαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αŸ—αž˜αžΆαž“αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

  • sudoCommand - αž€αŸ†αžŽαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αŸ”
  • sudoHost - αž€αŸ†αžŽαžαŸ‹αžαžΆαžαžΎαž˜αŸ’αž…αžΆαžŸαŸ‹αž•αŸ’αž‘αŸ‡αžŽαžΆαžŠαŸ‚αž›αžαž½αž“αžΆαž‘αžΈαž“αŸαŸ‡αž’αž“αž»αžœαžαŸ’αžαž…αŸ†αž–αŸ„αŸ‡αŸ” αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž‡αžΆ αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αž·αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αŸ’αž…αžΆαžŸαŸ‹αž•αŸ’αž‘αŸ‡αž”αž»αž‚αŸ’αž‚αž›αžαžΆαž˜αžˆαŸ’αž˜αŸ„αŸ‡αŸ” αžœαžΆαž€αŸαž’αžΆαž…αž”αŸ’αžšαžΎαžšαž”αžΆαŸ†αž„αž˜αž»αžαž•αž„αžŠαŸ‚αžšαŸ”
  • sudoUser - αž…αž„αŸ’αž’αž»αž›αž”αž„αŸ’αž αžΆαž‰αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŽαžΆαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž· sudo.
    αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž€αŸ’αžšαž»αž˜αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž– αž”αž“αŸ’αžαŸ‚αž˜αžŸαž‰αŸ’αž‰αžΆ β€œ%” αž“αŸ…αžŠαžΎαž˜αžˆαŸ’αž˜αŸ„αŸ‡αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αž…αž“αŸ’αž›αŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αžˆαŸ’αž˜αŸ„αŸ‡αž€αŸ’αžšαž»αž˜ αž“αŸ„αŸ‡αž‚αŸ’αž˜αžΆαž“αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž–αŸ’αžšαž½αž™αž”αžΆαžšαž˜αŸ’αž—αž“αŸ„αŸ‡αž‘αŸαŸ” αžŠαŸ„αž™αžœαž·αž“αž·αž…αŸ’αž†αŸαž™αžŠαŸ„αž™αž€αŸ†αžŽαžαŸ‹αž αŸαžαž» αž—αžΆαžšαž€αž·αž…αŸ’αž…αž“αŸƒαž€αžΆαžšαž‚αŸαž…αž…αŸαž‰αž–αžΈαž€αž“αŸ’αž›αŸ‚αž„αž“αžΆαž“αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαŸ„αž™αž™αž“αŸ’αžαž€αžΆαžš ធេសធេសឌី.

αž’αŸ’αž“αž€αžˆαŸ’αž“αŸ‡αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαž€αž½αžαž’αž“αŸ’αžαžšαž‡αžΆαžαž· SSH αž“αž·αž„ sudo αž‘αžΎαž„αž†αžΆαž€αž˜αŸ’αžαž„αž‘αŸ€αžαŸ” αžŠαžΉαž€αž“αžΆαŸ†αžŠαŸ„αž™αž’αŸ’αž“αž€αž“αžΆαŸ†αž•αŸ’αž›αžΌαžœαžŸαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž˜αžΆαž“αž€αž·αžαŸ’αžαž·αž™αžŸ
αžšαžΌαž” 1. αžœαžαŸ’αžαž» sudoRole αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αžšαž„ sudoers αž€αŸ’αž“αž»αž„ root αž“αŸƒαžαž

αž’αŸ’αž“αž€αžˆαŸ’αž“αŸ‡αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαž€αž½αžαž’αž“αŸ’αžαžšαž‡αžΆαžαž· SSH αž“αž·αž„ sudo αž‘αžΎαž„αž†αžΆαž€αž˜αŸ’αžαž„αž‘αŸ€αžαŸ” αžŠαžΉαž€αž“αžΆαŸ†αžŠαŸ„αž™αž’αŸ’αž“αž€αž“αžΆαŸ†αž•αŸ’αž›αžΌαžœαžŸαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž˜αžΆαž“αž€αž·αžαŸ’αžαž·αž™αžŸ
αžšαžΌαž”αž—αžΆαž–αž‘αžΈ 2. αžŸαž˜αžΆαž‡αž·αž€αž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜αžŸαž“αŸ’αžαž·αžŸαž»αžαžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžœαžαŸ’αžαž» sudoRole αŸ”

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž“αŸ…αž›αžΎαž•αŸ’αž“αŸ‚αž€αž›αžΈαž“αž»αž…αŸ”
αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš /etc/nsswitch.conf αž”αž“αŸ’αžαŸ‚αž˜αž”αž“αŸ’αž‘αžΆαžαŸ‹αž‘αŸ…αž…αž»αž„αž”αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαž―αž€αžŸαžΆαžšαŸ–

sudoers: files sss

αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš /etc/sssd/sssd.conf αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€ [ssd] αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ 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.ps1αž˜αž»αžαž„αžΆαžš 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 = 'αž€αžΌαž“αžŸαŸ„αžŸαžΆαž’αžΆαžšαžŽαŸˆαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αžΌαž› SSH';
}

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 αž…αž»αž…αž”αŸŠαžΌαžαž»αž„ "αž”αž„αŸ’αž€αžΎαž" αž αžΎαž™αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαž€αžŽαŸ’αžαž»αžšαž™αŸ‰αžΆαž„αž€αŸ’αž›αŸ€αžœαž€αŸ’αž›αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžαŸ†αž”αž“αŸ‹αž‘αž‘αŸαŸ”
αž“αŸ…αž–αŸαž›αž”αž‰αŸ’αž…αž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž™αžΎαž„αž’αžΆαž…αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžŸαŸ„αžŸαžΆαž’αžΆαžšαžŽαŸˆ αž“αž·αž„αž―αž€αž‡αž“ αž”αž„αŸ’αž αŸ„αŸ‡αžŸαŸ„αžŸαžΆαž’αžΆαžšαžŽαŸˆαž‘αŸ…αž€αžΆαž“αŸ‹αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Active Directory αž αžΎαž™αžšαžΈαž€αžšαžΆαž™αž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸαŸ‡αŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αžŸαŸ„αžŸαžΆαž’αžΆαžšαžŽαŸˆαžαŸ’αžšαžΌαžœαžαŸ‚αž”αŸ’αžšαžΎαž–αžΈ "αžŸαŸ„αžŸαžΆαž’αžΆαžšαžŽαŸˆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž·αž‘αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš OpenSSH authorized_keysαŸ–"αŸ”
αž’αŸ’αž“αž€αžˆαŸ’αž“αŸ‡αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαž€αž½αžαž’αž“αŸ’αžαžšαž‡αžΆαžαž· SSH αž“αž·αž„ sudo αž‘αžΎαž„αž†αžΆαž€αž˜αŸ’αžαž„αž‘αŸ€αžαŸ” αžŠαžΉαž€αž“αžΆαŸ†αžŠαŸ„αž™αž’αŸ’αž“αž€αž“αžΆαŸ†αž•αŸ’αž›αžΌαžœαžŸαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž˜αžΆαž“αž€αž·αžαŸ’αžαž·αž™αžŸ
αž”αž“αŸ’αžαŸ‚αž˜αžŸαŸ„αž‘αŸ…αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ”
αž‡αž˜αŸ’αžšαžΎαžŸαž‘αžΈ 1 - GUIαŸ–
αž’αŸ’αž“αž€αžˆαŸ’αž“αŸ‡αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαž€αž½αžαž’αž“αŸ’αžαžšαž‡αžΆαžαž· SSH αž“αž·αž„ sudo αž‘αžΎαž„αž†αžΆαž€αž˜αŸ’αžαž„αž‘αŸ€αžαŸ” αžŠαžΉαž€αž“αžΆαŸ†αžŠαŸ„αž™αž’αŸ’αž“αž€αž“αžΆαŸ†αž•αŸ’αž›αžΌαžœαžŸαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž˜αžΆαž“αž€αž·αžαŸ’αžαž·αž™αžŸ
αž‡αž˜αŸ’αžšαžΎαžŸαž‘αžΈ 2 - PowerShellαŸ–
get-aduser user1 | set-aduser -add @{sshPublicKey = 'AAAAB...XAVnX9ZRJJ0p/Q=='}
αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž™αžΎαž„αž˜αžΆαž“αŸ– αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ sshPublicKey αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž–αŸαž‰ αž‡αžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœ Putty αžŠαŸ‚αž›αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαŸ„αŸ” αž“αŸ…αž˜αžΆαž“αž…αŸ†αžŽαž»αž…αžαžΌαž…αž˜αž½αž™αŸ– αžšαž”αŸ€αž”αž”αž„αŸ’αžαŸ†αžŠαŸαž˜αž·αž“ sshd αž±αŸ’αž™αž‘αžΆαž‰αž™αž€αžŸαŸ„αžŸαžΆαž’αžΆαžšαžŽαŸˆαžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž–αžΈαž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαŸ” αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžαžΌαž…αž˜αž½αž™αžŠαŸ‚αž›αžšαž€αžƒαžΎαž‰αž“αŸ…αž›αžΎαž’αŸŠαžΈαž“αž’αžΊαžŽαž·αž bourgeois αž’αžΆαž…αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ„αž™αž‡αŸ„αž‚αž‡αŸαž™αŸ”

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αŸ–

  1. αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαŸ„αž™αž”αž„αŸ’αž αžΆαž‰αž€αžΆαžšαž…αžΌαž›αžšαž”αžŸαŸ‹αž‚αžΆαžαŸ‹αŸ”
  2. αžŠαŸαž˜αž·αž“ sshd αžαžΆαž˜αžšαž™αŸˆαžŸαŸ’αž‚αŸ’αžšαžΈαž” αž‘αžΆαž‰αž™αž€αžαž˜αŸ’αž›αŸƒαžŸαŸ„αžŸαžΆαž’αžΆαžšαžŽαŸˆαž–αžΈαž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ Active Directory αž αžΎαž™αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαžŠαŸ„αž™αž”αŸ’αžšαžΎαž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž…αŸ”
  3. αžŠαŸαž˜αž·αž“ sssd αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžŸαž˜αžΆαž‡αž·αž€αž—αžΆαž–αž€αŸ’αžšαž»αž˜αŸ” αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹! αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‘αŸ αž“αŸ„αŸ‡αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αž“αžŽαžΆαž˜αž½αž™αž“αžΉαž„αž˜αžΆαž“αžŸαž·αž‘αŸ’αž’αž·αž…αžΌαž›αž”αŸ’αžšαžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αŸ”
  4. αž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αž–αŸ’αž™αžΆαž™αžΆαž˜ sudo αžŠαŸαž˜αž·αž“ sssd αžŸαŸ’αžœαŸ‚αž„αžšαž€ Active Directory αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαž½αž“αžΆαž‘αžΈαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžαž½αž“αžΆαž‘αžΈαž˜αžΆαž“αžœαžαŸ’αžαž˜αžΆαž“ αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎ αž“αž·αž„αžŸαž˜αžΆαž‡αž·αž€αž—αžΆαž–αž€αŸ’αžšαž»αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž“αž·αžαŸ’αž™ (αž”αŸ’αžšαžŸαž·αž“αž”αžΎ sudoRoles αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎαž€αŸ’αžšαž»αž˜αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹)

αž›αž‘αŸ’αž’αž•αž›αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž“αŸ…αž€αŸ’αž“αž»αž„ Active Directory user attributes αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαž sudo - αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž“αŸαŸ‡αžŠαŸ‚αžš αž€αžΆαžšαž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹ Linux hosts αžŠαŸ„αž™αž‚αžŽαž“αžΈ domain αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžŸαž˜αžΆαž‡αž·αž€αž—αžΆαž–αž“αŸ…αž€αŸ’αž“αž»αž„ Active Directory groupαŸ”
αžšαž›αž€β€‹αž…αž»αž„β€‹αž€αŸ’αžšαŸ„αž™β€‹αž“αŸƒβ€‹αžŠαŸ†αž”αž„β€‹αžšαž”αžŸαŸ‹β€‹αž’αŸ’αž“αž€β€‹αžŠαžΉαž€αž“αžΆαŸ† - αž αžΎαž™β€‹αžŸαžΆαž›β€‹αž€αŸβ€‹αž”αž„αŸ’αž€αž€β€‹αž€αŸ’αž“αž»αž„β€‹αž—αžΆαž–β€‹αžŸαŸ’αž„αŸ€αž˜αžŸαŸ’αž„αžΆαžαŸ‹β€‹αž‚αž½αžšβ€‹αž±αŸ’αž™β€‹αž‚αŸ„αžšαž–αŸ”

αž’αž“αž’αžΆαž“αžŠαŸ‚αž›αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαŸ–

Sudo αžαžΆαž˜αžšαž™αŸˆ Active Directory
αž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž… Ssh αžαžΆαž˜αžšαž™αŸˆ Active Directory
αžŸαŸ’αž‚αŸ’αžšαžΈαž” Powershell αžŠαŸ„αž™αž”αž“αŸ’αžαŸ‚αž˜αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž‘αŸ… Active Directory Schema
αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ sudo αž˜αžΆαž“αžŸαŸ’αžαŸαžšαž—αžΆαž–

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹