Как ввести астра линукс в домен

Как ввести астра линукс в домен

В этом посте мы решили рассказать о доменной аутентификации в Linux, с использованием смарт-карт и USB-токенов JaCarta PKI в качестве второго фактора аутентификации. Если о локальной аутентификации через PAM-модуль информации существует довольно много, то вопрос доменной инфраструктуры и аутентификация по Kerberos-билетам в Linux рассмотрен слабо, особенно на русском языке. В качестве операционной системы возьмем Astra Linux и на примере Astra Linux Directory (ALD) это и покажем.

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

Немного вводных об Astra Linux Directory (ALD) и JaCarta PKI

Домен Astra Linux Directory (ALD) предназначен для организации единого пространства пользователей (домена локальной вычислительной сети) в автоматизированных системах.

ALD использует технологии LDAP, Kerberos5, Samba/CIFS и обеспечивает:

  • централизованное хранение и управление учетными записями пользователей и групп;
  • сквозную аутентификацию пользователей в домене с использованием протокола Kerberos5;
  • функционирование глобального хранилища домашних директорий, доступных по Samba/CIFS;
  • автоматическую настройку файлов конфигурации UNIX, LDAP, Kerberos, Samba, PAM;
  • поддержку соответствия БД LDAP и Kerberos;
  • создание резервных копий БД LDAP и Kerberos с возможностью восстановления;
  • интеграцию в домен входящих в дистрибутив СУБД, серверов электронной почты, Web-серверов, серверов печати и другие возможности.

JaCarta PKI — это линейка PKI-токенов для строгой аутентификации пользователей в корпоративных системах, безопасного хранения ключевых контейнеров программных СКЗИ и цифровых сертификатов российского производителя – компании «Аладдин Р.Д.».

В среде Astra Linux Directory (ALD) электронные ключи JaCarta PKI могут использоваться для двухфакторной аутентификации пользователя в домене ALD и отказа от паролей. Кроме того, с этими же электронными ключами можно выполнять различные сценарии внутри ОС, после аутентификации, такие, как: электронная подпись, хранение ключевых контейнеров, доступ к Web-ресурсам, проброс ключа в сессии MS Windows. Доступ к VDI сервисам, таким, как VmWare или Citrix.

Процесс настройки

