понедельник, 28 января 2019 г.

Использование и восстановление свинцовых АКБ

habr.com

Использование и восстановление свинцовых АКБ мой опыт


image
Недавно я делал очередную замену батареек в своих ИБП. Я решил поглубже изучить вопрос правильного использования свинцовых АКБ, их устройство и химию процесса.
Цена батарей растет из-за курса и покупать их становится накладно.
Можно ли сделать так, чтобы батарейки служили дольше? Как получить от них максимальную отдачу, чтобы оборудование работало дольше и отключения электричества меня совсем не беспокоили?
Хочу поделиться опытом. Кому интересно, прошу под кат…

Долгая работа от батареи.

На батареях для бесперебойника производители пишут 20 часовую емкость, то есть емкость, которую батарея отдаст за 20 часов разряда.
Но в бесперебойниках такого режима не бывает. Они работают от батареи минут 30 в лучшем случае. А обычно 5-10.
Посмотрим на табличку из даташита на батарею CSB GP1272 с заявленной емкостью 7.2 Ач:
image
Так вот, если мы будем разряжать ее 1 час до напряжения 10.8 вольт (больше не рекомендуется иначе будет потеря ресурса), то она отдаст 5.23 Ач. Уже очень далеко от заявленных 7.2 не правда ли?
Если 30 минут, то 4.38
Если 10 минут, то 3,1 всего 43% емкости!

Вывод: свинцовые батареи не любят отдавать большие токи.
Оставим заявленную емкость на совести производителей и подумаем, как лучше поступить.
А вот как:
Бесперебойники с одной батарейкой для питания компьютера не пригодны. Ну может быть кроме совсем слабых офисных машин.
Ну, или они будут работать считанные минуты а батарейки будут умирать быстро и не отдавать и треть своей емкости.
Сам бесперебойник может и выдержит какое-то время 300вт нагрузки, которые на нем написаны, но батарейке внутри будет очень тяжко.
Такие бесперебойники годятся для питания какого-нибудь маломощного устройства (роутера например) или неттопа или совсем слабого офисного системника с маленьким монитором.
Для питания компьютера надо использовать бесперебойник с двумя батареями. Обычно это устройства категории «smart».

Это не только в 2 раза больше емкость, но и в 2 раза меньший ток. А значит, отдать батарейки смогут ампер * часов больше.
А еще хорошо бы использовать в компьютере качественные блоки питания с PFC корректором и высоким КПД.
С хорошим блоком питания будет меньше потерь, а значит дольше время работы от батарей.

Долгая жизнь АКБ

Почему в одних бесперебойниках батарейки живут по 5-6 лет, а в других помирают за год, и их приходится выковыривать оттуда монтажкой? Попробуем разобраться.
Для этого посмотрим вот на этот график из даташита:
image
А теперь возьмем термометр и измерим температуру в помещении и в батарейном отсеке.
Посмотрим теперь на график. Если температура батарей 20-25 градусов (как обычно в помещении), то срок службы 5 лет. Если 35, то в 2 раза меньше! А если выше 40, то батарейка проживет меньше 2х лет.

Вывод: батареи должны быть холодными! Ну, то есть не выше комнатной температуры.
При повышении температуры ускоряются химические процессы и испарение электролита.

А еще, есть еще такая штука как температурная компенсация напряжения заряда.
В некоторых даташитах ее указывают. Но чаще просто приводят режимы для 20 или 25 градусов цельсия.

Вот диаграмма из даташита:
image
Напряжение заряда для разных температур разное и его надо корректировать по фактической температуре в батарейном отсеке. Продвинутые ИБП умеют это делать сами. Но чаще всего, зарядник там стоит тупой и кипятит батареи повышенным напряжением заряда в дополнение к тому, что греет их.

Посмотрим, как обстоит дело в реальных устройствах

У меня есть 2 ИБП типа «смарт». Один Ippon вот такой:
image
А другой APC smart 700 вот такой:
image
Ну и еще пара простеньких APC back CS500.
У устройств типа «смарт» есть одна особенность. Там стоит Большой Железный Трансформатор (БЖТ).
image
Он активен всегда, когда ИБП включен в розетку. И он греется! При питании от сети этот БЖТ работает в режиме автотрансформатора и может повышать или понижать напряжение путем переключения обмоток. Так же как в трансформаторах для лампового дедушкиного телевизора, но только автоматически. От него же идет зарядка. Хотя в более современных ИБП, зарядку делают на отдельном импульснике.
Так вот в Ippon этот трансформатор отдает в тепло 30 Вт. А в APC почти 20.
(Замерил потребление на холостом ходу)

Я измерил температуру в помещении, а также температуру в батарейном отсеке ИБП.
Еще я измерил напряжение заряда.
Получилось вот что:
Температура в помещении 25 градусов.
Температура в ИБП Ippon 25 градусов.
Температура внутри APC 34 градуса!
Напряжение заряда Ippon 27.5 V, у APC оно 27.2 V.

В Ippon есть кулер. И он крутится всегда, когда он включен в сеть. Конструкторы позаботились об охлаждении, не смотря на то, что это не самый крутой производитель. А вот зарядник там самый простой линейный на LM317. И напряжение высоковато для моих 25 градусов в помещении.
У APC ситуация плохая. Принудительное охлаждение отсутствует, монтаж плотный, трансформатор нагревает батарейный отсек. И хотя напряжение заряда примерно соответствует (возможно даже есть температурная коррекция), он все равно быстро убьет батареи.

Что я буду делать

В Ippon я немножко уменьшу зарядное напряжение. Сделать это просто. Достаточно рассчитать и впаять резистор в цепочку делителя LM317. Так я и поступил. Теперь напряжение 27,15в.
В случае APC я решил установить туда кулер. Можно конечно вынести батареи из корпуса. Но мне такое решение показалось не эстетичным. Кроме того, будут лучше охлаждаться компоненты самого ИБП, не будут сохнуть конденсаторы.

Берем слесарный инструмент и вперед:

image
image
Ну а в маленьких APC back CS500 ничего делать не надо. Там импульсный зарядник, и он почти не греется. Напряжение в пределах нормы.

Итак, для долгой жизни батарей надо

Обеспечить температурный режим.
В случае серверной это вынос батарей в отдельную комнату, шкаф, короб и обеспечение вентиляции / охлаждения.
В случае обычного бесперебойника это внедрение кулера, вынос батарей за пределы горячего корпуса.
Обеспечить соответствие напряжения заряда и температуры батарей.
Скорректировать напряжение заряда если необходимо.

Тест и восстановление АКБ

Теперь мне стало интересно. А можно ли попробовать восстановить б/у батарейки? Подсохшие и потерявшие емкость.
Понятно, что в интернетах много всякого бреда и фейка. Я решил для начала немного изучить суть вопроса и почитать теорию.
Почитал книжку вот эту. И вот тут. А еще статью на Хабре.

Выводы из прочитанного


  1. Чуда быть не может. Пытаться восстановить можно только относительно живые АКБ с определенными симптомами. Если у батареи закорочены банки, осыпались или отвалились пластины то тут уже делать нечего. Только в цветмет!
  2. Процесс восстановления очень долгий (примерно неделя на один АКБ). По этому, делать это «в ручную» очень трудозатратно и не имеет смысла даже на стадии опытов. Имеет смысл только автоматизированный процесс.
  3. Восстановить батареи, работавшие в бесперебойниках таки можно попробовать. Потому что основные причины потери емкости этих батарей это потеря воды в результате постоянного подзаряда и сульфатация из-за не оптимальных режимов заряда и разряда.
  4. Заряжать и разряжать батарею лучше импульсами. Так меньше кипит и образуются кристаллы правильной структуры.
Я сделал опытный вариант установки для теста и восстановления АКБ.
Вот ее схема:

Кликабельно
В качестве «мозгов» я взял Arduino nano. Источник тока – лабораторный блок питания с контролем тока и напряжения. Для связи с внешним миром – модуль Bluetooth HC-05.
Ключ Q1 подключает зарядку. Q3 подключает нагрузку R4 для разряда. Делитель R6 / R8 для контроля напряжения на АЦП Arduino.
Основная идея этой установки в том, что она работает где-нибудь в дальнем углу сама по себе, есть / пить не просит. Иногда можно поглядывать что там происходит и даже подходить к ней не надо.
Пока все сделано «на соплях». Я не знаю будет ли толк от всего этого, по этому заморачиваться с платой и корпусом пока не стал.
image
Управляется вся эта беда удаленно с терминала:
image
Схема позволяет прогонять разные циклы заряда / разряда по программе и считает примерно сколько электричества ушло на процесс. Можно определить сколько батарея берет и отдает.
Алгоритм работы такой:
Заряд идет импульсами 0,5 сек заряд и 1 сек релаксация.
Разряд импульсами 1/1 сек.
Измерение напряжения при заряде идет в паузах (не под напряжением)
Измерение напряжения при разряде идет под нагрузкой.

Заряжаем или разряжаем 3 минуты, потом измеряем напряжение, отправляем данные на Bluetooth модуль и решаем надо ли продолжать.
Есть еще программа десульфатации. Она долгая.
Сначала 3 цикла «выравнивания». Это заряд малым током и ожидание 10 часов.
Потом циклы разряд / заряд.

