LINUX.ORG.RU

Сообщения i3wm

 

Получить SPNs из Windows AD на MacOS

Всем здравствуйте.

UPD: я не прошу готового решения, если знаете что-то - посоветуйте куда копать.

Есть небольшая ргадость на сей вечер.
Собс-нно сабж.

Есть MacOS подключенный в Шинд Windows AD.
В Windows AD есть такая вещь как SPN [Service Principal Names].

Задача: нужно по запросу получать те самые (будь они не ладны) SPN.

Для чего: SPN используется для аутентификации на ресурсе при настройке самой MacOS.

Что накопал: SPN прилетают (удалял перед тем) после рестарта Wi-Fi

ifconfig %wifi_interface% down
ifconfig %wifi_interface% up

То есть когда поднимается сеть.

Посмотреть есть ли нужная запись можно командой: sudo ktutil list

Вывод: sudo ktutil list

FILE:/etc/krb5.keytab:

Vno  Type                     Principal                               
  7  arcfour-hmac-md5         host/ltcs-mm-001.domain.lcl@DOMAIN.LCL                                                                             
  7  aes256-cts-hmac-sha1-96  host/ltcs-mm-001.domain.lcl@DOMAIN.LCL                                                                             
  7  aes128-cts-hmac-sha1-96  host/ltcs-mm-001.domain.lcl@DOMAIN.LCL                                                                             
  7  arcfour-hmac-md5         afpserver/ltcs-mm-001.domain.lcl@DOMAIN.LCL                                                                        
  7  aes256-cts-hmac-sha1-96  afpserver/ltcs-mm-001.domain.lcl@DOMAIN.LCL                                                                        
  7  aes128-cts-hmac-sha1-96  afpserver/ltcs-mm-001.domain.lcl@DOMAIN.LCL                                                                        
  7  arcfour-hmac-md5         cifs/ltcs-mm-001.domain.lcl@DOMAIN.LCL                                                                             
  7  aes256-cts-hmac-sha1-96  cifs/ltcs-mm-001.domain.lcl@DOMAIN.LCL                                                                             
  7  aes128-cts-hmac-sha1-96  cifs/ltcs-mm-001.domain.lcl@DOMAIN.LCL                                                                             
  7  arcfour-hmac-md5         vnc/ltcs-mm-001.domain.lcl@DOMAIN.LCL                                                                              
  7  aes256-cts-hmac-sha1-96  vnc/ltcs-mm-001.domain.lcl@DOMAIN.LCL                                                                              
  7  aes128-cts-hmac-sha1-96  vnc/ltcs-mm-001.domain.lcl@DOMAIN.LCL                                                                              
  7  arcfour-hmac-md5         ltcs-mm-001$@DOMAIN.LCL                                                                                            
  7  aes256-cts-hmac-sha1-96  ltcs-mm-001$@DOMAIN.LCL                                                                                            
  7  aes128-cts-hmac-sha1-96  ltcs-mm-001$@DOMAIN.LCL       

То есть мне нужно как-то перезагрузить opendirectoryd/Kerberos или хз даже.
Знаний не хватает или опыта.

По SPN читал вот эту доку: https://docs.microsoft.com/en-us/windows/win32/ad/service-principal-names

 , ,

i3wm ()

bash.sh

Трям! Здравствуйте!

Прошу Вашего совета в банальном, казалось бы, вопросе, а именно: начало скрипта на Bash.
На данный момент скрипты начинаю так.

  1 #! /usr/bin/env bash
  2 
  3 if test "$BASH" == "" || "$BASH" -uc "a=();true \"\${a[@]}\"" 2>/dev/null; then
  4   #BASH 4.4 version
  5   set -uo pipefail
  6 else
  7   #BASH 4.3 and older version
  8   set -o pipefail
  9 fi
 10 shopt -s nullglob
 11 
 12 printf "\033c"
 13 
 14 ######################################## REQUIRMENTS ########################################
 15 
 16 if [[ "$HOME" != '/var/root' ]]; then
 17   echo -e "\nFor correctly works \033[1;31mneed ROOT rights\033[0m\n";
 18   exit 1
 19 fi
 20 
 21 ######################################### VARIABLES #########################################
 22 

Вопрос: стоит ли прописывать каждую утилиту в REQUIRMENTS? Пример.

  1 #!/usr/bin/env bash
  2 
  3 curl="$(which curl)" || {
  4   echo "cURL not find. Aborting...";
  5   exit 1
  6 }
  7 
  8 $curl --insecure --negotiate ...
  9 

Можете дать линку на хороший, по Вашему мнению, скрипт у какого можно подсмотреть технику написания?

 , ,