Пример демо-зоны

  • Сервер — Astra Linux Smolensk SE 1.5 4.2.0-23-generic, x86_64, с установленными пакетами:
  • JaCarta IDProtect 6.37;
  • libccid;
  • pcscd;
  • libpcsclite1;
  • krb5-pkinit;
  • libengine-pkcs11-openssl;
  • opensc.

  • Клиент — Astra Linux Smolensk SE 1.5 4.2.0-23-generic, x86_64, с установленными пакетами:
    • JaCarta IDProtect 6.37;
    • libccid;
    • pcscd;
    • libpcsclite1;
    • krb5-pkinit.
    • Предполагается, что ALD уже развернут, существует минимум один доменный пользователь, который может аутентифицироваться по паролю, время клиента и сервера совпадают.

      Установка драйверов на сервер и клиент

      Для обеспечения работы со смарт-картой JaCarta PKI на клиенте и сервере установите следующие пакеты: libccid, pcscd, libpcsclite1. После установки этих обязательных пакетов установите пакет драйверов IDProtectClient, который можно загрузить с официального сайта «Аладдин Р.Д.».

      Для обеспечения работы со смарт-картой подсистемы Kerberos добавочно к предустановленным пакетам ald/kerberos установите пакет krb5-pkinit на клиенте и сервере.

      Для обеспечения возможности выпуска ключей и сертификатов на JaCarta PKI на сервере также установите пакеты libengine-pkcs11-openssl и opensc.

      Установка и настройка центра сертификации на сервере

      В качестве центра сертификации (CA) будет использован OpenSSL.

      OpenSSL — криптографический пакет с открытым исходным кодом для работы с SSL/TLS. Позволяет создавать ключи RSA, DH, DSA и сертификаты X.509, подписывать их, формировать CSR и CRT.

      Все настройки в руководстве выполняются для тестового домена EXAMPLE.RU. Примем, что сервер и клиент принадлежат домену EXAMPLE.RU, имя сервера – kdc, а клиента – client. При настройке используйте имя вашего домена, сервера и клиента. Выполните следующие действия.

      1. Создайте каталог CA командой mkdir /etc/ssl/CA и перейдите в него. В этом каталоге будут размещаться сгенерированные ключи и сертификаты.
      2. Создайте ключ и сертификат CA:
        $ openssl genrsa -out cakey.pem 2048
        $ openssl req -key cakey.pem -new -x509 –days 365 -out cacert.pem
        В диалоге заполните необходимую информацию о вашем центре сертификации. В Common name указать EXAMPLE.RU.
      3. Создайте ключ и сертификат KDC:
        $ openssl genrsa -out kdckey.pem 2048
        $ openssl req -new -out kdc.req -key kdckey.pem
        В диалоге заполните необходимую информацию о вашем сервере. В Common name указать kdc.
      4. Установите переменные среды. Переменные среды устанавливаются в рамках сессии и не устанавливаются для других сессий и не сохраняются после закрытия сессии.
        export REALM=EXAMPLE.RU — Ваш домен
        export CLIENT=kdc — Вашего сервер
    • Загрузите файл pkinit_extensions — http://dms.aladdin-rd.ru/970c5538-afbf-4a26-a7ef-d76550cbc435
    • Содержимое файла pkinit_extensions (его следует положить в тот каталог, откуда вы выполняете команды):

        Выпустите сертификат KDC:
        $ openssl x509 -req -in kdc.req -CAkey cakey.pem -CA cacert.pem -out kdc.pem -extfile pkinit_extensions -extensions kdc_cert –CAcreateserial –days 365

      Файлы kdc.pem, kdckey.pem, cacert.pem перенесите в /var/lib/krb5kdc/

      Создайте резервную копию файла /etc/krb5kdc/kdc.conf. Отредактируйте /etc/krb5kdc/kdc.conf, дополнив секцию [kdcdefaults] следующими записями:
      pkinit_identity = FILE:/var/lib/krb5kdc/kdc.pem,/var/lib/krb5kdc/kdckey.pem
      pkinit_anchors = FILE:/var/lib/krb5kdc/cacert.pem
      Первая запись задает ключи и сертификат сервера, а вторая указывает на корневой сертификат центра сертификации.

    • Для принятия изменений выполните:
      /etc/init.d/krb5-admin-server restart
      /etc/init.d/krb5-kdc restart
    • Подготовка смарт-карты. Выпуск ключей и сертификата пользователя

      Убедитесь в том, что установлены пакеты libengine-pkcs11-openssl и opensc. Подключите устройство, которое следует подготовить.

      Проинициализируйте устройство, установите PIN-код пользователя. Помните, что инициализация устройства удалит все данные на JaCarta PKI без возможности восстановления.

      Для инициализации необходимо воспользоваться утилитой pkcs11-tool.

      pkcs11-tool —slot 0 —init-token —so-pin 00000000 —label ‘JaCarta PKI’ —module /lib64/libASEP11.so,

      Читайте также:  Смазка для газовых колонок

      —slot 0 — указывает, в какой виртуальный слот подключено устройство. Как правило, это слот 0, но могут быть и другие значения – 1,2 и т.д.;

      —init-token – команда инициализации токена;

      —so-pin 00000000 – PIN-код администратора JaCarta PKI. По умолчанию имеет значение 00000000;

      —label ‘JaCarta PKI’ – метка устройства;

      —module /lib64/libASEP11.so — указывает путь до библиотеки libASEP11.so. Устанавливается в рамках пакета idprotectclient см. раздел «Установка драйверов на сервер и клиент».

      Для задания PIN-кода пользователя используйте команду:

      pkcs11-tool —slot 0 —init-pin —so-pin 00000000 —login —pin 11111111 —module /lib64/libASEP11.so,

      —slot 0 — указывает, в какой виртуальный слот подключено устройство. Как правило, это слот 0, но могут быть и другие значения – 1,2 и т.д.;

      —init-pin – команда установки PIN-кода пользователя;

      —so-pin 00000000 – PIN-код администратора JaCarta PKI. По умолчанию имеет значение 00000000;

      —login – команда логина;

      —pin 11111111 – задаваемый PIN-код пользователя;

      —module /lib64/libASEP11.so — указывает путь до библиотеки libASEP11.so. Устанавливается в рамках пакета idprotectclient см. раздел «Установка драйверов на сервер и клиент».

      Сгенерируйте ключи на устройстве, для этого введите следующую команду:

      pkcs11-tool —slot 0 —login —pin 11111111 —keypairgen —key-type rsa:2048 —id 42 —label “test1 key” —module /lib64/libASEP11.so,

      —slot 0 — указывает, в какой виртуальный слот подключено устройство. Как правило, это слот 0, но могут быть и другие значения – 1,2 и т.д.;

      —login —pin 11111111 — указывает, что следует произвести логин под пользователем с PIN-кодом «11111111». Если у Вашей карты другой PIN-код пользователя, укажите его;

      —keypairgen —key-type rsa:2048 — указывает, что должны быть сгенерированы ключи длиной 2048 бит;

      —id 42 — устанавливает атрибут CKA_ID ключа. CKA_ID может быть любым;

      Запомните это значение! Оно необходимо для дальнейших шагов подготовки устройства к работе.

      —label “test1 key” — устанавливает атрибут CKA_LABEL ключа. Атрибут может быть любым;

      —module /lib64/libASEP11.so — указывает путь до библиотеки libASEP11.so. Устанавливается в рамках пакета idprotectclient см. раздел «Установка драйверов на сервер и клиент».

      Сгенерируйте запрос на сертификат с помощью утилиты openssl. Для этого введите следующие команды:

      Обратите внимание на -new -key 0:42, где — номер виртуального слота с устройством, 42 — атрибут CKA_ID сгенерированных раннее ключей.

      Информацию, которую необходимо указать в запросе, следует задавать в поле "/C=RU/ST=Moscow/L=Moscow/O=Aladdin/OU=dev/CN=test1 (! Ваш_Пользователь!)/emailAddress=test1@mail.com".

      Необходимо установить переменные окружения

      $ export REALM=EXAMPLE.RU #Ваш домен
      $ export CLIENT=test1 #Ваш пользователь

      и выпустить сертификат на пользователя.

      $ openssl x509 -CAkey cakey.pem -CA cacert.pem -req -in client.req -extensions client_cert -extfile pkinit_extensions -out client.pem –days 365

      Далее перекодируйте полученный сертификат из PEM в DER.

      # openssl x509 -in client.pem -out client.cer -inform PEM -outform DER

      Запишите полученный сертификат на токен.

      pkcs11-tool —slot 0 —login —pin 11111111 —write-object client.cer —type ‘cert’ —label ‘Certificate’ —id 42 —module /lib/libASEP11.so,

      —slot 0 — указывает, в какой виртуальный слот подключено устройство. Как правило, это слот 0, но могут быть и другие значения – 1,2 и т.д.;

      —login —pin 11111111 — указывает, что следует произвести логин под пользователем с PIN-кодом «11111111». Если у Вашей карты другой PIN-код пользователя, укажите его;

      —write-object ./client.cer — указывает, что необходимо записать объект и путь до него;

      —type ‘cert’ — указывает, что тип записываемого объекта – сертификат;

      ‘cert’ —label ‘Certificate’ — устанавливает атрибут CKA_LABEL сертификата. Атрибут может быть любым;

      id 42 — устанавливает атрибут CKA_ID сертификата. Должен быть указан тот же CKA_ID, что и для ключей;

      module /lib64/libASEP11.so — указывает путь до библиотеки libASEP11.so.

      Настройка клиента. Проверка работоспособности

      Создайте на клиенте каталог /etc/krb5/. Скопируйте в /etc/krb5/ сертификат CA (cacert.pem) c сервера.

      Настройте kerberos в /etc/krb5.conf. Секцию [libdefaults] дополните следующими строками.

      kinit Когда появится строка запроса PIN-кода к карте, введите его.

      Для проверки того, что kerberos-тикет был успешно получен для пользователя, введите команду klist. Для удаления тикета — kdestroy.

      Для входа в домен по смарт-карте на экране входа в ОС вместо пароля введите PIN-код от смарт-карты.

      На этом настройка окончена. Да, к сожалению, система сама не поменяет и не подстроит login окно под смарт-карту, и оно будет стандартным, но если приложить немного секретных усилий, можно добиться красивого результата.

      Вы можете помочь и перевести немного средств на развитие сайта

      Предполагается, что у вас уже установлена роль AD DS и роль вашего сервера повышена до уровня контроллера домена.

      Данная инструкция проверена на Windows server 2012 r2 и ubuntu desktop 16.04

      Для введения linux-машины в AD вам понадобится установить: Kerberos, Samba, Winbind.

      Перед установкой желательно обновиться:

      Установить всё необходимое можно командой:

      Также может понадобиться установить следующие библиотеки:

      Для начала необходимо изменить настройки DNS на вашей машине, прописав в качестве DNS сервера контроллер домена и в качестве домена поиска — нужный домен.

      В современных дистрибутивах файл resolv.conf создается автоматически и править вручную его не нужно. Для получение нужного результата нужно добавить необходимые изменения в следующий файл:

      Данные, которые будут добавлены в него, будут автоматически вставлены в файл /etc/resolv.conf

      Если IP-адрес динамический и присваивается DHCP сервером то после перезагрузки resolv.conf может формироваться «неправильный» resolv.conf’, например присутствует только один nameserver 192.168.1.39 и не указаны domain и search. Нужно отредактировать

      Читайте также:  Регистрационная форма кандидата лукойл образец

      Чтобы появились записи domain и search нужно убрать комментарий перед строкой supersede domain-name, и вписать свой домен:

      Чтобы добавить nameserver нужно убрать комментарий перед prepend domain-name-servers и указать ip сервера:

      Убираем комментарий в поле alias у параметров interface, fixed-address, option subnet-mask и подставляем свои значения eth33, 192.168.1.42, 255.255.255.0 соответственно

      Для применения изменений остается перезапустить службу:

      Теперь убедитесь, что вы задали нужное имя компьютера в файле (у меня оно ubuntuinAD)

      Кроме того, необходимо отредактировать файл hosts

      так, чтобы в нём была запись с полным доменным именем компьютера и обязательно коротким именем хоста, ссылающаяся на один из внутренних IP:

      Сразу нужно проверить что нормально пингуется наш контролер домена, по короткому (win-serv-2012) и полному имени (win-serv-2012.mage.com), чтобы в будущем не получать ошибки что контролер домена не найден:

      Не обязательно, но если вы что-то поменяете — перезагрузите компьютер для применения изменений.

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

      Далее необходимо настроить синхронизацию времени с контролером домена. Если разница будет более 5 минут мы не сможем получить лист от Kerberos. Для единовременной синхронизации можно воспользоваться командой:

      Если в сети существует сервер точного времени, то можно воспользоваться им или любым публичным:

      Автоматическая же синхронизация настраивается с помощью ntpd, этот демон будет периодически выполнять синхронизацию. Для начала его необходимо установить:

      Теперь исправьте файл

      добавив в него информацию о вашем сервере времени:

      После чего перезапустите демон ntpd:

      Чтобы изменить часовой пояс, необходимо ввести команду

      Теперь пора настраивать непосредственно взаимодействие с доменом.

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

      Начнём с настройки авторизации в домене через протокол Kerberos. Вам потребуется изменить файл /etc/krb5.conf

      Вам, конечно, нужно изменить mage.com на ваш домен и win-serv-2012 на ваш(и) контроллер(ы) домена. Кстати, возможно вам понадобится написать полное имя контроллера домена win-serv-2012.mage.com. Поскольку у меня прописан домен поиска в DNS, то мне это делать не нужно.

      Обратите особое внимание на регистр написания имени домена — везде, где домен написан в верхнем регистре, его обязательно нужно писать именно в верхнем регистре. Иначе волшебным образом ничего может не заработать.

      Это не все возможные опции настройки Kerberos, только основные. Однако их обычно достаточно.

      Теперь настало время проверить, что мы можем авторизоваться в домене. Для этого выполните команду

      Имя домена необходимо писать заглавными буквами!

      Если вы не получили никаких ошибок — значит вы настроили всё верно и домен отдаёт вам билет Kerberos.

      Убедиться в том, что билет получен, можно выполнив команду

      Удалить все билеты (они вам вообще говоря не нужны) можно командой

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

      Для того, чтобы войти в домен, необходимо прописать правильные настройки в файле /etc/samba/smb.conf

      На данном этапе вас должны интересовать только некоторые опции из секции [global]. Ниже — пример части файла конфигурации Samba с комментариями по поводу значения важных параметров:

      После того, как вы отредактируете smb.conf, выполните команду

      Она проверит вашу конфигурацию на ошибки и выдаст суммарную сводку о нём:

      Смотрим есть ли ошибки или предупреждения, если появится:

      «rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)»

      Необходимо отредактировать файл /etc/security/limits.conf

      Как видно мы задали правильные параметры для того, чтобы наш компьютер стал членом домена. Теперь пора попытаться непосредственно войти в домен. Для этого введите команду:

      И в случае успеха вы увидите что-то похожее на:

      Если появляется ошибка Failed to join domain: Failed to set account flags for machine account (NT_STATUS_ACCESS_DENIED) – в нашем случае это говорит о том, что у пользователя ubuntuinAD нет прав на добавление пользователей (самого себя) в домен. Для этого необходимо залогиниться под админом AD

      Далее запускаем команду и выбираем пункт создания папки для пользователя домена

      и выбрать пункт Create home folder on login. Также в файле /etc/samba/smb.conf добавили

      В процессе входа в Linux может появляться ряд сообщений типа:

      Чтобы избавиться от вывода подобного рода сообщений при входе в систему есть два простых решения. Либо закомментировать участок кода в файле /etc/bash.bashrc, либо для доменных пользователей использовать альтернативную shell-оболочку, например zsh (при этом надо поменять параметр template shell конфигурационного файла smb.conf на /bin/zsh и перезапустить службы Samba). Я предпочёл первый способ.

      Этот участок скрипта используется для банального вывода подсказки о том, что для выполнения административных действий требуется использовать sudo. При этом здесь выполняется проверка членства залогинившегося пользователя в группах вызовом утилиты groups, которая в свою очередь при вызове в контексте доменного пользователя будет пытаться вернуть список доменных групп в которые он входит. При этой операции используется Winbind, у которого есть проблемы с чтением из домена AD групп имеющих непустой атрибут sIDHistory.

      Так же можно набрать команду:

      Если все хорошо, можно увидеть:

      Но иногда после сообщения о присоединении к домену выдаётся ошибка наподобие

      Это не очень хорошо, и в этом случае рекомендуется ещё раз прочитать раздел про настройку DNS чуть выше и понять, что же вы сделали не так. После этого нужно удалить компьютер из домена и попытаться ввести его заново. Если вы твердо уверены, что всё настроили верно, а DNS всё равно не обновляется, то можно внести вручную запись для вашего компьютера на ваш DNS сервер и всё будет работать. Конечно, если нет никаких других ошибок, и вы успешно вошли в домен. Однако лучше всё же разберитесь, почему DNS не обновляется автоматически. Это может быть связано не только с вашим компьютером, но и с некорректной настройкой AD.

      Читайте также:  Правила нарезки колбасных изделий в магазине

      Прежде чем выяснять, почему же не обновляется DNS, не забудьте перезагрузить компьютер после введения в домен! Вполне возможно, что это решит проблему.

      Если всё прошло без ошибок, то поздравляем, вы успешно вошли в домен! Можете заглянуть в AD и убедиться в этом. Кроме того, хорошо бы проверить, что вы можете видеть ресурсы в домене. Для этого установите smbclient:

      Теперь можно просматривать ресурсы компьютеров домена. Но для этого нужно иметь билет kerberos, т.е. если мы их удалили, то получаем опять через kinit.

      Посмотрим какие ресурсы предоставлены в сеть одним из компьютеров (win-serv-2012):

      Вы должны увидеть список общих ресурсов на этом компьютере.

      Если вам необходимо как-либо работать с пользователями домена, например, настраивать SMB-шары с разграничением доступа, то вам понадобится кроме самой Samba ещё и Winbind — специальный демон, служащий для связи локальной системы управления пользователями и группами Linux с сервером Active Directory. Проще говоря Winbind нужен, если вы хотите видеть пользователей домена на своём компьютере с Ubuntu.

      Winbind позволяет спроецировать всех пользователей и все группы AD в вашу Linux систему, присвоив им ID из заданного диапазона. Таким образом вы сможете назначать пользователей домена владельцами папок и файлов на вашем компьютере и выполнять любые другие операции, завязанные на пользователей и группы.

      Для настройки Winbind используется всё тот же файл /etc/samba/smb.conf. Добавьте в секцию [global] следующие строки:

      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 в следующем порядке:

      Смотрим есть ли ошибки или предупреждения

      После перезапуска проверьте, что Winbind установил доверительные отношения с AD командой:

      А так же, что Winbind увидел пользователей и группы из AD командами:

      Эти две команды должны выдать список пользователей и групп из домена соответственно. Либо с префиксом MAGE, либо без него — в зависимости от того, какое значение вы указали параметру «winbind use default domain» в smb.conf.

      Итак, Winbind работает, однако в систему он ещё не интегрирован.

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

      Для того, чтобы ваша Ubuntu прозрачно работала с пользователями домена, в частности, чтобы вы могли назначать пользователей домена владельцами папок и файлов, необходимо указать Ubuntu использовать Winbind как дополнительный источник информации о пользователях и группах.

      Для этого измените две строчки в файле /etc/nsswitch.conf

      добавив к ним в конце winbind:

      также рекомендую привести строку hosts к виду:

      Теперь проверьте, что Ubuntu запрашивает у Winbind информацию о пользователях и группах, выполнив

      Первая команда должна вам вернуть всё содержимое вашего файла /etc/passwd, то есть ваших локальных пользователей, плюс пользователей домена с ID из заданного вами в smb.conf диапазона. Вторая должна сделать тоже самое для групп.

      Теперь вы можете взять любого пользователя домена и сделать его, например, владельцем какого-нибудь файла.

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

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

      Для Ubuntu 16 устанавливаем графическую оболочку и отключаем гостя

      Необходимо перенести запуск Winbind при загрузке системы после всех остальных служб (по умолчанию он запускается с индексом 20). Для этого в терминале выполните следующую команду:

      Что эквивалентно запуску для каждого уровня (в примере — 4) команды:

      В некоторых случаях winbind может иметь иной уровень запуска (например, S02winbind). Поэтому сначала проверьте имена файлов, выполнив команду

      Готово, все настройки завершены. Перезагружайтесь и пытайтесь войти с учетной записью пользователя домена.

      Создал домен AD в astra linux, при присоединении виндовых машин к домену проблем нет,а вот авторизация на linux не проходит.
      Тестовый клиент — debian 9 в домен введен

      думаю подвох в том,что не создаются какие доп параметры для пользователей AD, тк не раз в статьях видел некую проверку id:

      а у меня выдает что такого пользователя нет(проверял и на сервере и на клиенте)

      так же встречается такая проверка,которая у меня вообще выходит без ответа:

      Ссылка на основную публикацию
      Ищем клад 1 python
      1 задача: Во многих задачах, связанных с компьютерами, особенно близких к аппаратной части, важную роль играют числа, являющиеся степенями двойки:...
      Замена чарджера на ноутбуке
      Как легко проверить исправность чаржера (battery charger) на материнской плате ноутбука. Первая часть видео. Батареи для ноутбуков с Aliexpress http://ali.pub/qyu2m...
      Зачем нужны перемычки на жестком диске
      Одной из деталей жесткого диска является перемычка или джампер. Она была важной частью устаревших HDD, работающих в режиме IDE, но...
      Как в 1с распровести документ
      Этой статьей я продолжаю серию заметок об эффективных приемах работы в 1С:Бухгалтерия 8.3. Рассказываю о хитростях, которые мало кто знает...
      Adblock detector