Выберем «подопытных кроликов»

Батарея № 1 Sven. (ее фото в начале статьи)
Это батарейка 2012 года. ИБП на нее не ругается, проходит селф тест, но емкости у нее почти не осталось. Она держит 10 минут бесперебойник, нагруженный на роутер. Она и новая была хлам, а после 6 лет работы остались рожки да ножки :) Но для издевательств – самое оно.
Вскрытие крышки и заглядывание в банки показало, что в батарее сильно не хватает электролита.
Батарея № 2 Ippon
image
Она 2014 года, работала в ИБП типа «смарт» до тех пор, пока у соседней батареи в паре не закоротило банку. Произошло это недавно. То есть наработка 4 с лишним года. Она изрядно покипела и в нее пришлось доливать воду.

Доливаем дистиллированную воду

Именно воду, а не электролит. Потому что уходит именно вода, а серная кислота остается на пластинах в связанном состоянии. Обычная вода из под крана убьет АКБ сразу.
Доливать нужно так:
Доливаем заряженную АКБ. Потому что в ходе работы уровень электролита меняется и в заряженном состоянии он максимальный. Чтобы не было перелива.
Шприцом с тупой иголкой капаем воду прямо на пластины. И смотрим фонариком.
Надо чтобы пластины были сверху влажные, но чтоб вода не плюхалась.
Процедуру повторить 2-3 раза по мере впитывания воды через несколько часов.

В испытуемую батарею №1 я долил примерно 50мл воды. Очень много, батарея была почти сухая! В батарею №2 долил чуть меньше, но тоже по 6-8 кубиков в каждую банку.
После долива воды, напряжение упало. Вода задействовала части пластин, которые давно были сухие и на них непонятно какие отложения.
Итак, предположим, что батарейке не дают нормально жить труднорастворимые отложения (сульфат свинца и α оксид свинца). Они имеют большое сопротивление и пассивируют участки пластин. Кроме того, отложения эти плотные и в них не проникает электролит. Удельная поверхность получается маленькая а циркуляции электролита – никакой. В результате симптомы: потеря емкости АКБ, большое внутреннее сопротивление (батарея не может отдавать большой ток), кипение при зарядке.
Батарея в таком состоянии даже может отдать свою паспортную емкость. Но только ооочень малыми токами. Так что практической пользы от этого никакой.
Задача цикла восстановления это растворить «вредные» соли. И путем заряда с правильным режимом, создать новые структуры с правильным строением.
Батарея 1 потребовала долгого выравнивания. То есть циклов заряда с ожиданием.
Заряжаем, ждем, напряжение падает. Потом опять заряжаем.

Я думаю, что из-за длительного выкипания воды, на пластинах образовались неравномерные отложения с разными свойствами. Получается разный заряд в пределах одной пластины.
К сожалению, дальнейшие тесты этой батарейки на разряд / заряд выявили, что у нее есть отгнившие пластины в одной из банок. Видно это как «ступеньку» на кривой разряда.

Выглядит это так:
image
Слева — нормальная разрядная кривая. Справа — что получается когда отгнила часть пластин.
Батарея №2 почти не требовала выравнивания.
Электролит в ней выкипел быстро из-за аварии соседней батареи и я предпологаю что трудно растворимые отложения не успели образоваться.
Ей я прогнал 2 цикла разряд / заряд.
Для теста в условиях приближенных к реальным, я использовал APC Back CS500, нагруженный на лампочку 60вт. Мощность лампочки известна и замерена, КПД UPSа тоже замерен и равен 80%. От времени работы можно будет вычислить отдаваемую емкость.
Вот тестовая установка:
image
После долива воды, но до проведения восстановительных циклов, я зарядил батарейку №1 штатным способом от UPS и разрядил на лампочку.
Лампочка горела 8 минут, а батарея разрядилась до 9,5в (измерено под нагрузкой). Потом бесперебойник отключился. Возьмем эти 8 минут за точку отсчета (до процедур восстановления).
Батарею №2 я до восстановления так мучить не стал. Она еще годная, а разрядом до 9,5в ее можно убить.
После проведения восстановления, я испытал батарею №1 на том-же стенде с лампочкой и…
она продержалась 16 минут.
То есть в 2 раза дольше, чем до. И это при среднем токе 6,5А.
Конечно отгнившие пластины уже ничем не спасти, но динамика мне понравилась.
Даже эту дохлую батарейку можно использовать для питания какого-нибудь роутера или свича где-нибудь на чердаке / подвале и она продержит минут 30-40.
Отданная емкость до 0,87 Ач, после 1,73 Ач

Батарея №2 после восстановления продержалась на стенде с лампочкой 37 минут.
При этом я ее разряжал не до 9,5 а до 10,5 вольт. Она кальциевая и ее нельзя разряжать до 9,5.
Отданная емкость при этом 4 Ач при среднем токе 6,5 А.

Сравним это с табличкой из даташита вверху. Даташит конечно на другую батарею, но это не сильно важно.
В таблице нет значения 6,5А, но есть соседние колонки для напряжения 1,75в на элемент.
Я приблизительно посчитал и получилось 50минут продержала бы новая батарея ток 6,5А по даташиту.

Это значит что батарейка №2 отдает примерно 74% емкости относительно новой. Я считаю неплохо после 4х с лишним лет работы и пережитой аварии.
Эта батарейка еще послужит.
Вобще, я конечно не рекомендую использовать восстановленные батареи для важных задач.
Но для второстепенных, для питания маломощного и не критичного оборудования их можно использовать.

Еще я планирую использовать установку для прогона тестового разряда / заряда используемых батарей примерно раз в год. Буду оценивать их емкость и пригодность чтобы не получить аварию с разрушением, коротким замыканием батареи и выгоранием бесперебойника.
Всем спасибо за внимание, надеюсь кому нибудь пригодится.
Если кто хочет пожертвовать батарейку для опытов в Барнауле, прошу в личку.

понедельник, 21 января 2019 г.

Установка ssh Ubuntu 16.04 | Losst

https://losst.ru/ustanovka-ssh-ubuntu-16-04

losst.ru

Установка ssh Ubuntu 16.04 | Losst

admin

Довольно часто может понадобиться получить доступ к удаленному компьютеру или серверу через интернет. В случае с персональным компьютером, это может понадобиться для срочного решения какой-либо проблемы, а в случае с сервером это вообще очень распространенная практика. В Linux наиболее часто для решения таких задач используется протокол ssh.
Служба ssh позволяет получить доступ к терминалу удаленного компьютера и выполнить там все необходимые вам команды. При своей простоте она достаточно безопасна, чтобы использоваться для решения серьезных коммерческих задач, так и задач обычных пользователей. В этой статье мы рассмотрим как выполняется установка ssh Ubuntu 16.04, а также поговорим о начальной настройке ssh сервера.

Что такое SSH?

SSH или Secure Shell - это протокол безопасного доступа из одного компьютера к другому по сети. У протокола SSH очень много возможностей. Вы можете создавать защищенные соединения между компьютерами, открывать командную строку на удаленном компьютере, запускать графические программы, передавать файлы и организовывать частные сети.
За поддержку протокола SSH в Linux отвечает набор программного обеспечения OpenSSH. Это открытая реализация этого протокола, которая предоставляет все необходимые возможности. В состав пакета OpenSSH входят утилиты для установки соединения, передачи файлов, а также сам ssh сервер.

Установка OpenSSH в Ubuntu

Установить ssh на Ubuntu будет очень просто, программа считается стандартной и используется почти везде. Хотя по умолчанию в дистрибутиве ее нет, но зато она есть в официальных репозиториях.
Поэтому для установки откройте терминал с помощью сочетания клавиш Ctrl+Alt+T и выполните команду:
sudo apt install openssh-server
ssh
Будет загружено несколько пакетов, а когда установка ssh сервера Ubuntu завершится, программа будет готова к работе. Если вы хотите чтобы служба запускалась автоматически нужно добавить его в автозагрузку. Поэтому чтобы включить ssh Ubuntu 16.04 выполните:
sudo systemctl enable sshd
ssh1
Если затем вы захотите удалить службу из автозагрузки, используйте команду disable:
sudo systemctl disable sshd
Что касается клиента ssh, то он уже установлен в системе по умолчанию. Сейчас вы можете попробовать подключиться к локальному ssh серверу просто набрав:
ssh localhost
ssh3
В одной из предыдущих статей мы рассматривали что означает адрес 0.0.0.0, сейчас вы можете убедиться что в пределах этой машины он значит локальный адрес:
ssh 0.0.0.0
ssh2
Точно таким способом вы можете получить ssh доступ ubuntu к любому другому компьютеру из сети. Для этого достаточно указать вместо localhost его ip адрес и имя пользователя в таком формате:
$ ssh имя_пользователя@ip_адрес

Настройка SSH в Ubuntu