i3wm ()

Как перестать делать откровенную лажу?

Здравствуйте, уважаемые.

Хочу почитать мнение людей из области по след. вопросу. Как перестать делать лажу? Как прокачать моск?

То-есть. Вот пишу какой-то скрипт, манифест, плейбук… И понимаю, что фигня, не масштабируется, понятно только мне и как это передать другому или обьяснить - не понятно. В большинстве случаев - индусский или китайский код.

Что почитать по данной тематике?

P.S. Или сразу к психиатру? -_-

 , ,

i3wm ()

[Решено] macOS «не работает» kinit при подключении через SSH

Решение:
В переменные окружения root-a передавалась переменная KRB5CCNAME
Которая в свою очередь формировалась при логине по SSH
После - unset KRB5CCNAME 
Всё работает отлично.

Колеги, проблема след. характера.

При локальном использовании - работает отлично. При подключении через SSH от имени лок. админа - работает отлично.

При подключении через SSH от имени доменного пользователя - сразу заказывается Kerberos TGT.

Командой klist видно

Credentials cache: API:*******
        Principal: ********

  Issued                Expires               Principal
Oct  4 13:27:09 2019  Oct  4 23:27:09 2019  ****************

По условиям поставленной задачи - нам тикет нужен в котором в поле Principal: выступает $(hostname -s)$

Затем делаем kdestroy дабы убрать существующий TGT И заказываем новый

hostname:~ *****$ sudo kinit -V -e aes256-cts-hmac-sha1-96 -k $(hostname -s)$; echo $?
Placing tickets for '**********' in cache '*********'
0
******:~ ****** klist
klist: krb5_cc_get_principal: No credentials cache file found

Тоесть, тикет вроде заказан успешно и помещен в cache API:такой-то, но либо SSH его не видит. Либо я торможу.

Вопрос. Куда копать?

P.S. Мак в домене. Заведен в домен при помощи /usr/sbin/dsconfigad

 , , ,

i3wm ()

Ansible шифрование пароля

Уважаемые. Прошу Вашего совета.

Подскажите, как хорошо и верно зашифровать пароль в Ansible. Что имееем?

ansible 2.8.4
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/home/deb/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Aug  7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

Что нужно? Нужно сказать пароль в зашифрованом виде, желательно чтобы клиент понял.

В чём загвоздка? При использовании ansible-vault encrypt_string - переменная в команде, для примера mysql -u user -p {{ password_mysql }}

Если данная строка содержит ошибку или завершается с ошибкой - пароль в открытом виде выводится в консоль вместе с командой.

Хранить пароль в password_file - лучше сразу пароль отдать.

И в любом случае нужно вводить --ask-vault-pass.

А как сделать без --ask-vault-pass если я хочу дать права пользователю запустить task с помощью Jenkins?

Что почитать по данной теме?

 , ,

i3wm ()

Ansible сравнение IP

Здравствуйте уважаемые.

Пишу Вам т.к. у самого пока или знания или понимания не хватает. Начал изучать ansible на досуге. ansible --version -> ansible 2.8.1

Хочу настроить конфигурирование новых девайсов при помощи сего «чюда».

Затик на моменте отнесения девайса к региону. Из хостнейма витягиваю информацию об обозначении региона XX, но хочется добавить больше разума и проверять еще и по первим двум октетам IPv4.

    vars:
      regions: {
        "MK": {"region": "MK", "ip": "172.44"},
        "SP": {"region": "SP", "ip": "172.48"}
     }

Вопрос. Как «обрезать» первые два октета

{{ ansible_default_ipv4.address.split('.')[0] }}.{{ansible_default_ipv4.address.split('.')[1] }}

Работает хорошо, но нельзя засунуть в when (я пока в jinja2 не умею :( )

- debug:
    msg: "{{ item.key }} has region {{ item.value.region }} and ip {{ item.value.ip}}
  when:
    - "ansible_hostname.split('-')[0]|upper == item.value.region"
    - "{{ ansible_default_ipv4.address.split('.')[0] }}.{{ansible_default_ipv4.address.split('.')[1] }} == item.value.ip"  # не работает
  loop: "{{ regions|dict2items }}"

Вот такое есть условие - с одним условием в when - отрабативает хорошо. Когда пробую добавить, что-то типа

"ansible_default_ipv4.address == item.value.ip" - соот-нно ругается, говорит неверно (что не удивительно), т.к. работает не match, а точное соот-вие.

Если коротко - ниосилил. Дома буду курить man, но хочется и пообщатся с людьми знающими)

 , ,

i3wm ()

RSS подписка на новые темы