anúncios

Mostrando postagens com marcador Windows. Mostrar todas as postagens
Mostrando postagens com marcador Windows. Mostrar todas as postagens

terça-feira, 4 de novembro de 2025

Conectando ao MS SQL Server com autenticação do usuário do Windows (Windows Authentication) em Java

Ao trabalhar com sistemas corporativos que utilizam o Microsoft SQL Server, é comum encontrar ambientes configurados para autenticação integrada do Windows. Isso significa que o acesso ao banco de dados é feito com base nas credenciais do usuário logado no sistema operacional, dispensando o uso de nome de usuário e senha definidos diretamente no banco.

Quando desenvolvemos aplicações Java que precisam se conectar ao SQL Server usando esse tipo de autenticação, é necessário realizar uma configuração específica no driver JDBC. Caso contrário, a aplicação não conseguirá autenticar corretamente o usuário e a conexão falhará.

Por que é necessário o arquivo msql-jdbc_auth.dll?

O driver oficial do SQL Server para Java, conhecido como Microsoft JDBC Driver for MS QL Server, oferece suporte à autenticação integrada do Windows através de uma biblioteca nativa chamada msql-jdbc_auth.dll.

Essa DLL atua como uma ponte entre o Java e as APIs do Windows responsáveis pela autenticação. Sem ela, o Java não teria acesso ao contexto de segurança do sistema operacional, e a tentativa de conexão com autenticação integrada resultaria em erro.

Em resumo, o Java precisa desse componente nativo para poder "herdar" as credenciais do usuário logado e repassá-las ao SQL Server de forma segura.

Passo a passo para configurar

  1. Download o driver JDBC oficial
  2. Acesse o site oficial da Microsoft e baixe o driver JDBC mais recente.

    No momento da escrita deste artigo, a versão disponível é a 12.8.1, e o link direto de download é: https://go.microsoft.com/fwlink?linkid=2283744

  3. Descompactar o pacote
  4. Após o download, descompacte o arquivo. Dentro da pasta extraída você encontrará o driver mssql-jdbc-12.8.1.jar (ou .jre11, .jre17, conforme sua versão do Java) e também a biblioteca nativa msql-jdbc_auth-12.8.1.x64.dll.

  5. Copiar a DLL para o diretório correto
  6. Copie o arquivo msql-jdbc_auth-12.8.1.x64.dll para o diretório bin da instalação do Java.

    Exemplo de caminho no Windows:

    C:\Program Files\Java\jdk-17\bin

    Esse diretório faz parte do java.library.path, o que garante que a JVM consiga localizar a DLL durante a execução.

  7. Configurar a string de conexão
  8. A string de conexão deve informar que será usada a autenticação integrada.

    Exemplo:

    String connectionUrl = "jdbc:sqlserver://localhost:1433;"
    + "databaseName=MinhaBase;"
    + "integratedSecurity=true;";
    Connection conn = DriverManager.getConnection(connectionUrl);

    Para projetos Spring Boot, configure no arquivo application.properties:

    spring.datasource.url=jdbc:sqlserver://IPSERVIDORDBMSSQLSERVER:1433;databaseName=MinhaBase;integratedSecurity=true;
    spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver

    Caso use Quarkus, a configuração fica assim:

    quarkus.datasource.jdbc.url=jdbc:sqlserver://IPSERVIDORDBMSSQLSERVER:1433;databaseName=MinhaBase;integratedSecurity=true;
    quarkus.datasource.jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver

    Observe o parâmetro integratedSecurity=true, que é o que ativa o uso da DLL para autenticação.

  9. Executar a aplicação
  10. Com a DLL no diretório correto e o driver JDBC configurado no classpath, sua aplicação Java será capaz de se conectar ao SQL Server utilizando as credenciais do usuário do Windows atual.

Configuração para Linux com Windows Authentication

Em sistemas Linux, a autenticação integrada não funciona nativamente com a DLL, pois ela é específica do Windows.

Nesse caso, o método recomendado é usar Kerberos, o mesmo protocolo que o Active Directory utiliza para autenticação entre domínios.

Passos para configurar no Linux

  1. Instale os pacotes necessários
  2. Em distribuições baseadas em Debian/Ubuntu:

    sudo apt install krb5-user libsasl2-modules-gssapi-mit

    No Fedora:

    sudo dnf install krb5-workstation
  3. Configure o arquivo /etc/krb5.conf
  4. Adicione o domínio e o servidor KDC da sua rede corporativa.

    Exemplo:

    
    [libdefaults]
        default_realm = MINHAEMPRESA.LOCAL
        dns_lookup_kdc = true
        dns_lookup_realm = true
    
    [realms]
        MINHAEMPRESA.LOCAL = {
            kdc = dc1.minhaempresa.local
        }
    
    
  5. Obtenha um ticket Kerberos com seu usuário do domínio
  6. kinit usuario@MINHAEMPRESA.LOCAL

    Após autenticar, você pode confirmar o ticket com:

    klist
  7. Configure a conexão JDBC
  8. No application.properties (Spring Boot ou Quarkus), a URL deve indicar o uso do principal Kerberos:

    Spring

    spring.datasource.url=jdbc:sqlserver://IPSERVIDORDBMSSQLSERVER:1433;databaseName=MinhaBase;authenticationScheme=JavaKerberos;
    spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver

    Quarkus

    quarkus.datasource.jdbc.url=jdbc:sqlserver://IPSERVIDORDBMSSQLSERVER:1433;databaseName=MinhaBase;authenticationScheme=JavaKerberos;
    quarkus.datasource.jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver

    A opção authenticationScheme=JavaKerberos instrui o driver JDBC a usar o ticket obtido via kinit.

Considerações finais

Essa configuração é especialmente útil em ambientes corporativos onde a política de segurança exige Single Sign-On (SSO) e o gerenciamento centralizado de permissões. Além disso, evita o armazenamento de senhas no código-fonte ou em arquivos de configuração, o que aumenta a segurança da aplicação.

Vale lembrar que a autenticação integrada funciona apenas quando a aplicação Java está sendo executada em um ambiente Windows. Para servidores Linux, é necessário configurar o Kerberos e utilizar parâmetros adicionais no driver.

Em resumo, a presença da DLL msql-jdbc_auth é fundamental para que o Java consiga usar a autenticação nativa do Windows ao se conectar ao MS SQL Server. Com ela corretamente posicionada e o driver JDBC configurado, o processo de autenticação se torna transparente e seguro, aproveitando os recursos já disponíveis no sistema operacional.

Feito!

sexta-feira, 1 de julho de 2022

Conhecendo o projeto Windows XP Delta Edition

O Windows XP marcou época, fazendo parte da vida digital de milhões de pessoas, especialmente na primeira década dos anos 2000. Até hoje muita gente venera o sistema operacional da Microsoft como um dos melhores já lançados, se não, o melhor o Windows da história. Talvez por este motivo as pessoas continue revitalizando o saudoso Windows XP até os dias atuais, , mas será que vale a pena usar um sistema operacional com suporte descontinuado?

Depende, se você ainda tem computador antigo, pode testar o Windows XP Delta Edition, mas por sua conta em risco, antes é recomendado testar em máquina virtual com algum dos hypervisores, tais como: VirtualBox, VMWare, Hyper-V ou KVM.

Referências

https://xpdelta.weebly.com/

Feito!

sábado, 5 de dezembro de 2020

Configurando o ambiente PHP 8 do jeito certo no Windows

PHP 8 do jeito certo no Windows 10

É comum no Windows usar ferramenta Wampp, Xampp, conhecidos como "amps" que inclui o Apache, PHP, MySQL e phpmyadmin, de início parece ser bom, mas devemos tomar cuidado para que não fiquemos presos nessas ferramentas de modo que não saibamos a trabalhar em outro ambiente. Principalmente para quem é iniciante ou está aprendendo, é importante saber trabalhar de modo desapegado, tanto para ter flexibilidade, quanto para entender como as coisas funcionam.

O desenvolvedor PHP no Windows precisa no mínimo saber usar o PHP instalado do zero, até mesmo porque a partir da versão 5.4, o PHP vem com servidor embutido que nos permite executar uma aplicação rapidamente usando o terminal.

Acesse https://php.net/downloads.php e faça o download do PHP para Windows. Recomendo o download da versão mais recente do PHP. Até a data de publicação deste post, a versão atual do PHP é 8.0.0.

Extrair, renomear para php-8.0.0 e copiar para C:\

Acessar C:\php-8.0.0 e renomear o arquivo php-development.ini para php.ini

session.save_path = "c:\Windows\Temp"
file_uploads = On
upload_max_filesize = 10M
max_file_uploads = 10M

Extensões

diretório das extensões

extension_dir="ext"

Habilitar as extensões. Por padrão vem comentadas, basta retirar o (ponto-e-vírgula ;) na frente.

extension=curl
extension=gd
extension=mbstring
extension=mysqli
extension=openssl
extension=pdo_mysql
extension=pdo_pgsql
extension=sockets

Habilitar os erros

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
display_erros = On

Habilitar o JIT