С параметрами по умолчанию сервер SSH не очень безопасен поэтому перед тем, как программа будет готова к полноценному использованию ее нужно немного настроить. Все настройки сервера SSH хранятся в конфигурационном файле sshd_config, который находится в папке /etc/ssh.
Перед тем как вносить изменения в этот конфигурационный файл рекомендуется сделать его резервную копию, для этого можете использовать такую команду:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults
Дальше вы можете перейти к настройке конфигурационного файла:
sudo vi /etc/ssh/sshd_config
Первым делом желательно сменить порт, на котором работает ssh, возможный злоумышленник не знал включен ли у вас этот сервис. Найдите в конфигурационном файле строчку Port и замените ее значение на любое число, например, Port 2222:
ssh4
По умолчанию вход от имени суперпользователя включен, рекомендуется отключить такую возможность. Для этого найдите строчку PermitRootLogin и замените ее значение на no:
ssh5
Чтобы разрешить аутентификацию по ключу, а не по паролю найдите строку PubkeyAuthentication и убедитесь, что ее значение yes.
ssh6
После того как все настройки будут завершены, сохраните изменения нажав :w и перезапустите службу ssd:
sudo systemctl restart ssh
Более подробно про настройку и использование различных тонкостей ssh рассказано в статье как использовать ssh.
Если вы изменили порт, то при подключении в клиенте тоже нужно указать новый порт, так как по умолчанию будет использоваться 22, например:
ssh -p 2222 localhost 
К тому же, если на компьютере установлен и настроен брандмауэр, то в нем тоже нужно разрешить доступ к новому порту ssh, для этого выполните:
sudo ufw allow 2222
Даже если служба ssh находится на порту по умолчанию, его тоже нужно открыть в брандмауэре если вы собираетесь подключаться к компьютеру через интернет:
sudo ufw allow 22
Настройка ssh Ubuntu 16.04 полностью завершена.

Выводы

Теперь, когда установка ssh Ubuntu 16.04 завершена, вы можете получить удаленный доступ к своему компьютеру через интернет и быть уверенными что он находится в безопасности. Если у вас остались вопросы, спрашивайте в комментариях.

воскресенье, 20 января 2019 г.

Ошибка обзора сети по SMB в Gnome-Commander

http://hunter-lee.blogspot.com/2011/06/smb-gnome-commander.html

Ошибка обзора сети по SMB в Gnome-Commander

Установили с другом на его ноутбуке Ubuntu. Установка и настройки нового оконного менеджера UNITY прошла без сучка и задоринки. Далее, мы привыкли ко всяким там TotalCommander`ам и FAR-manager`ам... Конечно же, в этом случае в Линуксе, нам подходит Gnome-Commander. Устанавливаем его (кто как привык, sudo apt-get install gnome-commander в консоли или в менеджере пакетов Synaptic или через Центр приложений Ubuntu). Запускаем. Понимаем, что нам для работы нужно ходить в сеть Windows. Отлично! В Gnome-Commander нажимаем кнопочку на верхней панели "SMB"... и получаем ошибку "Ошибка обзора сети.Проверьте, установлен ли модуль SMB." ("Failed to browse the network. Is the SMB module installed?") Да, установлен, ведь через Nautilus мы можем подключиться к ресурсу ОС Windows!

После поиска в Гугл находим решение:
Нужно установить дополнительно еще одну библиотеку  libgnomevfs2-extra.
Сделать это так же не сложно. Идем в любимую консоль (можно нажать Ctrl+Alt+t), и пишем там 
sudo apt-get install libgnomevfs2-extra
После установки этой библиотеки сеть SMB в Gnome-Commander успешно открывается. А что бы Gnome-Commander запоминал пароли, который вы вводите при доступах к Windows-ресурсам, можно в настройках Gnome-Commander выставить опцию в меню "Настройки" - "Параметры" - "Сеть"  установить флажок "Use Gnome Keyring manager for authentification".
Все, более "Ошибка обзора сети.Проверьте, установлен ли модуль SMB" не возникает, пароли при доступах к посещенным ранее ресурсам Windows не спрашиваются.
Приятной работы в Ubuntu!!!

Ввод компьютера Ubuntu в домен Windows

help.ubuntu.ru

Ввод компьютера в домен Windows


Введение

Зачастую возникает необходимость ввести Linux-машину в существующий домен Windows. Например, чтобы сделать файловый сервер с помощью Samba. Сделать это очень просто, для этого вам понадобятся клиент Kerberos, Samba и Winbind.
Перед установкой желательно обновиться:
sudo aptitude update
sudo aptitude upgrade
Установить всё это добро можно командой:
sudo aptitude install krb5-user samba winbind 
Также может понадобиться установить следующие библиотеки:
sudo aptitude install libpam-krb5 libpam-winbind libnss-winbind
Либо, если вы используете Ubuntu Desktop, те же пакеты можно поставить через менеджер пакетов Synaptic.
Далее вам потребуется настроить все вышеперечисленные инструменты для работы с вашим доменом. Допустим, вы хотите войти в домен DOMAIN.COM, доменконтроллером которого является сервер dc.domain.com с IP адресом 192.168.0.1. Этот же сервер является и первичным DNS сервером домена. Кроме того допустим у вас есть второй доменконтроллер1), он же DNS - dc2.domain.com с IP 192.168.0.2. Ваш же компьютер будет называться smbsrv01.

Настройка DNS

Для начала необходимо изменить настройки DNS на вашей машине, прописав в качестве DNS сервера доменконтроллер2) и в качестве домена поиска - нужный домен.
Если у вас статический IP-адрес, то в Ubuntu Desktop это можно сделать через Network Manager, в Ubuntu Server необходимо изменить содержимое файла /etc/resolv.conf на примерно такое:
domain domain.com
search domain.com
nameserver 192.168.0.1
nameserver 192.168.0.2
В современных дистрибутивах файл resolv.conf создается автоматически и править вручную его не нужно. Для получение нужного результата нужно добавить необходимые изменения в файл: /etc/resolvconf/resolv.conf.d/head Данные которые будут добавлены в него, будут автоматически вставлены в файл /etc/resolv.conf
Если IP-адрес динамический и присваивается DHCP сервером то после перезагрузки resolv.conf может формироваться «неправильный» resolv.conf' , например присутствует только один nameserver 192.168.0.1 и не указаны domain и search. Нужно отредактировать /etc/dhcp/dhclient.conf. Чтобы появились записи domain и search нужно убрать комментарий перед строкой supersede domain-name, и вписать свой домен:
supersede domain-name "domain.com";
Чтобы добавить еще один nameserver нужно убрать комментарий перед prepend domain-name-servers и указать ip сервера:
prepend domain-name-servers 192.168.0.2;
Для применения изменений остается перезапустить службу:
/etc/init.d/networking restart
Теперь убедитесь, что вы задали нужное имя компьютера в файле /etc/hostname:
smbsrv01
Кроме того необходимо отредактировать файл /etc/hosts так, чтобы в нём была запись с полным доменным именем компьютера и обязательно коротким именем хоста, ссылающаяся на один из внутренних IP:
# Имена этого компьютера
127.0.0.1 localhost
127.0.1.1 smbsrv01.domain.com smbsrv01
Сразу нужно проверить что нормально пингуется наш контроллер домена, по короткому и полному имени, чтобы в будушем не получать ошибки что контроллер домена не найден:
ping dc
ping dc.domain.com
Не обязательно, но если вы что-то поменяете - перезагрузите компьютер для применения изменений.

Настройка синхронизации времени

Далее необходимо настроить синхронизацию времени с доменконтроллером. Если разница будет более 5 минут мы не сможем получить лист от Kerberos. Для единовременной синхронизации можно воспользоваться командой:
sudo net time set dc
Если в сети существует сервер точного времени, то можно воспользоваться им или любым публичным:
ntpdate ntp.mobatime.ru
Автоматическая же синхронизация настраивается с помощью ntpd, это демон будет периодически выполнять синхронизацию. Для начала его необходимо установить:
sudo aptitude install ntp
Теперь исправьте файл /etc/ntp.conf, добавив в него информацию о вашем сервере времени:
# You do need to talk to an NTP server or two (or three).
server dc.domain.com
После чего перезапустите демон ntpd:
sudo /etc/init.d/ntp restart
Теперь пора настраивать непосредственно взаимодействие с доменом.

Настройка авторизации через Kerberos

Начнём с настройки авторизации в домене через протокол Kerberos. Вам потребуется изменить файл /etc/krb5.conf. В общем случае он выглядит так:
[libdefaults]
 default_realm = DOMAIN.COM
 kdc_timesync = 1
 ccache_type = 4
 forwardable = true
 proxiable = true
 v4_instance_resolve = false
 v4_name_convert = {
  host = {
   rcmd = host
   ftp = ftp
  }
  plain = {
   something = something-else
  }
 }
 fcc-mit-ticketflags = true

[realms]
 DOMAIN.COM = {
  kdc = dc
  kdc = dc2
  admin_server = dc
  default_domain = DOMAIN.COM
 }

[domain_realm]
 .domain.com = DOMAIN.COM
 domain.com = DOMAIN.COM
[login]
 krb4_convert = false
 krb4_get_tickets = false
