Tela preta no login (Black screen on login) – Windows
Tentando voltar a ativa…. Fazendo coisa diferente e apanhando muito das novidades…
Trabalho novo, vida nova… e eu aprendendo e mexendo bastante com o Window$!!!!
Esses dias tive um problema que me deixou bastante (mas bastaaaante apertada, rs), em um servidor Windows 2012 R2 Standard, tinha o IIS 8, AD, WSUS, Power Shell e mais alguns serviços instalados, somente o IIS funcionando corretamente. Por por causa de um problema no serviço ADWS, seria necessário reinstalar o .NET no host.
Não consegui desinstalar a framework do .NET (se existe um jeito por favor me contem) sem desinstalar o IIS, WSUS, AD e o PowerShell, isso mesmo, todo mundo depende de todo mundo… Pensei comigo, tranquilo, nenhum trauma, só desinstalar as features pelo Server Manager e depois reinstalar de novo, clássico Next-Next-Next-Finish. E assim fiz, executei os passos no SM, o processo foi concluído, o host reiniciou, fui feliz terminar meu trabalho, digitei login e senha…
pausa….
Informação importante, se tratava de uma máquina virtual, que por motivos não importantes agora, estou sem acesso ao VMWare server, ou seja, só conto com acesso remoto nessa feliz jornada….
…fim da pausa.
digitei login e senha, enter e PAM!!!! Uma tela preta (pelo menos não é a azul da morte) que nunca vi no Windows….. Sim, eu tinha só uma tela preta no fundo e um prompt aberto…
Fui para o Senhor que tudo sabe e procurei “Tela preta após o login Windows 2012”, para minha surpresa (e sorte) achei várias respostas.
A primeira pista que segui (https://support.microsoft.com/en-us/kb/2897632), dizia que se tratava de um erro em alguns produtos da Microsoft e que a instalação do patch 2887595, resolveria o problema.
Baixei o danado, tentei instalar via PsTools, GPO e nada. Consegui copiar o instalador pro servidor através do compartilhamento administrativo do Windows, executei pelo prompt, instalei, reiniciei e nada!
Continuei as buscas, em algum momento, ‘descobri’ que com tudo que foi desinstalado, a interface gráfica foi junto e que poderia usar o PowerShell para instalar a função novamente….. Mas pera, O Powershell também foi desinstalado… Tentei de várias formas instalá-lo e não consegui.
Achei outro artigo, dizendo que poderia usar o utilitário sconfig (‘versão’ Server Manager para command line) no prompt, segui a partir do “Turning the GUI on“, e eu não tinha a opção 12 ¬¬ a única importante.
Aí o desespero já apertou, comecei a ler os comentários e fazer tudo que sugeriam, até que cheguei em um que resolveu minha vida, conheci ao DISM (Deployment Image Servicing and Management).
Neste post, alguém teve o mesmo problema que eu, inicialmente disseram para executar esta linha no prompt:
dism /online /enable-feature /featurename:server-gui-mgmt /featurename:server-gui-shell /featurename:servercore-fullserver
Mas finalizou com o Erro 50. Logo depois sugeriram adicionar o /all ao comando, ficando assim:
dism /online /enable-feature /featurename:server-gui-mgmt /featurename:server-gui-shell /featurename:servercore-fullserver /all
Nota: Os comandos devem ser executados em uma única linha.
A execução demora um pouco, até achei que não estava funcionando, mas ao final do processo reiniciei o servidor e a interface gráfica estava funcionando novamente. Depois de respirar, conferi os outros serviços e, felizmente o problema do AD (que comentei no início) foi resolvido com a reinstalação do .NET, como era desejado.
Instalação do Samba4.1 no Debian Wheezy
No inicio do ano publiquei um post sobre a instalação do Samba4 (Instalação do Samba4 – Active Directory compatible Domain Controler). Depois de um tempo de uso, de apanhar bastante e de várias coisas darem errado, a gente acaba vendo tudo diferente, aprende a simplificar e otimizar os trabalhos. Como a solução final foi realmente mais simples e limpa que a anterior, resolvi fazer uma atualização do post anterior. Algumas coisas permanecerão as mesmas, outras deixarão de existir (como compilação do bind, por exemplo) e algumas serão adicionadas, devido a atualização das versões utilizadas e tombos sofridos durante o caminho.
Enfim, falando do que interessa, desta vez nosso ambiente é o seguinte:
- Debian Wheezy 7.2
- Samba4.1
- Bind9
Antes de começar, ajuste os arquivos /etc/hosts e /etc/hostname do servidor com o IP, FQDN e nome correto do servidor para que não tenhamos problemas com o Kerberos.
Bind
Sem necessidade de compilação e utilizando versões estáveis disponíveis:
# apt-get install bind9
Vamos informar ao Bind que o Samba poderá alterar as entradas de DNS do domínio. No arquivo /etc/bind/named.conf, inserir a linha:
include "/var/lib/samba/private/named.conf";
Agora, vamos informar ao Bind para onde ele deve encaminhar as solicitações que ele não consegue resolver (Forwarders) e quais redes são autorizadas a utilizar este servidor para resolução de nomes (acl e allow-query):
# vim /etc/bind/named.conf.options acl redesautorizadas { 192.168.0.0/24; 192.168.2.0/24; 192.168.3.0/29; }; options { directory "/var/cache/bind"; //dnssec-validation auto; tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab"; allow-query { redesautorizadas; }; forwarders{ 8.8.8.8; 8.8.4.4; }; auth-nxdomain no; # conform to RFC1035 // listen-on-v6 { any; }; };
Preparação do SO
Dependências necessárias para o serviço:
# apt-get install build-essential libacl1-dev libattr1-dev libblkid-dev \ libgnutls-dev libreadline-dev python-dev python-dnspython gdb pkg-config \ libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user docbook-xsl \ libcups2-dev acl
Serão solicitados o domínio e servidor administrativo, no caso:
Kerberos Realm: TESTE.COM KDC: dc.teste.com
Configurar o sistema de arquivos para suporte a acl e attr. No arquivo /etc/fstab, localizar a linha que define o ponto de montagem do diretório raiz e deixá-la como no exemplo:
UUID=uuid_disco / ext3 user_xattr,acl,barrier=1,errors=remount-ro 0 1
Depois de um tempo com o Samba em funcionamento e o servidor de arquivos ativo, observamos que a partição /run/lock enchia rapidamente e o serviço simplesmente parava. Resultado, muitas reclamações e muitos probemas. Depois de muita pesquisa e alguns testes, descobrimos que seria necessário aumentar o tamanho dessa partição no /etc/fstab e a dor de cabeça cessaria…
Originalmente essa linha não aparece no arquivo, então é necessário adicioná-la:
tmpfs /run/lock tmpfs rw,noexec,nosuid,nodev,size=52428800 0 0
Mais explicações sobre o problema e a solução:
Download configuração e instalação do Samba
# wget -c https://ftp.samba.org/pub/samba/stable/samba-4.1.0.tar.gz # gunzip samba-4.1.0.tar.gz # tar -xvf samba-4.1.0.tar # cd samba-4.1.0/ # ./configure --enable-debug --enable-selftest --enable-fhs \ --prefix=/usr --sysconfdir=/etc --localstatedir=/var # make && make install # mkdir /var/run/samba
Nota: Na configuração, os parâmetros prefix, sysconfdir e localstatedir não são obrigatórios, fiz desta forma apenas para que os arquivos de configuração e executáveis do Samba fossem copiados para os locaias padrão da distribuição.
Configuração do NSS (Network Service Switch)
# vim /etc/nsswitch.conf passwd: compat winbind group: compat winbind shadow: compat winbind
Ajustes Kerberos
#vim /etc/krb5.conf [libdefaults] default_realm = TESTE.COM dns_lookup_realm = true dns_lookup_kdc = true [realms] TESTE.COM = { kdc = kdc.teste.com admin_server = kdc.teste.com } [domain_realm] .teste.com = TESTE.COM teste.com = TESTE.COM
Nota: Nas configurações do kerberos deve-se respeitar upper case e lower case na configuração dos parâmetros.
Como o pacote do samba foi compilado o script de inicialização do serviço não foi criado, vamos criá-lo e configurar a inicialização automática no sistema:
# vim /etc/init.d/samba4 #! /bin/bash ### BEGIN INIT INFO # Provides: samba4 # Required-Start: $network $local_fs $remote_fs # Required-Stop: $network $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: start Samba daemons ### END INIT INFO # # Start/stops the Samba daemon (samba). # Adapted from the Samba 3 packages. # PIDDIR=/var/run/samba SAMBAPID=$PIDDIR/samba.pid # clear conflicting settings from the environment unset TMPDIR # See if the daemon and the config file are there test -x /usr/sbin/samba -a -r /etc/samba/smb.conf || exit 0 . /lib/lsb/init-functions case "$1" in start) log_daemon_msg "Starting Samba 4 daemon" "samba" # Make sure we have our PIDDIR, even if it's on a tmpfs install -o root -g root -m 755 -d $PIDDIR if ! start-stop-daemon --start --quiet --oknodo --exec /usr/sbin/samba -- -D; then log_end_msg 1 exit 1 fi log_end_msg 0 ;; stop) log_daemon_msg "Stopping Samba 4 daemon" "samba" start-stop-daemon --stop --quiet --name samba $SAMBAPID # Wait a little and remove stale PID file sleep 1 if [ -f $SAMBAPID ] && ! ps h `cat $SAMBAPID` > /dev/null then # Stale PID file (samba was succesfully stopped), # remove it (should be removed by samba itself IMHO.) rm -f $SAMBAPID fi log_end_msg 0 ;; restart|force-reload) $0 stop sleep 1 $0 start ;; *) echo "Usage: /etc/init.d/samba {start|stop|restart|force-reload}" exit 1 ;; esac exit 0
# chmod +x /etc/init.d/samba4
# update-rc.d samba4 defaults
Samba4 instalado e sistema ajustado. Segue alguns comandos que podem ser úteis na criação e configuração do domínio:
– Provision Domain
# samba-tool domain provision
– Join Domain
# samba-tool domain join teste.com DC -Uuser.adm –realm=teste.com –dns-backend=BIND9_DLZ –site=SITE –server=DC
– Retirar membro de domínio
# samba-tool domain demote –realm=TESTE.COM -Uuser.adm –password=xxxxxx –server=DC
– Teste DNS
# host -t SRV _ldap._tcp.teste.com.
# host -t A dc.teste.com
– Update Samba
* Compilar e instalar o novo pacote com as instruções anteriores.
* Alterar a permissão do arquivo key.pm
# chmod 0600 /var/lib/samba/private/tls/key.pem
Após os ajustes reiniciar os serviços do samba e bind.
Instalação do Samba4 – Active Directory compatible Domain Controler
Depois de muita espera e muita expectativa finalmente chegou o Samba4, prometendo (e cumprindo) implementação do ambiente criado pelo Active Directory (Microsoft), após a instalação a gerência e configuração do domínio e DC’s é feita utilizando as próprias ferramentas da Microsoft.
E vamos ao que interessa. Neste post serão abordadas a instalação do Samba4 no Debian Squeeze6.0.6 e Ubuntu 12.04LTS utilizando o Bind como DNS backend, nessa caso é necessário que o pacote tenha versão igual ou superior a 9.7.x
– Bind – DNS
Debian Squeeze 6.0.6
O último pacote de instalação do bind disponível para o Debian é o 9.6 nesse caso teremos que compilar o pacote correto.
Para que não seja necessário criar os scripts de start/stop do serviço vamos instalá-lo e removê-lo utilizando o apt-get.
Nota: caso a versão disponível seja superior a 9.7.x não é necessária a remoção do serviço.
# apt-get install bind9 # apt-get autoremove bind9Dependências necessárias
# apt-get install devscripts build-essential libkrb5-dev debhelper libssl-dev libtool bison libdb-dev libldap2-dev libxml2-dev libpcap-dev hardening-wrapper libgeoip-dev dpkg-devCriar diretório de cache e alterar as permissões
# mkdir /var/cache/bind# chown bind:bind /var/cache/bind
Baixar o pacote
# mkdir bind9 # cd bind9 # dget -x http://ftp.de.debian.org/debian/pool/main/b/bind9/bind9_9.8.4.dfsg.P1-3.dsc # tar -xvzf bind9_9.8.4.dfsg.P1.orig.tar.gz # cd bind9-9.8.4.dfsg.P1/ Compilar e instalar o serviço # ./configure –prefix=/usr –mandir=/usr/share/man –infodir=/usr/share/info –sysconfdir=/etc/bind –localstatedir=/var –enable-threads –enable-largefile –with-libtool –enable-shared –enable-static –with-openssl=/usr –with-gssapi=/usr –with-gnu-ld –with-dlz-postgres=no –with-dlz-mysql=no –with-dlz-bdb=yes –with-dlz-filesystem=yes –with-dlz-ldap=yes –with-dlz-stub=yes –with-dlz-dlopen=yes –with-geoip=/usr CFLAGS=-fno-strict-aliasing # make installUbuntu 12.04LTS
Dependências necessárias:
# apt-get install devscripts build-essential libkrb5-dev debhelper libssl-dev libtool bison libdb-dev libldap2-dev libxml2-dev libpcap-dev hardening-wrapper libgeoip-dev dpkg-devNo Ubuntu o pacote disponível no repositório atende aos requisitos do Samba4, nesse caso não é necessário compilar o pacote, a instalação pode ser feita via apt-get:
# apt-get install bind9Para que o Samba possa alterar as configurações e criar as entradas para o domínio é necessário fazer algumas alterações, são elas:
# vim /etc/bind/named.conf include “/usr/local/samba/private/named.conf”; # vim /etc/bind/named.conf.options tkey-gssapi-keytab “/usr/local/samba/private/dns.keytab”; forwarders { 8.8.8.8; 8.8.4.4; };Nota: A opção forwarders só deve ser usada caso o servidor encaminha solicitações que ele não consiga resolver para servidores DNS externos.
Samba4
Dependências necessárias:
Debian 6.0.6 – Squeeze
# apt-get install build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev aclUbuntu 12.04LTS
# apt-get install libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev aclNota: Serão solicitados o domínio do servidor e FQDN dos servidores do Kerberos.
No Ubuntu ainda é necessária uma alteração no apparmor para que ele permita alterações no bind
# vim /etc/apparmor.d/usr.sbin.named/usr/local/samba/private/** rkw,
/usr/local/samba/private/dns/** rkw,
/usr/local/samba/lib/** rm,#
/etc/init.d/apparmor
reload
Se o sistema de arquivos utilizado for ext3 ou ext4 será necessário configurá-lo para suportar acl e attr. Para isso vamos editar o arquivo /etc/fstab e incluir as opções “user_xattr,acl,barrier=1” na montagem do volume. Após alterado o arquivo deve estar parecido com este:
# vim /etc/fstab
/dev/hda / ext3 user_xattr,acl,barrier=1,errors=remount-ro 0 1
Montar novamente o sistema de arquivos
# mount -o remount,rw /Também é importante verificar se o nome do host está definido corretamente, verifique as configurações dos arquivos /etc/hosts e /etc/hostname, faça as alterações necessárias e reincie o servidor.
Download, configuração e instalação do Samba
# wget -c http://www.samba.org/samba/ftp/stable/samba-4.0.1.tar.gz # tar -xvf samba-4.0.1.tar.gz# cd samba-4.0.1/
# ./configure –enable-debug –enable-selftest
# make
# make install
Após instalado o samba, vamos criar o domínio:
# /usr/local/samba/bin/samba-tool domain provisionSerão solicitadas informações como: realm,domain, server role, DNS backend e password. As configurações serão aplicadas e o domínio criado, uma saída semelhante a esta será apresentada:
Realm: TESTE.COM
Domain [TESTE]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
Administrator password:
Retype password:
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=teste,DC=com
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=teste,DC=com
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
See /usr/local/samba/private/named.conf for an example configuration include file for BIND
and /usr/local/samba/private/named.txt for further documentation required for secure DNS updates
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role: active directory domain controller
Hostname: samba4-dc
NetBIOS Domain: TESTE
DNS Domain: teste.com
DOMAIN SID: S-1-5-21-2228987782-1448195482-472659170
Antes de iniciar o Samba, reiniciar o bind para que as alterações sejam aplicadas:
# /etc/init.d/bind9 restartIniciar o samba
# /usr/local/samba/sbin/sambaAtualizar a base DNS
# /usr/local/samba/sbin/samba_dnsupdate –verbose –all-namesTestar o DNS
# host -t SRV _ldap._tcp.senior.local
Nota: Para funcionamento correto dos comandos acima, é necessário que no /etc/resolv.conf o nameserver contenha o IP do servidor local.
Outro serviço importante a ser configurado para o correto funcionamento do samba4 e kerberos é o NTP, caso os relógios não estejam sincronizados os serviços podem apresentar problemas.
Referências:
Autenticação NTLM no Apache
Ambiente:
– Samba 3.5.6 e 3.6.6
– Apache 2.2
– Debian Wheezy 7.1
Pacotes necessários: samba, smbclient, winbind, libapache2-mod-auth-ntlm-winbind
# Samba
No arquivo /etc/smb/smb.conf adicionar as configurações
workgroup = <dominio> server string = %h server netbios name = <nomeservidor> realm = <dominio.com> log level = 2 log file = /var/log/samba/samba.log max log size = 50 security = domain password server= <servidor que validará as requisições. Ex: ad, ldap> socket options = SO_KEEPALIVE TCP_NODELAY encrypt passwords = yes allow trusted domains = yes winbind uid = 10000-20000 winbind gid = 10000-20000 winbind enum users =yes winbind enum groups = yes winbind use default domain = yes winbind use default domain = yes hosts allow = <rede com permissão para autenticar. Ex: 192.168.>
# Configurações winbind
Editar o arquivo /etc/nsswitch.conf de maneira que fiquei como a seguir
passwd: files winbind group: files winbind shadow: files winbind
# Incluir o servidor no domínio
net join -w DOMAIN -SSERVER -U USER
– DOMAIN: domínio
– SERVER: PDC
– USER: usuário com permissão de administrador no domínio
– Adicionar o usuário www-data ao grupo winbindpriv
# Apache
Nos arquivos do diretório conf.d, referentes aos sistemas que precisam de autenticação, adicionar as linhas:
AuthType NTLM AuthName "Autenticar Acesso" NTLMAuth on NTLMAuthHelper "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp" NTLMBasicAuthoritative on require valid-user
# Reiniciar o winbind e o apache
/etc/init.d/winbind restart
/etc/init.d/apache2 restart
Você é Hands On?
Max Gehringer (Colunista Revista EXAME)
Welcome
Como sempre encontro muita coisa e muito do que aprendi devo à Internet e redes sociais, quis abrir mais um canal de comunicação, talvez específico, talvez nem tanto para compartilhamento de idéias, experiências e conhecimento.
Vou tentar manter as idéias e notícias em dia, alimentando o blog com coisas do dia-a-dia, experiências antigas, curiosidades, tendências… o que for interessante, válido e que não contrarie a natureza do linuxnatyworking.
Fiquem à vontade para comentar, sugerir, criticar ou elogiar.