opcache.enable=1
opcache.jit_buffer_size=100M
opcache.jit=1255

Adicionar no PATH do SO

Botão direito em "Meu Computador", Propriedades, Configurações avançadas do sistema, Variáveis de Ambiente, PATH, Novo e coloca o caminho "C:\php-8.0.0". Clique em OK. Feche todas as janelas restantes clicando em OK.

Abre o PowerShell e digite: php --version

PHP 8.0.0 (cli) (built: Nov 25 2020 22:02:58) (NTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies

Crie um diretório www no lugar desejado e crie um arquivo info.php

<?php
phpinfo();

No diretório www, execute: php -S 127.0.0.0:8000

No browser, acesse http://localhost:8000

Feito!

domingo, 21 de junho de 2020

Instalando o Docker com WSL2 no Windows 10

Em 2016, a Microsoft anunciou a possibilidade de rodar o Linux dentro do Windows 10 como um subsistema e o nome a isto foi dado de WSL ou Windows Subsystem for Linux.

O acesso ao sistema de arquivos no Windows 10 pelo Linux era simples e rápido, porém não tinhamos uma execução completa do kernel do Linux e outros artefatos nativos e isto impossibilitava a execução de várias tarefas no Linux, uma delas é o Docker.

Em 2019, a Microsoft anunciou o WSL2, com uma dinâmica aprimorada em relação a 1ª versão:

  • Execução do kernel completo do Linux
  • Melhor desempenho para acesso aos arquivos dentro do Linux
  • Compatibilidade completa de chamada do sistema

O WSL2 já estava disponível na versão Insider do Windows, mas na última semana de maio de 2020 passou a estar disponível em final release na atualização 20.04 do Windows 10.

Assim, o WSL2 permitiu que executemos Docker no Linux usando o Windows 10.

Compare as versões: https://docs.microsoft.com/pt-br/windows/wsl/compare-versions

Vamos entender como usar o Docker com o WSL 2.

Antes de começarmos o que você precisa ter para rodar o WSL:

  • Windows 10 Home ou Professional
  • Uma máquina compatível com virtualização
  • Pelo menos 4GB de memória RAM
  1. Verifique a versão do seu Windows, se já for a versão 20.04 ótimo, estamos prontos, senão precisamos instalar a atualização para instalar a 20.04.
    https://www.microsoft.com/pt-br/software-download/windows10
    O software da atualização verificará se sua máquina é compatível com a atualização. A atualização poderá levar muito tempo, pra mim levou mais de 1 hora para atualizar.
  2. Instale a última atualização do kernel do WSL 2:
    https://docs.microsoft.com/pt-br/windows/wsl/wsl2-kernel
    Basta instalar, não precisa de mais nada
    Recomendar este tutorial e colocar no Youtube Install Windows Subsystem for Linux (WSL) on Windows 10
  3. Habilite o recurso do WSL no Windows
    Digite no PowerShell em modo administrador:
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

    Reinicie sua máquina somente por segurança.
  4. Atribua a versão default do WSL para a versão 2
    wsl --set-default-version 2
  5. Escolha sua distribuição Linux no Windows Store
    Ao iniciar a versão, você deverá criar um usuário que poderá ser o mesmo da sua máquina e uma senha, este será o usuário root da sua instância WSL.
  6. Alterar a versão do WSL de uma distribuição
    wsl --set-version
  7. Dicas:
    • Atalho no menu iniciar Ou executando C:\Windows\System32\wsl.exe
    • O sistema de arquivos do Windows é acessível em /mnt
    • É possível acessar o sistema de arquivos do Linux pela rede do Windows digite \\wsl$
    • É possível acessar uma pasta digitando explorer.exe
    • É possível abrir uma pasta com o VSCode digitando code .
    • É possível acessar executáveis do Windows no terminal do Linux.
  8. Instale o Docker Desktop versão maior ou igual 2.3
  9. Habilite o WSL no Docker Desktop
    Vá em Resources/WSL Integration
  10. Teste o seu Docker
    Execute o comando docker run ou docker-compose up
  11. Por padrão o WSL2 pode utilizar “recursos de forma ilimitada” na sua máquina
    Se você quiser limitar os recursos, crie um arquivo .wsconfig na pasta do seu usuário
    https://docs.microsoft.com/pt-br/windows/wsl/wsl-config#configure-global-options-with-wslconfig
    Depois de configurar execute no power shell:
    wsl --shutdown
    (vai reiniciar o Docker também e vai aparecer uma mensagem se você quer iniciar o Docker
  12. As duas distribuições WSL do docker
    https://www.docker.com/blog/new-docker-desktop-wsl2-backend/
  13. Liberar memória no host
    https://linux-mm.org/Drop_Caches
    echo 1 | sudo tee /proc/sys/vm/drop_caches
    echo 3 | sudo tee /proc/sys/vm/drop_caches
  14. Use BuildKit and multi-stage builds
    Acrescente export DOCKER_BUILDKIT=1 no .profile do seu usuário

Referências:

Guia rápido de instalação do WSL2

Feito!

sábado, 9 de maio de 2020

Instalando o Composer no Windows e Linux

O que é Composer?
Composer é um gerenciador de dependências do PHP que facilita instalar bibliotecas e frameworks de terceiros ou mesmo suas que deseja ou precisa utilizar em seu projeto. Assim o composer encarraga-se de buscar, fazer o download e criar um autoloader deixando-as prontas para uso.

Instalação do Composer

Windows

Faça o download e execute o Composer-Setup.exe . Esse instalador do Composer já adiciona no PATH do sistema. Fecha o CMD ou PowerShell se tiver aberto e abre novamente, digita composer -V

Linux (qualquer distro)

Pré requisitos:

$ curl -s https://getcomposer.org/installer | php

$ sudo mv composer.phar /usr/local/bin/composer

Feito!

Instalando o MySQL no Windows 10

O MySQL é um Sistema de Gerenciamento de Banco de Dados (SGBD) relacional de plataforma aberta e de código aberto desenvolvido pela empresa Sueca "MySQL AB" e posteriormente adquirido pela Oracle Corporation. O MySQL é oferecido em duas versões: MySQL community e enterprise. Nesse artigo, será instalado o MySQL Community.

O objetivo deste artigo é descrever a instalação do SGBD MySQL 8 oficial e do jeito certo no Windows 10.

Pré requisitos do SGBD MySQL

Microsoft .NET 4.5 ou superior

Visual C++

Download e instalação do SGBD MySQL

No setup escolha o tipo de instalação, você tem quatro opções de instalação.

  • Developer default: Se você deseja criar uma máquina de desenvolvimento, pode usar esta opção. Ele instala os componentes necessários para o desenvolvimento de aplicativos, por exemplo, MySQL Server, MySQL Shell, conectores MySQL, MySQL.
  • Server: Se você deseja criar um servidor de banco de dados independente com componentes específicos, pode usar esta opção.
  • Full: Se você deseja instalar o MySQL Server com todos os seus componentes, poderá usar esta opção.
  • Custom: se seus requisitos estiverem limitados a poucos componentes, você poderá usar esta opção.

No setup, marque Developer Default ou Full se estiver instalando na máquina de desenvolvimento, conforme na Figura 1



Figura 1 Tipo de instalação

Revisão da lista que será instalado, se marcou o Developer default ou Full, é exibido conforme na Fig. 2



Figura 2. Revisão da lista incluída na instalação


Lista do que foi instalado, conforme na Figura 3.


Na tela de configuração do produto, você pode ver a lista dos produtos que precisam ser configurados. Primeiro, vamos configurar o servidor MySQL. Clique em Next.

Figura 3 Lista do que foi instalado

Na Figura 4 de alta disponibilidade, podemos optar por instalar o cluster InnoDB ou o servidor MySQL independente. O cluster InnoDB é a solução de alta disponibilidade do MySQL, que utiliza replicação de grupo. Neste artigo, foi instalado instalação standalone do MySQL Server.




Figura 4 Alta disponibilidade

Na Figura 5, configuração do tipo de configuração do MySQL. O tipo de configuração do MySQL é um conjunto predefinido de parâmetro de configuração que determina quantos recursos devem ser alocados aos Serviços MySQL.

  • Development Computer: Esta configuração utiliza uma quantidade mínima de recursos para o MySQL Service.
  • Server Computer: Esta configuração utiliza uma quantidade mínima de recursos. Essa opção é adequada quando estamos instalando servidores de banco de dados e servidores da web na mesma máquina. A configuração aloca uma quantidade média de recursos para o MySQL Service.
  • Dedidecated Computer: Esta opção é usada quando criamos um servidor MySQL dedicado. A configuração aloca uma grande quantidade de recursos para o MySQL Service


Figura 5 Tipo de configuração do MySQL


Nesta etapa, podemos controlar como os clientes podem se conectar aos bancos de dados MySQL. Podemos usar o protocolo TCP/IP ou pipe nomeado ou memória compartilhada. Se você deseja configurar pipe ou memória compartilhada, devemos fornecer o nome do pipe e o nome da memória. Você também pode especificar a porta padrão para se conectar ao servidor de banco de dados. Você também pode optar por permitir o número da porta especificado na caixa de texto Porta no firewall. Veja a Figura 6.



Figura 6 Forma de conexão do MySQL


Na versão MySQL 8.0, podemos usar senhas fortes baseadas em SHA256. Na tela Método de autenticação, escolha a opção para usar o método de autenticação herdado ou a senha forte para autenticação. Nota: Se você estiver usando a Criptografia de senha forte para autenticação, verifique se todos os conectores devem estar atualizados para a versão mais recente. Vamos usar a criptografia de senha forte para autenticação. Veja na Figura 7.



Figura 7 Autenticação do MySQL


Nesta etapa, Contas e funções, você pode especificar a senha da conta raiz do MySQL. A conta raiz do MySQL é uma conta sysadmin padrão e deve ser desativada. Assim criar outras contas de usuários para o MySQL, aplicando o Grant. Veja na Figura 8



Figura 8 Contas de usuários e papeis do MySQL


Na etapa, Serviço do Windows, você pode configurar o servidor MySQL para ser executado como um serviço do Windows. Você pode fornecer o nome desejado e configurá-lo para iniciar automaticamente o serviço quando o sistema reiniciar. Além disso, você pode fornecer as credenciais sob as quais o serviço MySQL será executado. Você pode escolher a conta padrão do sistema ou fornecer um usuário específico. Veja na Figura 9.



Figura 9 Serviço do Windows


Nesta etapa, Aplicar configuração, você pode ver a lista de etapas de confirmação. Depois que todas as definições de configuração forem verificadas, clique em Executar. Veja na Figura 10.



Figura 10 Aplicar configuração


O processo de instalação do MySQL é iniciado. Você pode visualizar o processo de instalação na guia "Log". Quando a instalação for concluída com êxito, clique em "Concluir" para fechar o instalador. Veja Figura 11.



Figura 11 Etapa final de instalação do MySQL


Feito!

sexta-feira, 8 de maio de 2020

Configurando o ambiente PHP no Windows do jeito certo

É comum no Windows usar ferramenta Wampp, Xampp, conhecidos como "amps" que inclui o Apache, PHP, MySQL e phpmyadmin, de início parece ser bom, mas devemos tomar cuidado para que não fiquemos presos nessas ferramentas de modo que não saibamos a trabalhar em outro ambiente. Principalmente para quem é iniciante ou está aprendendo, é importante saber trabalhar de modo desapegado, tanto para ter flexibilidade, quanto para entender como as coisas funcionam.

O desenvolvedor PHP no Windows precisa no mínimo saber usar o PHP instalado do zero, até mesmo porque a partir da versão 5.4, o PHP vem com servidor embutido que nos permite executar uma aplicação rapidamente usando o terminal.
Qual é o objetivo?
Fazer o download do PHP diretamente do site https://php.net e configurar manualmente no Windows e mostrar o uso do servidor embutido para executar scripts, aplicações em PHP.

Procedimentos
  1. Acesse https://php.net/downloads.php e faça o download do PHP para Windows. Recomendo o download da versão mais recente do PHP. Até a data de publicação deste post, a versão atual do PHP é 7.4.5
  2. Escolha a plataforma do PHP em relação ao seu computador, x86 ou x64.
    Detalhe importante é escolher entre as versões Thread Safe (TS) ou Non Thread Safe (NTS). Isso significa questões internas do PHP, mas para desenvolvimento escolha Non Thread Safe (NTS)
  3. Após o download, descompacte o arquivo .zip na partição C:\ e renomeie o diretório para php
  4. Faça a instalação do Microsoft Visual C++ , o PHP precisa para ser executado na máquina.
  5. Adicionar no PATH do Windows 10 o diretório C:\php que foi descompactado no item 1
    1. Clique no botão direito no "Computador" / "Computer" e escolha "Propriedades" / "Properties";
    2. Escolha "Configurações Avançadas de Sistema" / "Advanced System Settings";
    3. Clique em "Variáveis de Ambiente" / "Environment variables";
    4. Selecione PATH e clique em editar ou novo
    5. Adicione valor da variável de ambiente PATH, colocar o diretório C:\php. Fecha todas as janelas restantes, clicando em OK;
    6. Reabra o CMD ou Powershell e digite php --version
  6. No diretório C:\php tem dois arquivos de configurações: php.ini-development e php.ini-production. Renomei o arquivo php.ini-development para php.ini. É nesse arquivo que apresenta as configurações para executar o PHP e habilitar extensões necessárias durante o desenvolvimento da aplicação.
  7. Ajustes no arquivo php.ini

    Procurar a linha extension_dir e descomentar (retirar o ;).

    O extension_dir é onde indica as extensões do PHP, que por padrão é o diretório ext no Windows.

    Habilitar as extensões necessárias que desejar, descomentando as linhas correspondentes, em extension=

  8. Abra o Bloco de Notas com botão direito do mouse e clique em Executar como Administrador. C:\Windows\System32\drivers\etc, selecione Todos os arquivos para exibir o arquivo hosts. Verifique se existe a linha 127.0.0.1 localhost, se existir está pronto, senão acresente-a ao final do arquivo, salve e feche o Bloco de Notas.
  9. Escolha o diretório onde irá manter os projetos PHP. Nesse exemplo, foi escolhido o diretório C:\Users\Reginaldo\projeto
  10. Criei o arquivo info.php no diretório escolhido

    
    <?php 
    phpinfo();
  11. Execute no diretório escolhido no item anterior
  12. php -S localhost:8000

  13. No browser acesse http://localhost:8000

Agora só instalar o SGBD MySQL ou PostgreSQL e o cliente DBeaver que suporta diversos SGBDs (MySQL, PostgreSQL, Oracle, MSSQL).

Referências

https://www.php.net/manual/pt_BR/features.commandline.webserver.php

Feito!

sexta-feira, 24 de abril de 2020

Ativar o logon automático no Windows

O objetivo deste artigo é de descrever a configuraração do Windows para automatizar o processo de logon, armazenando a sua senha e outras informações pertinentes no banco de dados do Registro. Com esse recurso, outros usuários podem iniciar seu computador e usar a conta que você estabelecer para fazer logon automaticamente.

Importante O recurso de logon automático é fornecido como uma conveniência. No entanto, ele pode ser um risco de segurança. Se você definir um computador para fazer logon automático, qualquer pessoa que tiver acesso físico ao computador poderá acessar todo o seu conteúdo, incluindo as redes às quais o computador esteja conectado. Além disso, quando o logon automático está ativado, a senha é armazenada no Registro em texto sem formatação. A chave do Registro específica que armazena esse valor pode ser lida remotamente pelo grupo Usuários Autenticados. Essa configuração é recomendada apenas para casos em que o computador está fisicamente seguro e todas as medidas necessárias foram tomadas para garantir que usuários não confiáveis não consigam acessar remotamente o Registro.

  1. Clique em Iniciar e em Executar.
  2. Na caixa Abrir, digite Regedt32.exe e pressione Enter.
  3. Localize a seguinte subchave no Registro:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
  4. Clique duas vezes na entrada DefaultUserName, digite seu nome de usuário e clique em OK.
  5. Clique duas vezes na entrada DefaultPassword, digite sua senha e clique em OK.
  6. Observação Se o valor DefaultPassword não existir, ele deverá ser adicionado. Para adicionar o valor, siga estas etapas:
    1. No menu Editar, clique em Novo e aponte para Valor da Cadeia de Caracteres.
    2. Digite DefaultPassword e pressione Enter.
    3. Clique duas vezes em DefaultPassword.
    4. Na caixa de diálogo Editar Cadeia de Caracteres, digite sua senha e clique em OK.
    Observação Se nenhuma cadeia de caracteres DefaultPassword for especificada, o Windows mudará automaticamente os valores da chave AutoAdminLogon de 1 (true) para 0 (false), desabilitando o recurso AutoAdminLogon.
  7. No menu Editar, clique em Novo e aponte para Valor da Cadeia de Caracteres.
  8. Digite AutoAdminLogon e pressione Enter.
  9. Clique duas vezes em AutoAdminLogon.
  10. Na caixa Editar Cadeia de Cracteres, digite 1 e clique em OK.
  11. Saia do Editor do Registro.
  12. Clique em Iniciar, Desligar e digite um motivo na caixa de texto Comentário.
  13. Clique em OK para desligar o computador.
  14. Reinicie o computador. Agora, você pode fazer logon automaticamente.
Observações
  • Para ignorar o processo AutoAdminLogon e fazer logon como um usuário diferente, pressione e segure a tecla Shift depois de fazer logoff ou após a reinicialização do Windows.
  • Essa alteração no Registro não funcionará se o valor do Banner de Logon estiver definido no servidor por um objeto de Política de Grupo (GPO) ou por uma política local. Quando a política é alterada sem afetar o servidor, o recurso de logon automático funciona conforme o esperado.
  • Quando restrições de senha do EAS (Exchange Active Sync) estão ativas, o recurso de logon automático não funciona. Esse é o comportamento padrão. Esse comportamento é causado por uma alteração no Windows 8.1 e não afeta o Windows 8 ou versões anteriores. Para contorná-lo no Windows 8.1 e versões posteriores, remova as políticas do EAS no Painel de Controle.
  • Um logon de console interativo com um usuário diferente no servidor muda a entrada do Registro DefaultUserName como o último indicador de usuário conectado. AutoAdminLogon depende da entrada DefaultUserName para corresponder o usuário e a senha. Portanto, AutoAdminLogon pode falhar. Você pode configurar um script de desligamento para definir a entrada DefaultUserName correta para AutoAdminLogonAs.
Referência
https://support.microsoft.com/pt-br/help/324737/how-to-turn-on-automatic-logon-in-windows

Feito!

sábado, 15 de fevereiro de 2020

Conhecendo o Chocolatey

O que é Chocolatey?

É um gerenciador de pacotes para Windows que foi projetado para ser uma estrutura descentralizada para instalar pacotes mais rapidamente. É semelhante ao que já existe no Linux, especificamente nas distros Debian, Ubuntu, CentOS, Fedora, ArchLinux, Manjaro, openSUSE, que utiliza os gerenciadores de pacotes APT, YUM, Pacman, Zypper, respectivamente. O Chocolatey é desenvolvido sobre a infraestrutura do NuGet, que atualmente usa o PowerShell por debaixo dos panos. Acesse para mais detalhes sobre como funciona o Chocolatey

A origem do nome da ferramenta surgiu de uma piada, porque todos gostam nougat chocolate (nuget), assim pegou a moda.

É uma ferramenta nova?

Para dizer a verdade, não. Já faz algum tempo que o Chocolatey está na ativa, se eu não me engano desde 2011, mas seu uso ainda é desconhecido pela maioria das pessoas que usam Windows.

Instalação do Chocolatey

Os pré-requisitos para a instalação do Chocolatey são:
  • Windows 7/10/Windows Server 2003 (ou superior)
  • PowerShellv2+ (já vem instalado no Windows 7 e 10)
  • .NET Framework 4+ (o próprio instalador do Chocolatey tentará instalá-lo, caso não esteja instalado).
Abrir o CMD em modo administrador e execute o comando abaixo:

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "[System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

OU no PowerShell em modo administrador

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

Utilização do Chocolatey

Com modo administrador no CMD ou PowerShell, vamos consultar o pacote Keepass e instalar em seguida

C:\>choco search keepass

Irá retornar o pacote pesquisado se tiver no repositório

C:\>choco install -y keepass

Segue a lista de comandos que podem ser utilizados com o choco

C:\>choco -?

This is a listing of all of the different things you can pass to choco.

Commands

* list - lists remote or local packages
* search - searches remote or local packages (alias for list)
* info - retrieves package information. Shorthand for choco search pkgname --exact --verbose
* install - installs packages from various sources
* pin - suppress upgrades for a package
* outdated - retrieves packages that are outdated. Similar to upgrade all --noop
* upgrade - upgrades packages from various sources
* uninstall - uninstalls a package
* pack - packages up a nuspec to a compiled nupkg
* push - pushes a compiled nupkg
* new - generates files necessary for a chocolatey package from a template
* sources - view and configure default sources (alias for source)
* source - view and configure default sources
* config - Retrieve and configure config file settings
* feature - view and configure choco features
* features - view and configure choco features (alias for feature)
* apikey - retrieves or saves an apikey for a particular source
* setapikey - retrieves or saves an apikey for a particular source (alias for apikey)
* unpackself - have chocolatey set it self up
* version - [DEPRECATED] will be removed in v1 - use `choco outdated` or `cup -whatif` instead
* update - [DEPRECATED] RESERVED for future use (you are looking for upgrade, these are not the droids you are looking for)

Para quem já usa Linux (Debian, Ubuntu, Fedora, ArchLinux, Manjaro, openSUSE), pode notar que os comandos do Chocolatey são bem semelhantes os utilizados pelo gerenciador de pacotes das distros mencionadas.

Mas quem usa apenas Windows, pode não curtir ter que usar o CMD ou PowerShell para instalar pacotes. Não tem problema, para isso, existe o Chocolatey em modo gráfico. A instalação do ChocolateyGUI é feita pelo CMD ou PowerShell, mas outros pacotes podem ser instalados em modo gráfico, posteriromente.

C:\>choco install -y ChocolateyGUI

Depois só abrir, pesquisar o pacote desejado e instalar com click de mouse, como Janeleiro tem costume de fazer.

Gerenciador de configuração

Se já conhece as ferramentas de gerenciamento de configuração ou automação como Puppet, Chef ou Ansible, deve estar pensando em integrar com Chocolatey no Windows. Já pensaram nisso. Verifique nessa página para encontrar documentação para integração do Chocolatey com diversas ferramentas de gerenciamento de configuração e automação para Windows.

Só para esclarecer para quem ainda não utilizou ferramentas de gerencimento de configuração, elas permitem automatizar o provisionamento de uma máquina, por exemplo, instalação de pacotes ou softwares necessários, configurações, inicialização de serviços e etc.

Referências

https://chocolatey.org/docs/installation

Feito!

sábado, 18 de janeiro de 2020

Resolvendo o problema de unidade de rede mapeada no Windows 7/8/10

Mesmo estando com o mapeamento da unidade corretamente feito, no entanto, a unidade de rede mapeada não aparece no Explorador de Arquivos, Meu Computador ou Aplicativo? Ou, nem todos os conteúdos, incluindo arquivos, diretórios e subdiretórios, estão normalmente sendo mostrados na unidade de rede mapeada.

O objetivo deste post é explicar os métodos gerais de solução de problemas que se são úteis para corrigir os problemas de mapeamento de unidades comumente vistos no computador com Windows. Utilize uma das soluções apresentadas.

Solução 1. Unidade de rede mapeada não aparece no Explorador de Arquivos/Meu computador

Por causa do UAC, o Shell é executado com permissões de usuário padrão, não pode ver as unidades mapeadas que foram configuradas a partir do seu aplicativo executado com direitos de administrador. Então, tente as seguintes soluções com passo a passo.

  1. Clique em Iniciar, digite regedit em programas de Iniciar e caixa de arquivos, em seguida, pressione ENTER.
  2. Localize e clique com o botão direito do mouse na subchave de registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System.
  3. Aponta para New, e depois clique DWORD Value.
  4. Digite EnableLinkedConnections, e depois pressione ENTER.
  5. Clique com o botão direito do mouse em EnableLinkedConnections, e depois clique em Modify.
  6. Em caixa de dados de Value, digite 1, e clique em OK.
  7. Sair do Editor de registro e, em seguida, reiniciar o computador.
Solução 2. Unidade de rede mapeada não mostra todos os arquivos/diretórios

É o mais provável que os arquivos, diretórios ou subdiretórios foram ocultos, o que impede os usuários de vê-los todos. Normalmente, existem 2 maneiras de recuperar arquivos ocultos do disco rígido ou unidade USB externa, etc.

Exibe manualmente arquivos e pastas ocultos
No Windows 10/8.1/8
Abre Explorador de Arquivos -> clique na guia de exibir -> marque a caixa em frente de "Itens ocultos".



No Windows 7
  1. Abre Explorador de Arquivos -> clique na guia Organizar -> selecione Pasta e procure opções e abre.
  2. Clique na guia Exibir -> selecione "Mostrar arquivos ocultos, pastas e unidades" em Arquivos e Pastas Ocultos -> clique em OK.
Referências

https://br.easeus.com/storage-media-recovery/unidade-de-rede-mapeada-nao-aparece.html

Feito!

sexta-feira, 15 de novembro de 2019

Resolvendo o bug da hora errada no Windows em dual boot com Linux

Se você tem o Windows 10 e Linux (qualquer distro) no seu computador desktop ou notebook, deve ter notado um bug no relógio do Windows com 3 horas adiantado ao iniciar com Windows 10, no Linux (qualquer distro) a hora está correta, conforme o fuso horário. Chega de papo e vamos resolver esse problema.

Observação:
Se a hora já estiver sendo exibida corretamente no seu Windows, realizar esse procedimento poderá ter o efeito contrário ao desejado.

  1. Abrir o regedit, pesquisando por regedit no menu iniciar
  2. Acesse o diretório HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
  3. Dentro deste diretório, crie uma nova entrada de registro. Clique com botão direito do mouse na área em branco, clique em novo e "Valor QWORD" se o sistema for 64 bits. Caso o sistema seja 32 bits, clique em "Valor DWORD". Renomeia a entrada para RealTimeIsUniversal
  4. Clique com botão direito na entrada que criou no procedimento anterior, em Modificar. Na janela que abrir, no campo "Dados do valor" digite "1". Marque a caixa de seleção "Hexadecimal", e clique em "OK".
  5. Clique com botão direito em cima do relógio, depois "Ajustar data/hora", e deixe as configurações como na Imagem 1:
Imagem 1. Configuração de ajuste data/hora no Windows 10



Agora reinicie o sistema e a hora estará correta.

Referências:

https://wiki.archlinux.org/index.php/System_time#UTC_in_Windows

Feito!

domingo, 6 de outubro de 2019

Configurando ambiente de desenvolvimento PHP no Docker

O objetivo deste howto é apresentar a configuração do ambiente de desenvolvimento PHP no Docker

Com o Docker e Docker compose instalados, adicione o docker-compose.yml na raiz do diretório onde desejar ter o ambiente PHP que ficará os projetos.

A imagem saitam10/apache2-php7.3 inclui o Apache2, PHP 7.3, os módulos usuais, extensões aos SGBD MySQL, PostgreSQL e OCI8 (Oracle) e gerenciador composer

A estrutura do ambiente PHP é essa
ambiente-docker
 apache2-php7.3
      mysql
       data
      php
        Dockerfile
        vhost.conf
      www
      docker-compose.yml

O volume no HOST é www que é mapeado no container PHP /var/www/html

docker-compose.yml



No diretório php, inclui os arquivos Dockerfile e vhost.conf
Dockerfile



vhost.conf



Build do ambiente
Executar docker-compose up -d no diretório raiz do ambiente PHP

Após o build com sucesso, acessar o container PHP docker exec -it apache2-php7.3 bash e instalar o framework PHP de sua preferência, nesse howto é utilizado o Framework Laravel

composer create-project --prefer-dist laravel/laravel projeto

Por fim, adicione no arquivo hosts, no Linux é /etc/hosts, no Windows é c:\windows\system32\drivers\etc\hosts
127.0.0.1 projeto.local
No browser http://projeto.local

Feito!

sexta-feira, 4 de outubro de 2019

Instalando o Docker no Windows

Na postagem anterior foi apresentado a instalação do Docker e Docker Compose no Linux, mas caso use Windows 10 e seu hardware atenda os requisitos necessários, pode instalar e usar o Docker no Windows 10 também.

Os pré-requisitos são:
  • Windows 10 64 bits. Pro/Enterprise/Education
  • Pelo menos 4GB de RAM
  • Suporte de virtualização habilitado na BIOS
Atendendo os pré-requisitos listados, então habilite o Hyper-V e faça o download Docker for Windows e proceda com Next>Next>Finish.

O instalador inclui o Docker e Docker Compose, os comandos são reconhecidos no PowerShell.

Feito!

sábado, 9 de março de 2019

Configurando VHost no XAMPP em Windows

Caso o seu ambiente de desenvolvimento PHP seja no XAMPP em Windows e pretende criar VHosts para os projetos, então está no lugar certo, nesse post é explicado os procedimentos para configurar VHost em um projeto que pode seguir para os demais projetos também.

Considerando que já tenha instalado o XAMPP no Windows. Então pode seguir os procedimentos a seguir.

Adicionar o VHost do projeto
1. Editar o arquivo C:\xampp\apache\conf\extra\httpd-vhosts.conf
< VirtualHost *:80 >
    ServerName projeto.local
    DocumentRoot "C:/xampp/htdocs/projeto"
    ErrorLog "logs/projeto-error.log"
    CustomLog "logs/projeto-access.log" common
    < Directory "C:/xampp/htdocs/projeto" >
        DirectoryIndex index.php index.html index.htm
        AllowOverride All
        Order allow,deny
        Allow from all
    < /Directory >
< /VirtualHost >
Reiniciar o Apache
2. Reiniciar o Apache pelo XAMPP

3. Adicionar o nome do ServerName no arquivo de hosts
Editar o arquivo C:\Windows\System32\drivers\etc\hosts como Administrador
127.0.0.1 projeto.local

4. Acessar no browser http://projeto.local
PS: Substitua o projeto pelo nome do projeto.

Segue os mesmos procedimentos ao adicionar outro projeto, só alterar o diretório e ServerName referente ao projeto.

Caso tiver interesse na configuração de VHosts no Debian e/ou VHost no CentOS

Feito!

domingo, 2 de dezembro de 2018

Conhecendo o MySQL workbench

O que é MySQL workbench?

MySQL workbench é uma ferramenta exclusiva para administrar SGBD MySQL ou MariaDB (clone do MySQL) por meio da interface gráfica. Pode criar Diagrama de Entidade e Relacionamento (DER) executar querys SQL.

O MySQL wokbench está disponível para as plataformas Windows, GNU/Linux e Mac OS X

Instalação do MySQL workbench
OBS: Necessário ter o SGBD MySQL / MariaDB instalado.

Windows

No Windows, se você estiver instalando o MySQL Community Server 5.6, o MySQL Workbench é instalado no processo de instalação do próprio servidor. Baixe o arquivo .msi apropriado da página de download do MySQL, execute-o e siga as instruções.

Depois de instalá-lo com sucesso, quando você inicia, você obtém conforme o screenshot a seguir:



Você pode ver que existem três seções - Desenvolvimento SQL, Modelagem de Dados e Administração de Servidores.

Linux
Debian e Ubuntu:
# apt-get install mysql-workbench

CentOS e Fedora:
# yum install mysql-workbench-community

Screenshot MySQL workbench no Linux



Feito!

sábado, 10 de fevereiro de 2018

Instalando o módulo SSH2 no PHP

O objetivo deste post, é instalar e habilitar o módulo SSH2 no PHP. Com isso pode implementar um script PHP que conecta em alguma máquina ou servidor com Linux via SSH e executar comandos.

No final do post, tem um exemplo de script PHP que mostra como fazer.

No Windows com Xampp
Acesse http://windows.php.net/downloads/pecl/releases/ssh2/1.1.2/
Faça o download do arquivo php_ssh2-1.1.2-7.1-ts-vc14-x86.zip ou php_ssh2-1.1.2-7.1-ts-vc14-x64.zip, extrair e copiar os arquivos php_ssh2.dll e php_ssh2.pdb para c:/xampp/php/ext
Adicionar extension=php_ssh2 no php.ini
Reiniciar o Apache, no Xampp abre o Shell, digite php -m, verifique se tem o módulo ssh2

No Linux (Debian/Ubuntu)
PHP 5: # apt-get install php5-ssh2
PHP 7.0: # apt-get install php7.0-ssh2

Exemplo
Script PHP que conecta no servidor via SSH e cria um diretório abc na máquina Linux remota.
< ?php
$IP = '';
$POST = ;
$USER = '';
$PASS = '';
$connection = ssh2_connect($IP, $PORT);

if (ssh2_auth_password($connection, $USER, $PASS)) {
echo "Autenticado!\n";
$shell = ssh2_exec($connection, "mkdir abc");
}
else {
  die('Autenticação falhou!');
}
Feito!

sábado, 13 de maio de 2017

Configurando ambiente de desenvolvimento PHP com framework CodeIgniter

O que é CodeIgniter?

CodeIgniter é um framework PHP. A primeira versão pública do CodeIgniter foi lançada em 28 de fevereiro de 2006.

O CodeIgniter permite que se mantenha o foco em um projeto, minimizando a quantidade de código necessário para uma dada tarefa.

CodeIgniter foi desenvolvido sobre o paradigma da programação Orientada a Objetos sob o padrão de arquitetura de software MVC, mas também já dá suporte à metodologia HMVC, um nível hierárquico acima, absorvendo cada tríade MVC, tornando-a modular e, até certo ponto, independente das demais. Por ser mais recente e não nativo do CodeIgniter, o HMVC exige o download de alguns arquivos e a criação do diretório Modules para que funcione corretamente.

Depois de conhecer o CodeIgniter e para que serve, podemos seguir os procedimentos de configuração no ambiente de desenvolvimento PHP com CodeIgniter na distribuição Linux Debian e/ou CentOS/RHEL/Fedora.

Observação: A versão atual estável do CodeIgniter é 3.1.4 até a data de publicação deste post.

Instalação dos pré-requisitos

Antes é necessário instalar o servidor Apache ou Nginx, PHP e SGBD MySQL ou PostgreSQL. No presente howto será instalado o Apache, PHP e SGBD MySQL/MariaDB.

Debian: # apt-get install git-all
CentOS: #yum install git-all
Windows: Instale o Git Bash Git Bash
Se ainda não tem o ambiente PHP 7 no Windows, clique no link XAMPP e escolha o Setup Xampp com a versão do PHP 7. Faça o download e instale como qualquer software do Windows.
Se ainda não tem o ambiente PHP 7 no Debian ou CentOS, clique no link abaixo, caso já tenha ambiente PHP configurado, vá direto no próximo item do Howto.
Configurando ambiente PHP 7 no Debian e CentOS

Procedimentos de Configuração CodeIgniter
Substitua pelo seu usuário/grupo
No Linux:
# chown -R reginaldo:reginaldo /var/www/html/
$ cd /var/www/html
$ git clone "https://github.com/bcit-ci/CodeIgniter.git"
$ mv CodeIgniter/ projeto

No Windows:
Abre o Git Bash e acesse até o diretório c:/xampp/htdocs.
Considerando que fez a instalação default do XAMPP.
Execute: git clone "https://github.com/bcit-ci/CodeIgniter.git"
Move o nome default para o nome do projeto mv CodeIgniter/ projeto

NOTA: Remover o diretório oculto .git/ para não conflitar com as alterações feitas, pois esse não será versionado com o repositório do CodeIgniter, apenas no repositório do seu projeto.
$ rm -rf .git

Se for ambiente local: http://localhost/projeto
Caso seja ambiente na intranet: http://IPSERVIDOR/projeto
Se exibir a página default do CodeIgniter, como no screenshot, está correto.

Referências:
https://www.codeigniter.com/user_guide/
Feito!

terça-feira, 20 de dezembro de 2016

Instalando, Configurando e Provisionando o Samba4 como Controlador de Domínio Active Directory (AD)

O presente Howto mostra os procedimentos necessários para instalação e configuração do Samba 4 como controlador de domínio Active Directory (AD) realizada nas distros Debian 8 e CentOS 7.

Observação: Recomendado usar a versão 4.4.5 por ser a mais estável no momento em ambiente de produção.

1. Configuração do servidor Samba
Hostname: samba4dc
Tipo de Serviço (Role): Domain Controler
Endereço IP: 192.168.1.4
Domínio: saitam.int
DNS Cliente: 192.168.1.4
Gateway default: 192.168.1.1

1.1 Criar o mapeamento do servidor
# vim /etc/hostname
samba4dc
# vim /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.1.4 samba4dc.saitam.int samba4dc

# /etc/init.d/hostname.sh restart

2. Instalação dos pacotes pré-requisitos para o Samba4
No Debian:
# apt-get install acl attr autoconf bison gcc g++ debhelper dnsutils docbook-xml docbook-xsl flex gdb krb5-user libacl1-dev libaio-dev libattr1-dev libblkid-dev libbsd-dev libcap-dev libcups2-dev libgnutls28-dev libjson-perl libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl libpopt-dev libreadline-dev perl perl-modules pkg-config python-all-dev python-dev python-dnspython python-crypto xsltproc zlib1g-dev libgpgme11-dev python-gpgme python-m2crypto winbind libpam-winbind libnss-winbind
Durante o setup do Kerberos, preencha conforme solicitado
Reino por omissão do Kerberos versão 5: SEUDOMINIO.INT
No meu caso, coloquei SAITAM.INT
Servidores Kerberos para seu realm: 127.0.0.1
Servidor administrativo para seu realm Kerberos: 127.0.0.1

No CentOS:
# yum install perl gcc attr libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig krb5-workstation zlib-devel setroubleshoot-server libaio-devel setroubleshoot-plugins policycoreutils-python libsemanage-python perl-ExtUtils-MakeMaker perl-Parse-Yapp perl-Test-Base popt-devel libxml2-devel libattr-devel keyutils-libs-devel cups-devel bind-utils libxslt docbook-style-xsl openldap-devel autoconf python-crypto pam-devel

3. Download e instalação do Samba4
# mkdir /opt/samba4 && cd /opt/samba4
# wget -c "https://download.samba.org/pub/samba/stable/samba-4.4.5.tar.gz"
# tar -xzvf samba-4.4.5.tar.gz
# cd samba-4.4.5

Checa as dependências
# ./configure
'configure' finished successfully (7m45.311s)

Se ocorrer OK no passo anterior, execute o make para compilação
# make
No meu caso em Debian 8.5 ocorreu o seguinte erro abaixo no final da compilação.
Build failed: -> task failed (err #139): {task: manpages/smb.conf.5 smb.conf.5.xml,parameters.all.xml -> smb.conf.5}
Depois de uma pesquisa, descobri que era o bug do pacote docbook-xsl na versão 1.78.1+dfsg-1, a solução foi remover esse pacote via APT, fazer o download deste pacote na versão corrente e instalar via dpkg.
Segue os procedimentos:
# aptitude remove docbook-xsl
# cd /opt/samba4
# wget -c "http://ftp.br.debian.org/debian/pool/main/d/docbook-xsl/docbook-xsl_1.79.1+dfsg-2_all.deb"
# dpkg -i docbook-xsl_1.79.1+dfsg-2_all.deb

Executar novamente o # make
NOTA: Esse pacote docbook-xsl está na versão TESTING do Debian até a data de publicação deste post.
Após o término de compilação
Waf: Leaving directory `/opt/samba4/samba-4.4.5/bin'
'build' finished successfully (1h2m12.706s)

A instalação propriamente
# make install
Após o término de instalação
Waf: Leaving directory `/opt/samba4/samba-4.4.5/bin'
'install' finished successfully (28m41.800s)

3.1 Adicionar os comandos do Samba no PATH do sistema
# export PATH=/usr/local/samba/bin/:/usr/local/samba/sbin/:$PATH

4. Download e instalação do Bind 9.9.9-P4
Foi necessário instalar o Bind de forma compilada para adicionar parâmetros para o Samba 4 necessários para usar o BIND9_DLZ
Dependências necessárias:
# apt-get install libglobus-gssapi-gsi-dev libgssapi-krb5-2 libkrb5-dev
# mkdir /opt/bind9 && cd /opt/bind9
# wget -c "http://ftp.isc.org/isc/bind9/9.9.9-P4/bind-9.9.9-P4.tar.gz"
# tar -xzvf bind-9.9.9-P4.tar.gz
# cd bind-9.9.9-P4
#./configure --prefix=/usr/local/bind9 --with-gssapi=/usr/include/gssapi --with-dlopen=yes
# make
# make install

4.1 Adicionar usuário e grupo para o Bind
# groupadd -g 35 named
# useradd -u 35 -g named -d /var/named -M -s /sbin/nologin named


4.2 Adicionar os comandos do Bind no PATH do sistema
#export PATH=/usr/local/bind9/bin/:/usr/local/bind9/sbin/:$PATH

5. Configuração do servidor DNS
Como o Bind foi compilado e instalado em /usr/local/bind9 os arquivos de configuração fica em /usr/local/bind9/etc que serve para as distros Debian e CentOS nesse caso.

5.1 Configuração dos arquivos essenciais do Bind
Download do servidor DNS Root
# wget -q -O /var/named/named.root https://www.internic.net/zones/named.root
# chown root:named /var/named/named.root
# chmod 640 /var/named/named.root


5.2 Configuração do arquivo named.conf
# vim /usr/local/bind9/etc/named.conf
# Global Configuration Options
options {

  auth-nxdomain yes;
  directory "/var/named";
  notify no;
  empty-zones-enable no;

  # IP addresses and network ranges allowed to query the DNS server:
  allow-query {
  127.0.0.1;   192.168.1.0/24;
  };

  # IP addresses and network ranges allowed to run recursive queries:
  # (Zones not served by this DNS server)
  allow-recursion {
  127.0.0.1;   192.168.1.0/24;
  };

  # Forward queries that can not be answered from own zones
  # to these DNS servers:
  forwarders {
  8.8.8.8;
  8.8.4.4;
  };

  # Disable zone transfers
  allow-transfer {
  none;
  };
 };

# Root Servers
# (Required for recursive DNS queries)
zone "." {
  type hint;
  file "named.root";
};

# Forward zone: localhost
zone "localhost" {
  type master;
  file "master/localhost.zone";
};

# Reverse zone: 127.0.0.
zone "0.0.127.in-addr.arpa" {
  type master;
  file "master/0.0.127.zone";
};

# Zona direta domínio rede local saitam.int
zone "saitam.in" {
  type master;
  file "master/db.saitam";
};
# Zona reversa 192.
zone "1.168.192.in-addr.arpa" {
  type master;
  file "master/db.192";
};

5.3 Configuração das zonas direta e reversa
Zona direta localhost
# vim /var/named/master/localhost.zone
$TTL 604800

@ IN SOA localhost. root.localhost. (
  2016121801 ; serial
  604800 ; refresh
  86400 ; retry
  2419200 ; expiry
  604800 ; minimum
  )
;
  NS localhost.

localhost. IN A 127.0.0.1
# chown named:named /var/named/master/localhost.zone
# chmod 640 /var/named/master/localhost.zone

Zona reversa localhost
# vim /var/named/master/0.0.127.zone
$TTL 604800

@ IN SOA localhost. root.localhost. (
  2016121801 ; Serial
  604800 ; Refresh
  86400 ; Retry
  2419200 ; Expire
  604800 ; Minimum TTL
  )
;
  IN NS localhost.

1 IN PTR localhost.
# chown named:named /var/named/master/0.0.127.zone
# chmod 640 /var/named/master/0.0.127.zone

Zona direta para domínio saitam.int
# vim /var/named/master/db.saitam
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA saitam.int. root.saitam.int. (
  2016121801 ; Serial
  604800 ; Refresh
  86400 ; Retry
  2419200 ; Expire
  604800 ) ; Negative Cache TTL
  IN A 192.168.1.4
;
@ IN NS saitam.int.

  IN MX 5 saitam.int.

www IN CNAME saitam.int.
mail IN A 192.168.1.4
router IN A 192.168.1.1
gateway CNAME router
gw CNAME router
# chown named:named /var/named/master/db.saitam
# chmod 640 /var/named/master/db.saitam

Zona reversa do domínio saitam.int
# vim /var/named/master/db.192
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA saitam.int. root.saitam.int. (
  2016120701 ; Serial
  604800 ; Refresh
  86400 ; Retry
  2419200 ; Expire
  604800 ) ; Negative Cache TTL
;
@ IN NS saitam.int.
4 IN PTR saitam.int.
1 IN PTR router.saitam.int.
# chown named:named /var/named/master/db.192
# chmod 640 /var/named/master/db.192


5.4 Configuração do BIND_DLZ
Incluir o /usr/local/samba/private/named.conf no /usr/local/bind9/etc/named.conf na linha 1 # vim /usr/local/bind9/etc/named.conf
include "/usr/local/samba/private/named.conf";
5.5 Adicionar a atualização DNS do Kerberos em options
# vim /usr/local/bind9/etc/named.conf
Quando provisionar o samba vai criar essa chave e precisa ser adicionada aqui o path completo
tkey-gssapi-keytab "/usr/local/samba/private/dns.keytab"; 
5.6 Habilitar o DLZ_BIND
Edite o arquivo /usr/local/samba/private/named.conf e descomente a linha conforme a versão do Bind instalada, nesse caso o Bind 9.9
# vim /usr/local/samba/private/named.conf
 # For BIND 9.9.x
  database "dlopen /usr/local/samba/lib/bind9/dlz_bind9_9.so";
5.7 Adicionar o domínio no arquivo /etc/resolv.conf
# vim /etc/resolv.conf
domain saitam.int
search saitam.int
nameserver 192.168.1.4
5.8 Iniciar o serviço do Bind
Estando com os comandos do Bind no PATH do sistema, conforme feito anteriormente pode executar de qualquer lugar no terminal, caso não tenha feito ainda, reveja o procedimento no item 4.2 ou terá que executar os comandos Bind dentro do diretório /usr/local/bind9/bin e /usr/local/bind9/sbin
# named -u named
Para parar o serviço do Bind é killall named
OBS: Fica a seu critério criar um script Shell com opção start|stop no diretório de inicialização no boot.

6. Instalar e Configurar o NTP
No Debian: # apt-get install ntp
No CentOS: # yum install ntp
# vim /etc/ntp.conf
# Relogio Local
server 127.127.1.0
fudge 127.127.1.0 stratum 10

6.1 Testar o NTP
# ntpq -p
remote refid st t when poll reach delay offset jitter

 ns507230.ip-192 137.146.28.85 2 u - 64 1 192.071 2.852 1.057
 vel.itat.io 162.23.41.10 2 u 2 64 1 257.998 0.743 1.999
 alpha.rueckgr.a 131.188.3.222 2 u 4 64 1 247.913 6.323 0.004
 c.st1.ntp.br .ONBR. 1 u 1 64 1 40.179 0.290 0.863
*LOCAL(0) .LOCL. 10 l 5 64 1 0.000 0.000 0.004
6.2 Reiniciar o serviço NTP
Debian: # /etc/init.d/ntp restart
CentOS: # systemctl restart ntp
[ ok ] Restarting ntp (via systemctl): ntp.service.
7. Proversionar o Samba4
Server role: dc
NIS extensão habilidada
DNS interno back end: BIND9_DLZ
Kerberos realm e AD DNS zona: samba4dc.saitam.int
NetBIOS domínio name: samba4dc
Administrador de domínio:

7.1 Prover o Samba AD no modo interativo
Estando com os comandos do Samba no PATH do sistema, conforme feito anteriormente pode executar de qualquer lugar no terminal, caso não tenha feito ainda, reveja o procedimento no item 3.1 ou terá que executar os comandos do Samba dentro do diretório /usr/local/samba/bin e /usr/local/samba/sbin
# samba-tool domain provision --use-rfc2307 --interactive
Realm [SAITAM.INT]
Domain [SAITAM]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
Administrador password:
Retype password:
Once the above files are installed, your Samba4 server will be ready to use
Server Role: active directory domain controller
Hostname: samba4dc
NetBIOS Domain: SAITAM
DNS Domain: saitam.int
DOMAIN SID: S-1-5-21-3436644580-1722986177-1604106671

8. Configuração do Kerberos
Primeiramente renomear o arquivo original do krb5.conf para backup
# mv /etc/krb5.conf /etc/krb5.conf.orig
Copiar o krb5.conf do Samba4 para /etc
# cp /usr/local/samba/private/krb5.conf /etc
Criar um link símbolico
# ln -sf /usr/local/samba/private/krb5.conf /etc/krb5.conf
Incluir as linhas caso não exista, adapte para domínio e endereço IP de sua rede.
# vim /usr/local/samba/private/krb5.conf
[realms]
SAITAM.INT = {
kdc = 192.168.1.4
admin_server = 192.168.1.4
}
9. Serviço Samba 4
No Debian:
# systemctl restart smbd
# systemctl restart nmbd
# systemctl restart winbind

No CentOS:
Reiniciar o daemon do SystemD
# systemctl daemon-reload
# systemctl enable samba-ad-dc
# systemctl start samba-ad-dc

10. Testes de comunicação
DNS
Verificar se o arquivo de zona direta e reversa contém erros # named-checkzone saitam.int /var/named/master/db.saitam
zone saitam.int/IN: loaded serial 2016121801
OK 
# named-checkzone 1.168.192.in-addr /var/named/master/db.saitam/db.192
zone 1.168.192.in-addr/IN: loaded serial 2016121801
OK
# host -t A saitam.int
saitam.int has address 192.168.1.4

# host -t SRV _ldap._tcp.saitam.int.
_ldap._tcp.saitam.int has SRV record 0 100 389 samba4dc.saitam.int.

# host -t SRV _kerberos._udp.saitam.int.
_kerberos._udp.saitam.int has SRV record 0 100 88 samba4dc.saitam.int.
10.1 Teste do mecanismos de autenticação Kerberos
# kinit administrator@SAITAM.INT
Password for administrator@SAITAM.INT:
Warning: Your password will expire in 41 days on Qua 01 Fev 2017 16:05:34 BRST
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@SAITAM.INT

Valid starting       Expires              Service principal
20-12-2016 16:47:15  20-12-2016 02:47:15  krbtgt/SAITAM.INT@SAITAM.INT
        renew until 20-12-2016 16:46:57
10.2 Autenticação com controlador de domínio Samba 4
# smbclient //localhost/netlogon -UAdministrator -c 'ls'
Enter Administrator's password:
Domain=[SAITAM] OS=[Windows 6.1] Server=[Samba 4.4.5]
  .                                   D        0  Sat Dec 17 18:08:21 2016
  ..                                  D        0  Sat Dec 17 18:08:48 2016

                9961324 blocks of size 1024. 5006248 blocks available
11. Administração de usuários e grupos do Samba 4 AD pelo terminal

Os comandos do Samba foram adicionados no PATH do sistema, caso não tenha adicionado ainda, reveja o procedimento no item 3.1 ou terá que executar os comandos do Samba dentro do diretório /usr/local/samba/bin e /usr/local/samba/sbin

11.1 Criar usuário no Samba 4 DC AD
# samba-tool user add usuario
New Password:
Retype Password:
User 'usuario' created successfully
11.2 Criar Grupo RH, Financeiro, TI dos setores da empresa
# samba-tool group add RH
Added group RH
# samba-tool group add Financeiro
Added group Financeiro 
# samba-tool group add TI
Added group TI 
11.3 Adicionar o usuário criado no grupo TI
# samba-tool group addmembers TI usuario
Added members to group TI 
11.4 Listar usuários
# samba-tool user list

11.5 Listar grupos
# samba-tool group list

12. Criar o arquivo smb.conf para compartilhamento de arquivos
# vim /usr/local/samba/etc/smb.conf
Arquivo smb.conf
Reinicie o serviço do Samba para efeito do smb.conf

13. Ingressar máquinas Windows no domínio Samba4 como AD
Agora é necessário ingressar as máquinas Windows no domínio, segue os procedimentos abaixo:
Maneira 1:
Clica com botão direito o atalho Meu Computador depois em Propriedades
Na aba Nome do computador, clica no botão ID de rede
Irá abrir o Assistente para identificação da rede, clique em Avançar, marque a opção Este computador faz parte de uma rede corporativa e o utiliza para conectar-me a outros computadores no trabalho, clique em Avançar, marque a primeira opção, antes de prosseguir tenha em mente o usuário,senha e nome de domínio que será pedido, clique em Avançar, e digite os dados respectivamente.
Maneira 2:
Clica com botão direito o atalho Meu Computador depois em Propriedades
Na aba Nome do computador, clica no botão Alterar, digite o nome de domínio, e OK.
No final do processo irá aparecer Bem-vindo ao domínio e avisará que deverá reiniciar o computador.

13.1 Cliente Windows 7 no domínio Samba 4 como AD


14. Instalação do RSAT no Windows 7 para gerenciar o Samba4 como se fosse o AD

Uma forma de gerenciar as novas GPOs de Windows 7 é com a ferramenta RSAT Segue abaixo o link para download e o processo de instalação/ativação caso você ainda não o conheça.

14.1. Faça o download do RSAT para Windows 7 SP1 através do link Tools RSAT for Windows 7 , respeitando o idioma e arquitetura da sua versão de Windows.
14.2.Instale esse pacote no seu PC.
14.3. Clique no botão Iniciar do Windows 7, digite Ativar Recursos e selecione “Ativar ou desativar recursos do Windows” .
14.4.Marque as opções desejadas em “Ferramentas de Administração de Servidor Remoto”, como na figura abaixo (você pode aproveitar e habilitar outros recursos como o Cliente Telnet) e clique em OK:
Após a instalação do RSAT por padrão o atalho para Ferramentas Administrativas já deve aparecer no seu Menu Iniciar do Windows.

Referências
[1] https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller
[2] https://wiki.samba.org/index.php/Time_Synchronisation
[3] https://wiki.samba.org/index.php/Setting_up_a_BIND_DNS_Server
[4] https://wiki.samba.org/index.php/BIND9_DLZ_DNS_Back_End
[5] https://wiki.samba.org/index.php/Adding_users_with_samba_tool

Feito!

terça-feira, 22 de novembro de 2016

Criando ambiente de desenvolvimento com Vagrant

O que é Vagrant ?

O Vagrant é um projeto que permite virtualizar o ambiente de desenvolvimento de forma simples. Com o Vagrant você pode executar máquinas virtuais utilizando o VirtualBox ou VMware, dentre muitas outras opções. Estas máquinas virtuais podem ter qualquer configuração e programas instalados e você pode, inclusive, criar a sua própria configuração com muita facilidade. Isso ajuda bastante quando um novo funcionário é contratado, por exemplo. Se todo o seu ambiente de desenvolvimento for baseado em boxes (box é o nome que o Vagrant utilizada para definir cada máquina virtual) personalizados, tudo o que ele precisa fazer é instalar o Vagrant e executar um único comando.

Depois de conhecer o Vagrant e pra que serve, podemos seguir os procedimentos de instalação e configuração do Vagrant em seu computador com SO Windows ou Linux.

Instalação do Vagrant

Como o Vagrant depende do VirtualBox ou VMWare, é necessário instalar um ou outro, nesse caso optei por instalar o VirtualBox.

Faça o download do VirtualBox conforme o SO que tem no seu PC no site:
https://www.virtualbox.org/wiki/Downloads e a instalação posteriormente.
Em seguida, faça o download do Vagrant conforme o SO que tem no seu PC no site: https://www.vagrantup.com/downloads.html e a instalação posteriormente.

Recomendo criar uma variável de ambiente VBox e Vagrant apontando para o caminho onde foi instalado o VirtualBox e Vagrant, depois aplicar essas variáveis de ambiente no PATH do SO.
Por que? Para poder executar de qualquer lugar no CMD ou terminal.

Vagrant na prática
Agora pesquise um ambiente pronto Vagrant (box) no site: https://atlas.hashicorp.com/boxes/search e depois execute conforme abaixo:
vagrant box add nome-box
Após o download do ambiente (box), inicie com o comando
vagrant init nome-box
Acesso ao ambiente (box) via SSH
vagrant@127.0.0.1 -p 2222 OU
vagrant ssh

Comandos Vagrant
  • vagrant ssh:
  • faz login na máquina virtual, não precisa de login ou senha
  • vagrant up:
  • faz o boot na máquina virtual e executa os provisioners definidos
  • vagrant reload:
  • reinicia a máquina virtual. Útil principalmente quando há mudanças no Vagrantfile
  • vagrant provision:
  • executa apenas os provisioners, sem reiniciar a máquina. Útil após fazer pequenas modificações no provisionamento
  • vagrant destroy:
  • destrói a máquina virtual. Use quando quiser começar do zero com um vagrant up vagrant halt - "desliga" a máquina, equivalente a um shutdown
  • vagrant suspend:
  • suspende a execução da máquina virtual salvando seu estado (ideal para o dia-a-dia quando desenvolvendo)
  • vagrant resume:
  • retoma uma máquina virtual previamente suspensa

Convertendo .OVA to .BOX

Na seção anterior você aprendeu a usar um ambiente Vagrant (box) já pronto do repositório, nessa seção aprenderá como gerar o arquivo box para usar no Vagrant.

Bom, primeiramente cria uma máquina virtual no VirtualBox, instale uma distro e configure todo o ambiente necessário, depois exporte essa máquina virtual para o formato .ova.

Importando VM com formato .ova no VirtualBox

.OVA é a VM exportada do VirtualBox
.BOX é a VM convertida do .OVA to .BOX para usar no Vagrant
Primeiro lista as VMs
$VBoxManage list vms
copia o serial da vm
$vagrant package --base < serial-copiado-vm > --output NOME.box
Transfira essa NOME.box para um servidor da rede. E de outra máquina com o VirtualBox e Vagrant instalados.
$vagrant box add NOME.box --name NOME
Cria o arquivo Vagrantfile
$vagrant init NOME

Vagrant.configure("2") do |config|
config.vm.box = "NOME"
# ...
end
Liga a VM: $vagrant up
Desliga a VM: $vagrant halt
Destroi a VM: $vagrant destroy

Referências:
http://blog.wfsneto.com.br/2014/08/22/como-criar-e-costumizar-box-vagrant-cloud
https://nandovieira.com.br/usando-o-vagrant-como-ambiente-de-desenvolvimento-no-windows
http://www.erikaheidi.com/pt_br/blog/vagrant-101-montando-seu-ambiente-de-desenvolvimento-portatil
Feito!

quinta-feira, 14 de julho de 2016

Preparando o ambiente LaTeX no Linux e Windows

O que é o LaTeX ?

LaTeX é um conjunto de macros para a diagramação de textos TeX, bastante utilizado na produção de textos matemáticos e científicos, devido a sua alta qualidade tipográfica. Entretanto, também é utilizado para produção de artigos, livros, monografias, dissertações e teses.

O LaTeX foi desenvolvido na década de 80, por Leslie Lamport.

A ideia principal do LaTeX é distanciar o autor o máximo possível da apresentação visual da informação, pois a constante preocupação com a formatação desvia o pensamento do conteúdo escrito.

Ao contrário de sistemas WYSIWYG, o formato definitivo do texto só é conhecido após sua conclusão. Entretanto, existe uma ferramenta, como o LyX, que criam interfaces visuais para o LaTeX com sistemáticas intuitivas semelhantes ao WSYSIWYG, como WYSIWYM.

Os documentos escritos em LaTeX pode ser escritos em qualquer editor de textos, como o Bloco de notas, Vim, Gedit, Atom, porém existem IDEs exclusivas para LaTeX, como o Texmaker, Kile, TeXnicCenter.

O compilador LaTeX para cada plataforma são: MiKTeX para Windows, MacTeX para MacOS X e o TeX Live (Linux, FreeBSD).

No Windows é mais comum usar o compilador LaTeX MiKTeX e o editor TeXnicCenter.

No Linux é mais comum usar o compilador LaTeX TeX Live e o editor Texmaker.

Depois de conhecer o LaTeX e para que serve, podemos seguir os procedimentos de instalação do ambiente LaTeX no Linux e Windows.

No GNU/Linux Debian e derivados

Estando com o arquivo /etc/apt/sources.list devidamente com o repositório configurado, abre o terminal, logue como root e execute.

#apt-get install texlive-full
Isso irá instalar o TeX Live completo, irá fazer o download de 1GB e ocupará após instalado 2GB.
Depois que terminar, só falta instalar um bom editor LaTeX, como o Texmaker ou o Kile.

Texmaker
#apt-get install texmaker
Kile
#apt-get install kile

O procedimento seguinte é manual e pode ser aplicado em qualquer distribuição Linux, desde que tenha as dependências instaladas.

Primeiro o download da imagem ISO do TeX Live no endereço: http://www.lasca.ic.unicamp.br/pub/ctan/systems/texlive/Images/

Reginaldo@Saitam$ wget -c www.lasca.ic.unicamp.br/pub/ctan/systems/texlive/Images/texlive2016.iso

Após o download, montar a ISO emulando um DVD
# mount -t iso9660 -o ro,loop,noauto /caminho_entrada /caminho_saida
# mkdir /mnt/texlive
# mount -t iso9660 -o ro,loop,noauto /home/reginaldo/Downloads/texlive2016.iso /mnt/texlive
# cd /mnt/texlive
# ./install-tl
Se quiser manter o default, basta teclar ENTER, a menos que queira alterar localização.
Digite R para retornar e I para instalar.

No Windows

Para Windows não tem segredo, basta fazer o download do MiKTeX e TeXnicCenter, em seguinda fazer o procedimento de instalação padrão do Windows.

MiKTeX: http://miktex.org/download

TeXnicCenter: http://www.texniccenter.org/download

Também já tem disponível dois ambientes LaTeX na nuvem https://www.sharelatex.com/ e o https://www.overleaf.com/

Algumas apostilas LaTeX apostilas LaTeX
Feito!