Вам, конечно, нужно изменить domain.com на ваш домен и dc и dc2 на ваши доменконтроллеры. Кстати, возможно вам понадобится написать полные имена доменконтроллеров dc.domain.com и dc2.domain.com. Поскольку у меня прописан домен поиска в DNS, то мне это делать не нужно.
Обратите особое внимание на регистр написания имени домена - везде, где домен написан в верхнем регистре, его обязательно нужно писать именно в верхнем регистре. Иначе волшебным образом ничего может не заработать.
Это не все возможные опции настройки Kerberos, только основные. Однако их обычно достаточно.
Теперь настало время проверить, что мы можем авторизоваться в домене. Для этого выполните команду
kinit username@DOMAIN.COM
Вместо username естественно стоит вписать имя существующего пользователя домена.
Имя домена необходимо писать заглавными буквами!
Если вы не получили никаких ошибок - значит вы настроили всё верно и домен отдаёт вам билет Kerberos. Кстати, некоторые распространённые ошибки перечислены чуть ниже.
Убедиться в том, что билет получен, можно выполнив команду
klist
Удалить все билеты (они вам вообще говоря не нужны) можно командой
kdestroy
Итак, будем считать, что авторизацию вы настроили, пора настроить непосредственно вход в домен, об этом после списка распространённых ошибок kinit.

Распространённые ошибки kinit

kinit(v5): Clock skew too great while getting initial credentials
Это значит, что у вашего компьютера не синхронизировано время с доменконтроллером (см. выше).
kinit(v5): Preauthentication failed while getting initial credentials
Вы ввели неверный пароль.
kinit(v5): KDC reply did not match expectations while getting initial credentials
Самая странная ошибка. Убедитесь, что имя realm в krb5.conf, а так же домен в команде kinit введены большими буквами:
DOMAIN.COM = {
# ...
kinit username@DOMAIN.COM
kinit(v5): Client not found in Kerberos database while getting initial credentials
Указанного пользователя не существует в домене.

Настройка Samba и вход в домен

Для того, чтобы войти в домен, необходимо прописать правильные настройки в файле /etc/samba/smb.conf. На данном этапе вас должны интересовать только некоторые опции из секции [global]. Ниже - пример части файла конфигурации Samba с комментариями по поводу значения важных параметров:
[global]
   # Эти две опции нужно писать именно в заглавном регистре, причём workgroup без
   # последней секции после точки, а realm - полное имя домена 
   workgroup = DOMAIN
   realm = DOMAIN.COM

   # Эти две опции отвечают как раз за авторизацию через AD
   security = ADS
   encrypt passwords = true
   # Просто важные 
   dns proxy = no 
   socket options = TCP_NODELAY

   # Если вы не хотите, чтобы самба пыталась при случае вылезти в лидеры в домене или рабочей группе,
   # или даже стать доменконтроллером, то всегда прописывайте эти пять опций именно в таком виде
   domain master = no
   local master = no
   preferred master = no
   os level = 0
   domain logons = no

   # Отключить поддержку принтеров
   load printers = no
   show add printer wizard = no
   printcap name = /dev/null
   disable spoolss = yes
После того, как вы отредактируете smb.conf выполните команду
testparm
Она проверит вашу конфигурацию на ошибки и выдаст суммарную сводку о нём:
# testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions
Как видно мы задали правильные параметры для того, чтобы наш компьютер стал членом домена. Теперь пора попытаться непосредственно войти в домен. Для этого введите команду:
net ads join -U username -D DOMAIN
И в случае успеха вы увидите что-то похожее на:
# net ads join -U username -D DOMAIN
Enter username's password:
Using short domain name -- DOMAIN
Joined 'SMBSRV01' to realm 'domain.com'

Используемые параметры команды net

-U username%password: Обязательный параметр, вместо username необходимо подставить имя пользователя с правами администратора домена, и указать пароль.
-D DOMAIN: DOMAIN - собственно сам домен, домен можно и не указывать, но лучше всё же это всегда делать - хуже не будет.
-S win_domain_controller: win_domain_controller, можно не указывать, но бывают случаи когда автоматически сервер не находит контроллер домена.
createcomputer=«OU/OU/…» : В AD часто используется OU (Organizational Unit), есть в корне домена OU = Office, в нем OU = Cabinet, чтобы сразу добавить в нужный можно указать так: sudo net ads join -U username createcomputer=«Office/Cabinet».
Если больше никаких сообщений нет - значит всё хорошо. Попробуйте попинговать свой компьютер по имени с другого члена домена, чтобы убедиться, что в домене всё прописалось так, как надо.
Так же можно набрать команду:
net ads testjoin
Если все хорошо, можно увидеть:
#net ads testjoin
Join is OK
Но иногда после сообщения о присоединении к домену выдаётся ошибка наподобие3):
DNS update failed!
Это не очень хорошо, и в этом случае рекомендуется ещё раз прочитать раздел про настройку DNS чуть выше и понять, что же вы сделали не так. После этого нужно удалить компьютер из домена и попытаться ввести его заново. Если вы твердо уверены, что всё настроили верно, а DNS всё равно не обновляется, то можно внести вручную запись для вашего компьютера на ваш DNS сервер и всё будет работать. Конечно, если нет никаких других ошибок, и вы успешно вошли в домен. Однако лучше всё же разберитесь, почему DNS не обновляется автоматически. Это может быть связано не только с вашим компьютером, но и с некорректной настройкой AD.
Прежде чем выяснять, почему же не обновляется DNS, не забудьте перезагрузить компьютер после введения в домен! Вполне возможно, что это решит проблему.
Если всё прошло без ошибок, то поздравляем, вы успешно вошли в домен! Можете заглянуть в AD и убедиться в этом. Кроме того хорошо бы проверить, что вы можете видеть ресурсы в домене. Для этого установите smbclient:
sudo aptitude install smbclient
Теперь можно просматривать ресурсы компьютеров домена. Но для этого нужно иметь билет kerberos, т.е. если мы их удалили, то получаем опять через kinit (см. выше). Посмотрим какие ресурсы предоставлены в сеть компьютером workstation:
smbclient -k -L workstation
Вы должны увидеть список общих ресурсов на этом компьютере.

Настройка Winbind

Если вам необходимо как-либо работать с пользователями домена, например, настраивать SMB-шары с разграничением доступа, то вам понадобится кроме самой Samba ещё и Winbind - специальный демон, служащий для связи локальной системы управления пользователями и группами Linux с сервером Active Directory. Проще говоря Winbind нужен, если вы хотите видеть пользователей домена на своём компьютере с Ubuntu.
Winbind позволяет спроецировать всех пользователей и все группы AD в вашу Linux систему, присвоив им ID из заданного диапазона. Таким образом вы сможете назначать пользователей домена владельцами папок и файлов на вашем компьютере и выполнять любые другие операции, завязанные на пользователей и группы.
Для настройки Winbind используется всё тот же файл /etc/samba/smb.conf. Добавьте в секцию [global] следующие строки:
   # Опции сопоставления доменных пользователей и виртуальных пользователей в системе через Winbind.
   # Диапазоны идентификаторов для виртуальных пользователей и групп.
   idmap uid = 10000 - 40000
   idmap gid = 10000 - 40000
   # Эти опции не стоит выключать.
   winbind enum groups = yes
   winbind enum users = yes
   # Использовать домен по умолчанию для имён пользователей. Без этой опции имена пользователей и групп
   # будут использоваться с доменом, т.е. вместо username - DOMAIN\username.
   # Возможно именно это вам и нужно, однако обычно проще этот параметр включить. 
   winbind use default domain = yes
   # Если вы хотите разрещить использовать командную строку для пользователей домена, то
   # добавьте следующую строку, иначе в качестве shell'а будет вызываться /bin/false
   template shell = /bin/bash
   # Для автоматического обновления билета Kerberos модулем pam_winbind.so нужно добавить строчку
   winbind refresh tickets = yes
Параметры :
idmap uid = 10000 - 40000
idmap gid = 10000 - 40000
в новых версиях Samba уже устарели и при проверке конфига самбы с помощью testparm будет выдваться предупреждение:
WARNING: The «idmap uid» option is deprecated
WARNING: The «idmap gid» option is deprecated
Чтобы убрать предупреждения нужно заменить эти строки на новые:
idmap config * : range = 10000-20000
idmap config * : backend = tdb
Теперь перезапустите демон Winbind и Samba в следующем порядке:
sudo /etc/init.d/winbind stop
sudo smbd restart
sudo /etc/init.d/winbind start 
Запускаем
sudo testparm
Смотрим есть ли ошибки или предупреждения, если появится:
«rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)»
Без перезагрузки можно устранить так:
ulimit -n 16384
Для сохранения после перезагрузки отредактировать файл /etc/security/limits.conf
# Добавить в конец файла строки:
*               -    nofile            16384
root            -    nofile            16384
После перезапуска проверьте, что Winbind установил доверительные отношения с AD командой:
# wbinfo -t
checking the trust secret for domain DCN via RPC calls succeeded
А так же, что Winbind увидел пользователей и группы из AD командами4):
wbinfo -u
wbinfo -g
Эти две команды должны выдать список пользователей и групп из домена соответственно. Либо с префиксом DOMAIN\, либо без него - в зависимости от того, какое значение вы указали параметру «winbind use default domain» в smb.conf.
Итак, Winbind работает, однако в систему он ещё не интегрирован.

Добавление Winbind в качестве источника пользователей и групп

Для того, чтобы ваша Ubuntu прозрачно работала с пользователями домена, в частности, чтобы вы могли назначать пользователей домена владельцами папок и файлов, необходимо указать Ubuntu использовать Winbind как дополнительный источник информации о пользователях и группах.
Для этого измените две строчки в файле /etc/nsswitch.conf:
passwd:         compat
group:          compat
добавив к ним в конец winbind:
passwd:         compat winbind
group:          compat winbind
также рекомендую привести строку files в файле /etc/nsswitch.conf к виду:
files:          dns mdns4_minimal[NotFoud=return] mdns4
ubuntu server 14.04, файл /etc/nsswitch.conf не содержал строку «files: dns mdns4_minimal[NotFoud=return] mdns4» вместо неё было: «hosts: files mdns4_minimal [NOTFOUND=return] dns wins» Которую я преобразовал в: «hosts: dns mdns4_minimal[NotFoud=return] mdns4 files» после чего всё заработало
Теперь проверьте, что Ubuntu запрашивает у Winbind информацию о пользователях и группах, выполнив
getent passwd
getent group 
Первая команда должна вам вернуть всё содержимое вашего файла /etc/passwd, то есть ваших локальных пользователей, плюс пользователей домена с ID из заданного вами в smb.conf диапазона. Вторая должна сделать тоже самое для групп.
Теперь вы можете взять любого пользователя домена и сделать его, например, владельцем какого-нибудь файла.

Авторизация в Ubuntu через пользователей домена

Несмотря на то, что все пользователи домена фактически стали полноценными пользователями системы (в чём можно убедиться, выполнив последние две команды из предыдущего раздела), зайти ни под кем из них в систему всё ещё нельзя. Для включения возможности авторизации пользователей домена на компьютере с Ubuntu необходимо настроить PAM на работу с Winbind.

Он-лайн авторизация

Для Ubuntu 10.04 и выше добавьте всего одну строку в файле /etc/pam.d/common-session, т.к. PAM и так неплохо справляется с авторизацией:
session  optional  pam_mkhomedir.so skel=/etc/skel/ umask=0077
Для Ubuntu 13.10 чтобы появилось поле ручного ввода логина необходимо в любой файл из папки /etc/lightdm/lightdm.conf/ снизу добавить строку:
greeter-show-manual-login=true
Для Ubuntu 9.10 и ниже придется редактировать несколько файлов (но никто не запрещает использовать этот способ и в 10.04 - он тоже работает):
Последовательность строк в файлах имеет значение!
/etc/pam.d/common-auth
auth        required      pam_env.so
auth        sufficient    pam_unix.so likeauth nullok try_first_pass
auth        sufficient    pam_winbind.so use_first_pass krb5_auth krb5_ccache_type=FILE
auth        required      pam_deny.so
/etc/pam.d/common-account
account     sufficient    pam_winbind.so
account     required      pam_unix.so
/etc/pam.d/common-session
session     optional      pam_mkhomedir.so skel=/etc/skel/ umask=0077
session     optional      pam_ck_connector.so nox11
session     required      pam_limits.so
session     required      pam_env.so
session     required      pam_unix.so
/etc/pam.d/common-password
password    sufficient    pam_unix.so try_first_pass use_authtok nullok sha512 shadow
password    sufficient    pam_winbind.so
password    required      pam_deny.so
И, наконец, необходимо перенести запуск Winbind при загрузке системы после всех остальных служб (по умолчанию он запускается с индексом 20). Для этого в терминале выполните следующую команду:
sudo bash -c "for i in 2 3 4 5; do mv /etc/rc$i.d/S20winbind /etc/rc$i.d/S99winbind; done"
Что эквивалентно запуску для каждого уровня (в примере - 4) команды:
mv /etc/rc4.d/S20winbind /etc/rc4.d/S99winbind
В некоторых случаях winbind может иметь иной уровень запуска (например, S02winbind). Поэтому сначала проверьте имена файлов, вполнив команду «ls /etc/rc{2,3,4,5}.d/ | grep winbind» (без кавычек).
Готово, все настройки завершены. Перезагружайтесь и пытайтесь войти с учетной записью пользователя домена.

Офф-лайн авторизация

Часто возникает ситуация, когда домен-контроллер недоступен по различным причинам — профилактика, отключение света или вы принесли ноутбук домой и хотите поработать. В этом случае для Winbind можно настроить кэширование учетных записей пользователей домена. Для этого необходимо сделать следующее. Добавьте в секцию [global] файла /etc/samba/smb.conf следующие строки:
[global]
   # Возможность оффлайн-авторизации при недоступности доменконтроллера
   winbind offline logon = yes
   # Период кэширования учетных записей, по умолчанию равен 300 секунд
   winbind cache time = 300
   # Необязательная настройка, но избавляет от нудных пауз, указываем контроллер домена dc, 
   # можно указать и ip, но это является плохим тоном
   password server = dc
Обычно этого достаточно. Если же возникают ошибки, то необходимо создать файл /etc/security/pam_winbind.conf со следующим содержанием5):
Внимание! При использовании советов ниже может возникать совершенно случайная ошибка «Сбой аутентификации»! Поэтому все что Вы делаете, Вы делаете на свой страх и риск!
#
# pam_winbind configuration file
#
# /etc/security/pam_winbind.conf
#
[global]
  # turn on debugging
  debug = no
  # request a cached login if possible
  # (needs "winbind offline logon = yes" in smb.conf)
  cached_login = yes
  # authenticate using kerberos
  krb5_auth = yes
  # when using kerberos, request a "FILE" krb5 credential cache type
  # (leave empty to just do krb5 authentication but not have a ticket
  # afterwards)
  krb5_ccache_type = FILE
  # make successful authentication dependend on membership of one SID
  # (can also take a name)
  ;require_membership_of =
  silent = yes
Файл /etc/pam.d/gnome-screensaver в таком случае принимает вид:
auth    sufficient      pam_unix.so nullok_secure
auth    sufficient      pam_winbind.so use_first_pass
auth    required        pam_deny.so
А также изменяется файл /etc/pam.d/common-auth:
auth    optional        pam_group.so
auth    sufficient      pam_unix.so nullok_secure  use_first_pass
auth    sufficient      pam_winbind.so use_first_pass
auth    required        pam_deny.so

четверг, 17 января 2019 г.

Общий доступ к папкам в Ubuntu

http://ubuntamania.blogspot.com/2013/09/blog-post_3984.html

 

Общий доступ к папкам

   1. Откройте (запустите) терминал.                
   2. Введите shares-admin и нажмите Enter, чтобы запустить программу Общий доступ.
   3. Нажмите кнопку Разблокировать и введите свой пароль в поле Пароль.
   4. Нажмите кнопку Аутентифицировать. (Возможно, что этот пункт у Вас не появится, как и пункт 5. Это нормально, переходите сразу к пункту 6)
   5. Вы можете получить сообщение Сервисы общего доступа не установлены. Если это случится, убедитесь, что два пункта в окне сообщения отмечены и нажмите Установить службы. Службы поддержки общего доступа будут загружены и установлены; это может занять некоторое время.
   6. Выберите вкладку Общие папки и нажмите Добавить.
   7. Выберите расположение папки, которую вы хотите предоставить в общий доступ, изменив опцию Путь
   8. Выберите Сети Windows (SMB) из опции Доступ через.
   9. Введите название и комментарий для общей папки. (Имя папки подставляется автоматически при выборе папки)
   10. Если Вы хотите, чтобы люди могли добавлять, изменять и удалять файлы из общей папки, снимите отметку с Только для чтения. Если вы оставите Только для чтения отмеченным, люди смогут только просматривать файлы в папке.
   11. Чтобы предоставить доступ к общей папке, нажмите OK. Другие люди из той же локальной сети, что и вы, смогут получить доступ к папке.

Примечание.
Это копи-паст для тех, кому лень читать файлы справки.
Лично проверено, работает.

среда, 16 января 2019 г.

Автоматическое обновление DNS-записи рабочей станции Linux при вводе в DNS-домен (No DNS domain configured for computer. Unable to perform DNS Update)

gita-dev.ru

Автоматическое обновление DNS-записи рабочей станции Linux при вводе в DNS-домен (No DNS domain configured for computer. Unable to perform DNS Update)

Черноусов Антон

После выхода Samba 4 ввести рабочую станцию под управлением Linux в Windows домен стало гораздо проще, но все еще переодически всплывают нестандартные ситации такие как ошибка No DNS domain configured for computer. Unable to perform DNS Update.
Процесс ввода рабочей станции под управлением Linux в домен Active Directory мы с вами уже рассматривали, а сегодня мы рассмотрим одну из нештатных ситуаций. Ввод рабочей станции осуществляется выполнением команды:
# net ads join -U "chernousov.a@laximo.local"
Если после ввода пароля вы получили сообщение:
Enter chernousov.a@laximo.local's password:
Using short domain name -- LAXIMO
Joined 'JUKE' to dns domain 'laximo.local'
No DNS domain configured for juke. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER
Это означает, что к домену вы присоединились, но в домене не была сзодана DNS-запись для вашей рабочей станции или сервера. Соответственно и обновление связки DNS-имя -> выданный DHCP-адрес обновляться тоже не будет. В принципе с этим живут и прописывают DNS-записи в ручную или используют доступ к рабочим станциям по ip-адресам, но все это или костыли или каменный век, а нам надо понять почему это происходит и настроить полноценную работу с DNS-именами рабочих станций.

Отладка ввода рабочей станции Ubuntu Linux в домен Active Directory

Для максимально подробной отладки процесса ввода в домен вы можете выполнить команду ввода в домен, но с дополнительным параметром -d 90:
# net ads join -d 90 -U "chernousov.a@laximo.local"
После ввода в домен в режиме отладки, проблема вырисовывается более явно и подробно:
Using short domain name -- LAXIMO
Joined 'JUKE' to dns domain 'laximo.local'
kerberos_kinit_password: as JUKE$@LAXIMO.LOCAL using 
[MEMORY:net_ads] as ccache and config 
[/var/run/samba/smb_krb5/krb5.conf.LAXIMO]
WARNING: your /etc/hosts file may be broken!
    Full qualified domain names (FQDNs) should not be specified
    as an alias in /etc/hosts. FQDN should be the first name
    prior to any aliases.
name_to_fqdn: lookup for JUKE -> juke.
added interface enp1s0 ip=10.1.1.18 bcast=10.1.1.255 
netmask=255.255.255.0
added interface tap-juke ip=10.253.2.254 bcast=10.253.2.255 
netmask=255.255.255.0
added interface hm24-internal ip=10.253.3.1 bcast=10.253.3.255 
netmask=255.255.255.0
No DNS domain configured for juke. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER
return code = 0
Экспериментальным путем, мы выяснили, что для правильной регистрации рабочей станции Linux в домене Active Directory, автоматическим обновлением DNS-записей, файл /etc/hosts должен содержать запись:
127.0.1.1       juke.laximo.local  juke
Естественно, что в вашем случае названия будут другие, но логика простая, главное соблюдать порядок записи: полное имя с доменом, следом через пробел короткое имя без указания домена.

Использование прокси в Ubuntu

help.ubuntu.ru

Использование прокси | Русскоязычная документация по Ubuntu


В этой статье содержится описание настроек прокси-соединений для различных программ.

Глобальные настройки

Для того, чтобы настроить прокси в Ubuntu откройте Системные параметры, перейдите в пункт Сеть. Выберите пункт Сетевая прокси-служба. Смените метод на Вручную и введите ваши настройки прокси. Минус такой настройки в том, что в случае, если у Вас прокси с авторизацией по логину и паролю, то указать эти данные невозможно, и прокси не будет работать.
Настроить прокси на системном уровне можно и через конфигурационные файлы (True UNIX-way). Для этого нужно открыть на редактирования с правами root файл /etc/environment (например sudo nano /etc/environment). В конец файла добавим строки:
https_proxy="https://user:pass@proxy:port/" 
http_proxy="http://user:pass@proxy:port/"
ftp_proxy="ftp://user:pass@proxy:port/"
socks_proxy="socks://user:pass@proxy:port/"
Если прокси без авторизации, то строки должны быть вида:
<бла-бла>_proxy="https://proxy:port/"
Для применения настроек придется пере-загрузиться, изменения в файле /etc/environment вступили в силу при запуске процесса init - родителя всех процессов в системе и именно от него все дочерние процессы унаследуют настройки прокси в переменных окружения.
Как правила глобальной насторойки прокси достаточно для того что бы все остальные приложения работали через прокси без необходимости настраивать прокси внутри приложения. Однако некоторые приложения не умеют работать с глобальными настройками или им нужны особенные настройки.

Firefox

Firefox умеет использовать как глобальные настройки, так и свои собственные. Для того чтобы назначить ему прокси, откройте его окно настроек, перейдите на вкладку Дополнительно, далее на вкладку Сеть и нажмите на кнопку Настроить напротив надписи Настройка параметров соединения Firefox с Интернетом. Важное отличие от других программ — он умеет использовать NTLM аутентификацию (используется на Microsoft Internet Security and Acceleration Server).

Chromium-browser

Также может использовать глобальные настройки и имеет свои. Для того чтобы назначить ему прокси персонально, откройте файл /etc/chromium-browser/default и допишите следующие строки:
CHROMIUM_FLAGS="-proxy-server=адрес:порт"
И перезапустите браузер

APT

В новых версиях умеет работать с глобальными настройками, но в более старых мог работать только с персональными настройками. Сообщенные настройки: в файле /etc/apt/apt.conf нужно указать:
Acquire::http::proxy "http://логин:пароль@ip_прокси:порт_прокси/";
Acquire::https::proxy "http://логин:пароль@ip_прокси:порт_прокси/";
Acquire::ftp::proxy "http://логин:пароль@ip_прокси:порт_прокси/";
Acquire::socks::proxy "http://логин:пароль@ip_прокси:порт_прокси/";
Acquire::::Proxy "true";
Если сервер без авторизации, то логин:пароль@ нужно убрать.

Bash

Само собой настройка через /etc/environment (описано выше в разделе глобальных настроек) будет работать для всех программ запущенных из терминала. Если вы хотите указать настройки персонально для запускаемой программы, то перед ее запуском нужно выполнить:
export http_proxy='http://логин:пароль@ip_прокси:порт_прокси/'
export ftp_proxy='http://логин:пароль@ip_прокси:порт_прокси/'

wget

Дописываем в файл /etc/wgetrc :
proxy-user = username 
proxy-password = password
http_proxy = http://xxx.xxx.xxx.xxx:8080/
ftp_proxy = http://xxx.xxx.xxx.xxx:8080/
use_proxy = on
Если прокси без авторизации, то proxy-user и proxy-password нужно убрать

apt-add-repository

Многие компании и университеты блокируют все неизвестные порты наружу. Обычно блокируется и порт 11371, используемый утилитой apt-add-repository для добавления репозиториев. Есть простое решение, как получать ключи репозиториев через 80-ый порт, который используется для доступа к web-страницам и чаще всего не блокируется.
Редактируем файл /usr/lib/python2.6/dist-packages/softwareproperties/ppa.py (нужны привилегии root, вместо /usr/lib/python2.6 может быть версия 2.7). Ищем фразу keyserver.ubuntu.com, заменяем
hkp://keyserver.ubuntu.com
на
hkp://keyserver.ubuntu.com:80
В версии 16.04 достаточно иметь настроенной переменную окружения
https_proxy="https://user:pass@proxy:port/"

Полноценный ввод рабочей станции Ubuntu Linux в Windows-домен

https://gita-dev.ru/blog/polnotsennyj-vvod-rabochej-stantsii-ubuntu-linux-v-windows-domen/

gita-dev.ru

Полноценный ввод рабочей станции Ubuntu Linux в Windows-домен

Черноусов Антон

Рабочая станция или сервер под управлением Linux-дистрибутива в Windows домене, миф или реальность? Давно уже не только реальность, а еще и достаточно типовая задача решаемая при помощи пошаговой инструкции, а если ее переложить в виде скрипта, то ввод в домен будет не сложнее чем при использовании родных утилит Windows. Так как последние версии Samba позволяют вводить рабочую станцию или сервер под управлением OS Linux в домен Windows практически без "танцев с бубном", мы проработали подробный план по вводу в домен для систем на базе Ubuntu Linux. Данная инструкция была многократно опробирована, как в рамках крупных проектов, так и типовых интерграций Ubuntu Workstations с Windows Active Directory.
Рабочая станция или сервер под управлением Linux-дистрибутива в Windows домене - миф или реальность? Давно уже не только реальность, а еще и достаточно типовая задача решаемая при помощи пошаговой инструкции, а если ее переложить в виде скрипта, то ввод в домен будет не сложнее чем при использовании родных утилит Windows.
Так как, последние версии Samba позволяют вводить рабочую станцию или сервер под управлением OS Linux в домен Windows практически без "танцев с бубном", мы проработали подробный план по вводу в домен для систем на базе Ubuntu Linux.
Данная инструкция была многократно апробирована, как в рамках крупных проектов, так и типовых интеграций Ubuntu Workstations с Windows Active Directory.
Цели:
  • Интегрировать рабочую станцию в домен INFERNO
  • Реализовать возможность авторизации с использованием учетных записей домена
  • Организовать доступ к рабочей станции для определенных групп пользователей
  • Предоставить административные функции (sudo) для определенной группы пользователей
  • Организовать общий сетевой ресурс и ограничить доступ для определенных групп пользователей
  • Дополнительно предоставить возможность offline-авторизации в случае временной недоступности домена

Установка и настройка:

Установим пакеты, необходимые для интеграции с Windows-доменом:
# aptitude install krb5-user samba winbind libnss-winbind libpam-winbind
Для полноценной интеграции с доменом уровня выше 2003, необходима корректная настройка клиента DNS, а именно, необходимо указать домен поиска по умолчанию и DNS-сервер, на котором имеются сервисные записи ресурсов Windows домена.
В нашем случае файл /etc/resolv.conf ,если не используется автоматическая настройка с использованием DHCP, приобретает вид:
nameserver 172.16.0.3
search inferno.inferno.com
В случае использования автогенерируемого файла resolv.conf (средствами resolvconf) в файл /etc/interfaces необходимо добавить записи:
dns-nameservers 172.16.0.3
dns-search inferno.inferno.com
Основой работы Windows-домена уровня включая 2003 и выше является служба Kerberos, за пользовательскую часть которой, отвечает пакет krb5-user. На этапе установки пакета у вас будет запрошен REALM-домена и адреса Kerberos серверов обслуживающих домен.
В последних версиях пакета эта информация не требуется и все сведения для нормального функционирования Kerberos-клиента получаются посредством DNS-запросов к сервисным записям, а конфигурационный файл /etc/krb5.conf приобретает вид:
[libdefaults]
 default_realm = INFERNO.INFERNO.COM
 dns_lookup_realm = true
 dns_lookup_kdc = true
 rdns = true
 ticket_lifetime = 24h
 forwardable = yes
[login]
 krb4_convert = true
 krb4_get_tickets = false
Проверить корректность настроек службы Kerberos можно выполнив команду получения «билета»:
# kinit chernousov@INFERNO.INFERNO.COM
Обратите внимание, что имя домена указано прописными буквами - это принципиальный момент ,в противном случае,вы получите ошибку: kinit: KDC reply did not match expectations while getting initial credentials). Проверьте полученные "билеты" командой klist, и если вы получили список выданных "билетов" kerberos, то можно приступать к присоединению рабочей станции к домену. Ввод рабочей станции или сервера под управлением OS Linux несколько сложнее чем Windows.
И первым этапом необходимо провести базовую настройку конфигурационного файла /etc/samba/smb.conf и минимальный файл конфигурации достаточный для подключения к домену windows (с комментариями) приведен ниже:
[global]
 # Рабочая группа (Сокращенное наименование домена)
 workgroup = INFERNO
 # Описание сервера отопражается при выводе перечня компьютеров домена или рабочей группы 
 # %h (системное имя linux хоста).
 server string = %h server (Samba, Ubuntu)
 # Выключаем встроенный wins-сервер.
 wins support = no
 # Полное имя домена к которому подключена станция
 realm = INFERNO.INFERNO.COM
 # Разрешаем nmbd поиск NetBIOS имен с использованием DNS.
 dns proxy = yes
 # Расположение log-файлов.
 log file = /var/log/samba/log.%m
 # Ограничивам размер каждого log-файла в килобайтах.
 max log size = 1000
 # В syslog пишем только минимум информации, например о 
 #крахе службы (основные данные в персональный log samba)
 syslog = 0
 # Можно назначить скрипт который будет отпабатывать в случае 
 # краха службы samba (например перезапуск и отправка письма администраторам)
 # panic action = /usr/share/samba/panic-action %d
 # Роль сервера (отдельный сервер или член домена)
 server role = member server
 # Запросы с неправильным паролем будут отклонены, если такое имя пользователя существует.
 # Если не существует, то такие запросы будут считаться как попытки зайти гостем
 map to guest = bad user
 # Интерпретатор командной строки для доменных пользователей
 template shell = /bin/bash
Подключение к домену выполняется следующей командой:
# net ads join -U "chernousov@INFERNO.INFERNO.COM"
Обратите внимание, что имя домена аналогично REALM и пишется прописными буквами, в противном случае, возможны проблемы взаимодействия со службой Kerberos. В результате выполнения команды вы получите следующий вывод:
Enter chernousov@INFERNO.INFERNO.COM's password:
Using short domain name -- INFERNO
Joined 'INFER-ANALYSER' to dns domain 'inferno.inferno.com'
Это означает, что присоединение к домену прошло успешно и можно приступать к настройке интеграции служб учетных записей.
Перезапускаем службы smbd, nmbd и winbind.
# service smbd restart
# service nmbd restart
# service winbind restart
Настраиваем обработку учетных данных пользователей домена на рабочей станции Linux
При интеграции служб учетных записей Windows и Linux необходимо учитывать, что Windows использует SID-записи, а Linux использует UID и GID. Преобразование из одного типа записей в другой может осуществляться несколькими методами, разница в которых состоит лишь в том, будут ли числовые идентификаторы Linux-пользователей вошедших при помощи домена идентичными на всех рабочих станциях Linux подключенных к домену, или нет.
Для обеспечения уникальности числовых идентификаторов GID и UID предназначена служба Active Directory Microsoft Windows Services для UNIX (служба NIS), описываемая RFC 2307. В случае развертывания службы, становится доступна дополнительная вкладка Unix Attributes в свойствах пользователя, где необходимо задать GID и UID для каждого из пользователей. Такой метод необходим только в ряде случаев взаимодействия Unix-сервисов, например, в случае использования NFS ,как показывает практика,можно обойтись без обеспечения такого функционала. Так же, имеются некоторые проблемы, которые могут возникнуть в результате использования RFC 2307, например, в случае если администратор забудет назначить Unix-идентификаторы, получение сведений о пользователе вызовет ошибку. Мы не будем рассматривать сервисы RFC 2307 (возможно, я рассмотрю их позже если читателям будет интересно, конечно же).
Рассмотрим несколько типовых команд wbinfo, которые нам понадобятся в дальнейшем.
Получаем список пользователей домена:
# wbinfo -u
INFERNO\guest
INFERNO\administrator
INFERNO\tsinternetuser
INFERNO\iusr_dc
INFERNO\iwam_dc
INFERNO\iusr_dc2
INFERNO\valiev
INFERNO\mac
INFERNO\verkeev
INFERNO\bochevarov
INFERNO\vdgg
Получаем список доменных групп:
# wbinfo -g
INFERNO\domain users
INFERNO\domain computers
INFERNO\domain guests
INFERNO\group policy creator owners
INFERNO\domain admins
Получаем Windows SID пользователя:
# wbinfo --name-to-sid="INFERNO\Chernousov"
S-1-5-21-1177238915-436374069-1343024091-5713 SID_USER (1)
Преобразовываем Windows SID в Linux UID:
# wbinfo --sid-to-uid=S-1-5-21-1177238915-436374069-1343024091-5713-1 
На этом месте остановимся подробнее.
Как вы видите, в результате преобразования мы получили:
-1
Это означает, что служба конвертации идентификаторов работает неправильно.
Модифицируем наш конфигурационный файл, добавив в него следующие параметры:
idmap config *:backend = tdb
idmap config *:range = 10000 - 49999
После модификации перезапустим службы и проверим выполнение команды преобразования идентификаторов:
# wbinfo --sid-to-uid=S-1-5-21-1177238915-436374069-1343024091-571310001
В этом режиме на каждом клиенте используется собственная база данных для преобразования имен в Windows и Linux идентификаторы, и для работы с учетными записями домена и Kerberos этого вполне достаточно, но обратите внимание на переменную range и она описывает диапазон, исходя из которого, будут выдаваться Unix-идентификаторы в процессе запроса данных. Этим, собственно, и объясняются расхождения UID для пользователей домена на разных рабочих станциях.
Настраиваем связку «Локальный пользователь → Доменный пользователь».
Это достаточно просто. Необходимо в конфигурационный файл /etc/nsswitch.conf к параметрам passwd и group добавить метод winbind, в результате должно получиться вот так:
passwd: compat winbind
group: compat winbind
Для задействования этого функционала необходима установленная библиотека libnss-winbind. Следующим этапом необходимо удостовериться, что интеграция доменных учетных записей прошла успешно, для этого выполните следующую команду:
# id "INFERNO\chernousov"
Если все правильно, то вы увидите список доменных групп и их преобразование в локальные идентификаторы. Например, вот так:
uid=10001(INFERNO\chernousov) gid=10000(INFERNO\domain users) группы=10000(INFERNO\domain users),
10001(INFERNO\группа с запрещением репликации паролей rodc),10002(INFERNO\domain admins),
10003(INFERNO\rocket_access),10004(INFERNO\unix users),10005(INFERNO\unix admins)
Так же, рекомендую проверить назначение домашнего каталога и интерфейса командной строки для пользователя по умолчанию. Для этого служит команда getent:
# getent passwd "INFERNO\chernousov"
Большую часть параметров можно переопределить, но нас вполне устроят и значения по умолчанию.
INFERNO\chernousov:*:10001:10000:Anton Chernousov:/home/INFERNO/chernousov:/bin/bash
Следующим этапом рассмотрим авторизацию пользователей и вопросы разграничения доступа.
За авторизацию доменных пользователей отвечает библиотека libpam-winbind.
Описания методов PAM-авторизации пользователей находятся в каталоге /etc/pam.d/ и при установке библиотеки необходимые параметры настраиваются автоматически. Можете проверить доступ, попробовав подключиться к рабочей станции по SSH указав учетные данные доменного пользователя.
# ssh "INFERNO\chernousov"@172.16.3.61
Если авторизоваться у вас получилось, то это означает, что настройка прошла успешно. Стоит лишь обратить ваше внимание, что автосоздание домашних каталогов пользователей в Ubuntu отключено по умолчанию. Для изменения такого поведения выполните в консоли команду:
# dpkg-reconfigure libpam-runtime
Выберите параметр «Create home directory on login» и повторите вход доменным пользователем, если все прошло успешно, то каталог будет создан автоматически.
По умолчанию, всем пользователям домена разрешен доступ на рабочую станцию, но нам требуется определить доступ определенной группе пользователей домена, а остальным запретить. Для этого служит конфигурационный файл /etc/security/pam_winbind.conf по умолчанию он отсутствует, но вы можете скопировать его из каталога /usr/share/doc/libpam-winbind/examples/pam_winbind.conf.
В данном файле можно настроить несколько параметров, как я уже сказал выше, разрешим доступ только для одной группы пользователей, для чего определим ее SID в домене:
# wbinfo --name-to-sid="INFERNO\unix users"
S-1-5-21-1177238915-436374069-1343024091-5725 SID_DOM_GROUP (2)
И установим параметр require_membership_of в полученный SID:
require_membership_of = S-1-5-21-1177238915-436374069-1343024091-5725
В данном файле мы можем, так же, настроить параметры кеширования учетных данных и offline-авторизации:
cached_login = yes
Для работы offline авторизации в конфигурационный файл /etc/samba/smb.conf необходимо добавить параметр:
winbind offline logon = yes
Так-же, нам необходимо предоставить определенной группе пользователей права администратора на этой рабочей станции. В linux-терминологии предоставим им доступ к выполнению любых операций через sudo. Для этого в файл /etc/sudoers добавим доменную группу INFERNO\unix admins:
%INFERNO\\unix\ admins ALL=(ALL:ALL) ALL
Обратите внимание на экранирование пробелов и символа\.
Следующим этапом разрешим пользователям доступ определенным каталогам на linux-машине по протоколу smb (общие ресурсы Windows). Например, предоставим доменным пользователям доступ к каталогу /opt/share с правами только на чтение.
Создадим каталог /opt/share и установим его группу владельцев в «пользователи домена»:
# mkdir /opt/share
# chgrp -R "INFERNO\domain users" /opt/share
В файл /etc/samba/smb.conf добавим описание ресурса и ограничим доступ к нему для группы пользователей домена.
[share]
 comment = Public domain share 
 path = /opt/share/
 browseable = yes
 read only = no
 create mask = 0775
 directory mask = 0775
 valid users = @"INFERNO\domain users"

Настройка samba в Ubuntu 16.04 | Losst

https://losst.ru/nastrojka-samba-v-ubuntu-15-10

Настройка samba в Ubuntu 16.04 | Losst

admin

Samba - это программное обеспечение для организации обмена файлами и работы с общими ресурсами между компьютерами под управлением Linux/Unix и операционной системой Windows. Samba состоит из клиентской и серверной части. Клиентская часть позволяет получить доступ к сетевым папкам и ресурсам Windows, а серверная, в свою очередь, открывает общий доступ к папке Ubuntu для других машин, в том числе и Windows.
В этой небольшой инструкции будет рассмотрена простейшая настройка Samba Ubuntu 16.04, а также как настроить общий доступ к папке Ubuntu с несколькими уровнями привилегий.
Мы создадим три общие папки с различными уровнями разрешений. Папку с анонимным доступом, с доступом для пользователей, входящих в определенную группу и доступом лишь для определенного пользователя.
Получить доступ к расшаренным папкам в Ubuntu смогут как Linux так и Widnows машины, с помощью любой программы для работающей по протоколу SMB.

Подготовка Windows

Для того чтобы все работало правильно, все машины должны состоять в одной рабочей группе, указанной на сервере Samba. По умолчанию для Windows, Linux и MacOS рабочая группа называется Workgroup. Чтобы узнать какая рабочая группа используется в вашей Windows откройте командную строку (Win+R, затем cmd) и выполните вот такую команду:
net config workstation
share1
share
Нужный нам параметр мы видим в строке Домен рабочей станции. Это и есть рабочая группа.
Теперь, если у компьютера с Samba сервером в вашей сети будет постоянный IP адрес желательно ввести его в файле hosts. Для этого запустите командную строку от имени администратора:
share3
И выполните команду:
notepad C:\Windows\System32\drivers\etc\hosts
В открывшимся файле добавьте строчку с IP адресом компьютера, на который будет установлен Samba:
192.168.0.1 srvr1.domain.com srvr1
Теперь можно переходить к вопросу как расшарить папку Ubuntu.

Настройка Samba в Ubuntu 16.04

Начнем, как обычно, с установки. Установка Samba Ubuntu вместе со всеми необходимыми компонентами выполняется командой:
sudo apt-get install -y samba samba-common python-glade2 system-config-samba
Когда все будет установлено, можно переходить к настройке. Сначала создайте резервную копию оригинального файла конфигурации Samba:
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
После создания резервной копии, создайте свой файл конфигурации, этой командой:
 sudo vi /etc/samba/smb.conf
Сначала укажем глобальные настройки файлового сервера. Для этого вставьте в файл такие строки:
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = srvr1
security = user
map to guest = bad user
name resolve order = bcast host
wins support = no
dns proxy = no

Рассмотрим подробнее что значат эти строки.
  • workgroup - рабочая группа, как уже говорилось должна одинакова на всех машинах
  • netbios name - имя компьютера, которое будет отображаться в Windows
  • security - по умолчанию выполнять аутентификацию на уровне пользователя
  • name resolve order - очередность разрешения IP адресов по NetBIOS имени. bcast - означает отправить в локальную сеть широковещательный запрос. Если все компьютеры между которыми планируется взаимодействие находятся в одной сети этот вариант оптимальный.
Когда завершите создание конфигурационного файла, переходим к вопросу как расшарить папку Ubuntu для Windows.

Общий доступ к папке Ubuntu

Сначала давайте создадим общую папку доступную всем. То есть с анонимным доступом, без авторизации samba.
Создайте папку, к которой будем открывать доступ, например:
sudo mkdir -p /samba/allaccess
После того как папка создана, нужно сделать для нее правильные права доступа. Следующие команды разрешают доступ к папке для всех и делают владельцем nobody:
cd /samba
$ sudo chmod -R 0755 allaccess
$ sudo chown -R nobody:nogroup allaccess/

Следующим шагом будет описать папку allaccess в файле настройки samba:
[allaccess]
path = /samba/allaccess
browsable = yes
writable = yes
guest ok = yes
read only = no

Теперь ваш конфигурационный файл должен выглядеть вот так:
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = srvr1
security = user
map to guest = bad user
name resolve order = bcast host
dns proxy = no
#==============
[AllAccess]
path = /samba/allaccess
browsable =yes
writable = yes
guest ok = yes
read only = no

Чтобы применить изменения, перезапустите сервер Samba:
sudo service smbd restart
Настройка Samba Ubuntu 16.04 для анонимного доступа завершена. Теперь вы можете проверить доступность общей папки allaccess из Windows, для этого нажмите Win+R и выполните:
\\srvr1\allaccess
share5
Вы увидите нашу папку. Если не увидите, проверьте еще раз конфигурацию. Доступ к папке можно получить без авторизации samba. Настойка Samba шары с доступом без авторизации завершена.

Защищенный общий доступ к папке Ubuntu

Чтобы расшарить папку для Windows Ubuntu, к которой будут иметь доступ только пользователи из определенной группы, создадим отдельную папку и опишем ее в файле настройки Samba в Ubuntu.
Сначала создаем папку:
sudo mkdir -p /samba/allaccess/secured
Дальше установим такие права, чтобы доступ к папке могли получить только пользователи из группы securegroup.
Создаем группу:
sudo addgroup securedgroup
Настраиваем права:
cd /samba/allaccess
$ sudo chown -R richard:securedgroup secured
$ sudo chmod -R 0770 secured/

Последний шаг, добавляем настройки в конфигурационный файл samba:
sudo vi /etc/samba/smb.conf
[secured]
path = /samba/allaccess/secured
valid users = @securedgroup
guest ok = no
writable = yes
browsable = yes

Перезапустите сервер Samba. Теперь доступ к общей папке в Ubuntu могут получить только пользователи группы securegroup.
Чтобы проверить как это работает добавим пользователя richard в нашу группу:
sudo usermod -a -G securedgroup richard
Чтобы пользователь мог работать с расшаренными папками в Ubuntu, он должен быть в базе данных Samba. Поэтому создадим для него пароль Samba:
sudo smbpasswd -a richard
После ввода команды вам будет предложено ввести новый пароль. Для применения изменений не забудьте перезагрузить файловый сервер.
Если вы хотите чтобы общий доступ к папке Ubuntu мог получить доступ только определенный пользователь замените в конфигурационном файле @securegroup на имя пользователя.

Выводы

Вот и все. Теперь вы знаете как правильно выполняется установка Samba на Ubuntu 16.04, а также ее настройка. Кроме ручного редактирования конфигурационных файлов, для того чтобы расшарить папку в Ubuntu можно воспользоваться графической утилитой system-samba-config. Но после того как мы разобрали все низкоуровневые настройки, с этой утилитой вы справитесь без труда.