Lembrando que só para Windows:
if 'win' in sys.platform:
os.startfile('ex' + os.sep + 'sons' + os.sep + 'sons_testes.wav')
domingo, 23 de outubro de 2016
Biblioteca OS.PATH do python 3
Vamos registrar algumas funções da biblioteca os.path do python 3:
os.path.isdir('diretorio') = True => Verifica se é diretório;
os.path.isfile('file.py') = True => Verifica se é arquivo;
os.path.exists('algum') = True => Verifica se existe alguma coisa, ex: arquivo, diretório e etc;
os.path.getsize('arquivo.py') = 2015 => Verifica o tamanho.
os.path.split("/diretorio/diretorio/arquivo.py") = ("/diretorio/diretorio","arquivo.py") => Separa o que é diretório e o que é arquivo;
os.path.join("diretorio","arquivo.py") = diretorio/arquivo.py => Junta os parâmetros passados;
os.path.dirname("/diretorio/arquivo.py") = /diretorio => Obtém o nome do diretório;
os.path.basename("/diretorio/arquivo.py") = arquivo.py => Obtém o nome do diretório;
os.path.splitext("arquivo.py") = ('arquivo','.py') => Separa o que é arquivo e o que é extensão;
os.path.normpath("diretorio\diretorio/diretorio/arquivo.py") = ('diretorio/diretorio/diretorio/arquivo.py') => corrige alguns detalhes de diretório, como exemplo a barra e contrabarra;
os.curdir => equivalente ao "."
os.pardir => equivalente ao ".."
os.path.abspath("diretorio") = ('c:\diretorio\diretorio') => Indica o caminho absoluto.
os.path.isdir('diretorio') = True => Verifica se é diretório;
os.path.isfile('file.py') = True => Verifica se é arquivo;
os.path.exists('algum') = True => Verifica se existe alguma coisa, ex: arquivo, diretório e etc;
os.path.getsize('arquivo.py') = 2015 => Verifica o tamanho.
os.path.split("/diretorio/diretorio/arquivo.py") = ("/diretorio/diretorio","arquivo.py") => Separa o que é diretório e o que é arquivo;
os.path.join("diretorio","arquivo.py") = diretorio/arquivo.py => Junta os parâmetros passados;
os.path.dirname("/diretorio/arquivo.py") = /diretorio => Obtém o nome do diretório;
os.path.basename("/diretorio/arquivo.py") = arquivo.py => Obtém o nome do diretório;
os.path.splitext("arquivo.py") = ('arquivo','.py') => Separa o que é arquivo e o que é extensão;
os.path.normpath("diretorio\diretorio/diretorio/arquivo.py") = ('diretorio/diretorio/diretorio/arquivo.py') => corrige alguns detalhes de diretório, como exemplo a barra e contrabarra;
os.curdir => equivalente ao "."
os.pardir => equivalente ao ".."
os.path.abspath("diretorio") = ('c:\diretorio\diretorio') => Indica o caminho absoluto.
sábado, 22 de outubro de 2016
PARA IMPLANTAR O WYSIWYG-REDACTOR
Precisa do Pillow mas para instalá-lo precisamos das bibliotecas:
libjpeg-dev
zlib1g-dev
https://github.com/douglasmiranda/django-wysiwyg-redactor
libjpeg-dev
zlib1g-dev
https://github.com/douglasmiranda/django-wysiwyg-redactor
sábado, 15 de outubro de 2016
CONEXÃO POSTGRES COM DJANGO
INSTALAR POSTGRESQL
# apt-get install postgresql
ACESSAR O POSTGRESQL E CRIAR UMA SENHA
# sudo su - postgres
# psql -d postgres -U postgres
# alter user postgres with password 'senha';
# \q
FAZER A CONEXÃO ENTRE O POSTGRES DE O PYTHON - PSYCOPG2
# apt-get install libpq-dev
# apt-get install pyscopg2
# apt-get install postgresql
ACESSAR O POSTGRESQL E CRIAR UMA SENHA
# sudo su - postgres
# psql -d postgres -U postgres
# alter user postgres with password 'senha';
# \q
FAZER A CONEXÃO ENTRE O POSTGRES DE O PYTHON - PSYCOPG2
# apt-get install libpq-dev
# apt-get install pyscopg2
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mydb',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}
sexta-feira, 7 de outubro de 2016
Enviando emails com o Python
Vale ressaltar que o exemplo é indicado para envio de e-mail mais simples, para enviar e-mail com formatações especiais e anexos é recomendado o uso do módulo email.
O módulo smtplib define um cliente SMTP que pode ser usado para enviar emails tanto via SMTP quanto ESMTP. O smtplib segue os padrões da RFC 821 (SMTP), RFC 1869 (ESMTP), RFC 2554 (Autenticação SMTP) e RFC 2487 (SMTP Seguro via TLS).
Como este módulo já está incluso nas bibliotecas do Python você não precisará instalar nenhuma biblioteca adicional.
Agora que já demos uma boa introdução sobre o módulo smtplib vamos ao que interessa.
Inicialmente vamos importar o módulo:
Inicialmente vamos importar o módulo:
import smtplib
Vamos criar a instância do SMTP de acordo com a forma de autenticação:
Vamos criar a instância do SMTP de acordo com a forma de autenticação:
TLS
smtp = smtplib.SMTP('localhost', 587)smtp.starttls()
SSL
smtp = smtplib.SMTP_SSL('localhost', 465)
Sem autenticação
smtp = smtplib.SMTP('localhost', 25)
Se escolhemos TLS ou SSL devemos fazer a autenticação:
smtp.login('usuário', 'senha')
Caso seja sem autenticação devemos nos identificar enviando o comando EHLO ou HELO:
# EHLOsmtp.ehlo()# HELOsmtp.helo()# De forma genérica. Tenta EHLO primeiro.smtp.ehlo_or_helo_if_needed()
Não há necessidade de chamar os métodos
Enviando um email:
ehlo ou helo quando se utiliza SSL ou TLS, pois o método login faz a chamada desses métodos caso seja necessário.Enviando um email:
msg = """From: Seu Nome <seuemail@seudominio.com.br>To: outroemail@seudominio.com.brSubject: Buteco Open SourceEmail de teste do Buteco Open Source"""smtp.sendmail('seuemail@seudominio.com.br', ['outroemail@seudominio.com.br'], msg)
-----------------------------------------------------------------------------------------
Abaixo você pode verificar como enviar usando TLS:
import smtplib
smtp = smtplib.SMTP('smtp.gmail.com', 587)
smtp.starttls()
smtp.login('seuemail@gmail.com', 'suasenha')
de = 'seuemail@gmail.com'
para = ['seuemail@gmail.com']
msg = """From: %s
To: %s
Subject: Buteco Open Source
Email de teste do Buteco Open Source.""" % (de, ', '.join(para))
smtp.sendmail(de, para, msg)
smtp.quit()
--------------------------------------------------------------------------------------------
Já neste outro exemplo você pode verificar como enviar via SSL:
import smtplib
smtp = smtplib.SMTP_SSL('smtp.gmail.com', 465)
smtp.login('seuemail@gmail.com', 'suasenha')
de = 'seuemail@gmail.com'
para = ['seuemail@gmail.com']
msg = """From: %s
To: %s
Subject: Buteco Open Source
Email de teste do Buteco Open Source.""" % (de, ', '.join(para))
smtp.sendmail(de, para, msg)
smtp.quit()
Confira abaixo uma lista dos servidores de email mais comuns e suas configurações.
Espero que você tenha gostado desta publicação. Continue acompanhando que faremos uma continuação falando sobre o módulo email.
| Nome | Servidor | Autenticação | Porta |
|---|---|---|---|
| Gmail | smtp.gmail.com | SSL | 465 |
| Gmail | smtp.gmail.com | StartTLS | 587 |
| Hotmail | smtp.live.com | SSL | 465 |
| Mail.com | smtp.mail.com | SSL | 465 |
| Outlook.com | smtp.live.com | StartTLS | 587 |
| Office365.com | smtp.office365.com | StartTLS | 587 |
| Yahoo Mail | smtp.mail.yahoo.com | SSL | 465 |
Espero que você tenha gostado desta publicação. Continue acompanhando que faremos uma continuação falando sobre o módulo email.
Python 3 – Servindo arquivos via HTTP Server
Tendo Python 3 instalado, basta ir ao terminal. No diretório que deseja servir arquivos HTML, digite:
python -m http.server 8000
terça-feira, 26 de abril de 2016
CONEXÃO PYTHON COM POSTGRESQL
Devido a uma dificuldade em achar tutorial preciso para conexão da versão python3.4 e POSTGRESQL9.4 resolvi registrar:
Antes de mais nada precisamos instalar o PSYCOPG2:
http://initd.org/psycopg/
Agora vamos aos passos:
import psycopg2
conn = psycopg2.connect(host = 'localhost', database = 'teste', user = 'postgres', password = 'postgres')
cursor = conn.cursor()
cursos.execute("INSERT INTO teste (nome,idade) VALUES (%s,%s)", ('almir',35))
conn.commit()
cursor.close()
conn.close()
- O meu problema estava no fato de não colocar o HOST='LOCALHOST' no connect.
CÓDIGO EM PYTHON PARA POPULAR O BANCO:
===================================================
import psycopg2
conn = psycopg2.connect(host = 'localhost',database = 'teste', user = 'postgres', password = 'postgres')
cursor = conn.cursor()
for a in range(0, 202):
print(nome)
nome = 'almirjr-' + str(a)
cursor.execute("INSERT INTO teste (nome,idade) VALUES (%s,%s)",(nome,a))
conn.commit()
cursor.close()
conn.close()
===================================================
Antes de mais nada precisamos instalar o PSYCOPG2:
http://initd.org/psycopg/
Agora vamos aos passos:
import psycopg2
conn = psycopg2.connect(host = 'localhost', database = 'teste', user = 'postgres', password = 'postgres')
cursor = conn.cursor()
cursos.execute("INSERT INTO teste (nome,idade) VALUES (%s,%s)", ('almir',35))
conn.commit()
cursor.close()
conn.close()
- O meu problema estava no fato de não colocar o HOST='LOCALHOST' no connect.
CÓDIGO EM PYTHON PARA POPULAR O BANCO:
===================================================
import psycopg2
conn = psycopg2.connect(host = 'localhost',database = 'teste', user = 'postgres', password = 'postgres')
cursor = conn.cursor()
for a in range(0, 202):
print(nome)
nome = 'almirjr-' + str(a)
cursor.execute("INSERT INTO teste (nome,idade) VALUES (%s,%s)",(nome,a))
conn.commit()
cursor.close()
conn.close()
===================================================
segunda-feira, 26 de outubro de 2015
INTEGRAÇÃO ZABBIX E GLPI
Essa atualização é em consequência de pedidos vindo dos gringos e também a pedido da Zabbix SIA por ser o 4.º conteúdo mais popular no recém criado https://share.zabbix.com/ e o 1.º entre os brasileiros. Para conferir a lista dos mais populares, acesse https://share.zabbix.com/popula
Há um tempo que eu queria desenvolver algo para integrar o Zabbix a algum outro sistema. Esse ano surgiu uma oportunidade de implementação de alguns sistemas de inventário e gerenciamento de chamados. Logo pensei em fazer uma integração para abertura e fechamento automático dostickets quando ocorresse algum problema que o Zabbix identificasse.
Porém, o meu entusiasmo foi logo caindo quando eu percebi que não era uma coisa tão trivial de se fazer. Pesquisei várias fontes em busca de informações a respeito dessa integração, porém não passavam de tutoriais ensinando como abrir tickets no GLPI enviando um e-mail. Estudando mais um pouco o GLPI, percebi que não era possível fazer o fechamento do ticket por outro e-mail. Num dos fóruns que eu participo, surgiu a idéia de tentar fazer essa integração atráves do plugin Webservicesque tem disponível para o GLPI. Em outra mensagem, uma pessoa enviou um link onde foi feito a integração do GLPI com a ferramenta Nagios utilizando esse plugin. Foi aí que eu ressolvi atacar e comecei a estudar como essa integração foi feita para que eu pudesse desenvolver para integrar com o Zabbix.
A partir desse momento surgiram várias dúvidas e também a necessidade de utilização de outros recursos, como a API do Zabbix. Pois, além da abertura do ticket, eu queria reconhecer o evento gerado pelo Zabbix de forma automática. Sendo assim, esse projeto iniciou com os seguintes propósitos:
- Identificar uma trigger com status PROBLEM no Zabbix e executar uma ação.
- Disparar a execução de um script PHP para abrir o ticket no GLPI usando o plugin Webservices.
- Enviar o número de evento gerado pela ação juntamente com o identificador da trigger e o nome do host onde o problema aconteceu. Essas informações serão gravadas no ticket criado no GLPI.
- Reconhecer o evento no Zabbix executando um script Python que faz uso da API do próprio Zabbix.
- Identificar uma trigger com status OK no Zabbix e disparar a execução de um script PHP para fechar o ticket no GLPI, além de incluir um followup no ticket informando que o problema foi resolvido.
- Utilizar o recurso de notificação de chamados disponível no GLPI.
Para seguir este tutorial, você deverá ter o Zabbix e o GLPI instalados. Não vou comentar sobre a instalação desses dois sistemas. Existem muitos tutoriais de instalação na web. Porém, os que eu recomendo são:
As seguintes versões de software foram usadas nesta integração:
- Zabbix 2.2
- GLPI 0.84.3
- Python 2.6.6
- MySQL 5.1.69
- PHP 5.3.3
- Plugin Webservices 1.4
Creio não ter problemas de funcionar com a versão do Zabbix 2.x, pois a biblioteca Python API foi desenvolvida para funcionar a partir da versão 1.8. Mas quem vai querer usar versão anterior depois do lançamento da 2.2? A única dependência para o zabbix-glpi funcionar é a versão do GLPI e do plugin Webservices, que devem ser no mínimo as versões listadas acima.
Instalando o plugin Webservices no GLPI.
Antes de instalarmos o plugins, devemos suprir as dependências instalando os seguintes pacotes:
- php-soap
- php5-xmlrpc
Obs.: Se o Zabbix estiver instalado em servidor separado do GLPI, você deverá instalar o pacote php5-xmlrpc também no servidor do Zabbix.
- apt-get install php-soap php-xmlrpc -y
- service apache2 reload
Baixar e descompactar o plugin webservices dentro do diretório plugins do GLPI.
- cd /var/www/html/glpi/plugins
- wget https://forge.indepnet.net/attachments/download/1623/glpi_webservices-1.4.0.tar.gz
- tar xf glpi_webservices-1.4.0.tar.gz
Ajustar as permissões do diretório que foi descompactado.
- chown -R apache.apache webservices
Acessar o menu Configurar > Plugins na interface web do GLPI, aparecerá a tela conforme figura abaixo:

Após, clique no botão Instalar e em seguida no botão Habilitar.
O próximo passo é realizar a configuração do plugin, no qual fazemos acessando o menu Plugins > Web Services.
Será exibida apenas uma configuração com o nome Local. Clique no link para abrir a configuração, conforme tela abaixo:
Aqui, só precisamos informar o IP ou faixa de IP que terá acesso ao Webservice. No campo IPv4 address range, informe o IP do servidor Zabbix. Altere o campo Nome para Zabbix, apenas para ficar mais organizado.
Observando a imagem acima, você verá que eu coloquei a range 192.168.0.169-192.168.0.170. Isto porque eu utilizo servidores separados para o Zabbix e o GLPI. Se você utiliza apenas um único servidor, informe apenas o IP desse servidor nos dois campos.
O restante dos campos pode ficar sem alteração.
zabbix-glpi - Instalação e configuração
Baixe os scripts de intregração disponíveis em https://github.com/janssenlima/zabbix-glpi
Recomendo a instalação do pacote git para clonar o repositório.
# apt-get install git
Após, clone o repositório:
# cd /tmp/
# git clone https://github.com/janssenlima/zabbix-glpi.git
Mova os scripts para o diretório externalscripts da instalação do Zabbix (ou um diretório de sua preferência).
# mv *zabbix* /opt/zabbix/externalscripts/
Ajuste a permissão para o usuário zabbix e dê permissão de execução para os scripts.
chown zabbix.zabbix /opt/zabbix/externalscripts/*
# chmod +x /opt/zabbix/externalscripts/*
O conteúdo do diretório ficará assim:
# tree /opt/zabbix/externalscripts/
/opt/zabbix/externalscripts/
├── ack_zabbix_glpi.py
└── tickets_zabbix_glpi.php
Onde:
ack_zabbix_glpi.py é o script que faz o reconhecimento do evento no Zabbix via API.
tickets_zabbix_glpi.php é o script que faz abertura e fechamento de tickets no GLPI utilizando o plugin Webservices.
Instale a API Zabbix com o seguinte comando:
pip install zabbix-api
Agora, está faltando criarmos as ações para disparar a abertura e fechamento dos tickets.
Acesse o menu Configuração > Ações na interface web do Zabbix.
Criaremos duas ações. A primeira para abrir o ticket. Clique no botão Criar ação. Na tela seguinte dê o nome da ação. Vou chamá-la "Abrir Chamado". Na aba Ação não é preciso alterar os demais campos. Na aba Condições, podemos deixar como está, pois já vai satisfazer o que precisamos. Vale lembrar que a condição Valor da trigger = PROBLEMA é obrigatória. Na aba Ações criaremos uma nova operação com os seguintes dados:
- Duração padrão do passo da operação: 60
- Tipo da opração: Comando remoto
- Lista alvo: Host: Zabbix server
- Tipo: Script personalizado
- Executar em: Agent Zabbix
- Comandos: php /opt/zabbix/externalscripts/tickets_zabbix_glpi.php eventhost="{HOSTNAME}" event="DOWN" state="{TRIGGER.STATUS}" hostproblemid=0 lasthostproblemid=0 servico="{TRIGGER.NAME}" triggerid="{TRIGGER.ID}" eventzabbix="{EVENT.ID}"
Algumas observações das configurações acima: A lista alvo deverá ser o host onde os scripts de integração se encontram; Não altere os parâmetros do campo comando, com exceção do caminho onde você gravou o script.
Crie outra ação com o nome "Fechar chamado". As únicas configurações que você precisa fazer são:
- Na aba Condições, remova a condição de problema da trigger e inclua Valor da trigger = OK.
- Altere o comando na aba Ações para: php /opt/zabbix/externalscripts/tickets_zabbix_glpi.php eventhost="{HOSTNAME}" event="UP" state="{TRIGGER.STATUS}" hostproblemid=1 lasthostproblemid=1 servico="{TRIGGER.NAME}" triggerid="{TRIGGER.ID}" eventzabbix="{EVENT.ID}"Novamente. Não altere os parâmetros do comando, apenas o caminho do script no seu servidor, caso for diferente do que está.
Dica: Clone a ação para não precisar fazer tudo novamente, já que são apenas duas alterações a fazer, além de trocar o nome da ação.
Neste primeiro momento não se preocupe com as condições. Vá testanto aos poucos. Uma dica é você filtrar por grupo de hosts. Por exemplo, você deseja abrir chamados automaticamente apenas dos servidores, impressoras e roteadores, deixando fora equipamentos como desktop.
O parâmetro EnableRemoteCommands do arquivo zabbix_agentd.conf deve estar com o valor 1, que habilita a execução de comandos remotos.
Toda a configuração para fazer a integração entre o Zabbix e o GLPI foi realizada.
Isso funciona mesmo?
O teste que eu vou fazer é forçar a parada do serviço SSH do próprio servidor do Zabbix. A imagem foi tirada da tela de Dashboard após o Zabbix identificar a que o serviço parou.
Observe na figura que após o incidente ser reconhecido, ele já executou uma ação e foi reconhecido. Isso significa que o ticket foi aberto. Temos outras formas de verificar o evento através do menu Monitoramento > Eventos. Clicando na data e horário do evento, obtemos informações detalhadas sobre o mesmo, conforme pode ser visualizado na figura abaixo:
Agora, vamos verificar o ticket criado no GLPI.
A figura acima exibe o ticket de ID 5 aberto e com status de novo e a descrição do problema com o número do evento gerado no Zabbix. É através desse número que o script ack_zabbix_glpi.py faz o reconhecimento do evento no Zabbix via API.
Ao abrirmos o ticket, podemos verificar outros campos, tais como a descrição do problema que exibe informações como nome do host, ID da trigger e seu status. Outra informação importante é a Origem da requisição, onde informa que este ticket foi criado por Webservices. Observe na figura abaixo:
Agora vamos iniciar o serviço SSH para o ticket ser fechado automaticamente. Acesse o menuMonitoramento > Eventos no Zabbix e verifique que o serviço já está OK.
Voltamos para o GLPI e verificamos que o ticket foi fechado.
Observe na coluna Status que mudou para Solucionado.
Clicando no ticket, veremos que o Followup foi inserido no registro após o seu fechamento automático. Observe a figura abaixo:
E assim a integração está realizada. Você poderá verificar os tickets abertos automaticamente quando uma trigger for disparada e ser fechado quando a trigger voltar ao normal. Existe um pluginde relatórios que podemos ver de forma gráfica a quantidade de registros que foram abertos e solucionados via Webservices. Mas isso é um assunto para outro post.
A respeito do recurso de notificação por e-mail, já está incluído e funcionando. Se você utiliza esse recurso do GLPI mas não quer receber os e-mails dos tickets abertos via Webservice, deverá comentar a linha no código do arquivo tickets_zabbix_glpi.php. Quando eu automatizar a instalação essa opção poderá ser escolhida no momento da instalação.
O próximo passo será empacotar o zabbix-glpi nos formatos RPM e DEB e automatizar a instalação. Atualizações e correções de erros serão informadas em posts neste blog.
Eu gostaria muito da opinião de vocês para que possamos manter esse projeto sempre atualizado, buscando melhorias de qualidade e performance, alterando opções que são geradas automaticamente etc. Para isso, preciso do feedback, tanto de crítica como de sugestões.
FONTE:
http://blog.janssenlima.com/2013/11/integracao-zabbix-glpi.html
http://blog.janssenlima.com/2013/11/integracao-zabbix-glpi.html
https://github.com/janssenlima/zabbix-glpi
http://blog.janssenlima.com/2014/08/atualizacao-zabbix-glpi.html
terça-feira, 29 de setembro de 2015
GERENCIANDO LAN (LAN HOUSE OU CYBER-CAFÉ) COM SOFTWARE LIVRE (OPENASB)
Uma funcionária responsável por uma biblioteca pediu-me uma solução para seu problema:
Dentro de uma biblioteca, existem 6 máquinas disponíveis para acesso a internet, sendo assim, estudantes que necessitam fazer pesquisas podem usá-los, desde que, utilizem por apenas 30 minutos e; não possuam permissões dentro do sistema operacional para alterar qualquer item do mesmo. As máquinas funcionam com Ubuntu para não ter problemas com "vírus".
Com o intuito de descascar esse abacaxi, pesquisei diversas forma de criação de script (em ShellScript) que encerrasse a sessão do usuário. Mas, deparei-me com a possibilidade de atrapalhar algum cadastro de algum visitante, pois encerrando a sessão, todos aplicativos iram fechar automaticamente. Em outra tentativa, fiz um script que bloqueasse a sessão do usuário. Contudo, outro problema surgiu: como estabelecer o tempo de acesso, corretamente para cada estudante.
Foi então que conheci o OpenASB, um aplicativo para Lan House, de código livre, desenvolvido em Gambas3 (linguagem de programação). Desta forma, conseguimos suprir nossas principais necessidades, estabelecendo o tempo de acesso, apresentando uma página de bloqueio que pode ser personalizada, possui ainda, diversas formas de bloqueio para usuário comum. Contudo, outras opções de segurança tivemos que fazer manualmente, como: bloquear acesso terminal (usermod -s /bin/false usuário); retirar a permissão de sudoers do usuário corrente (gpasswd -d usuário sudo); bloquear papel de parede para manter o mesmo padronizado para todas as máquinas, até porque usuário comum adora modificar (chmod 555 -R ~/.config/dconf).
OpenASB Servidor:
O OpenASB precisa de um servidor para controlar as demais máquinas, esse mesmo servidor precisa estar configura com as seguintes características:
- IP fixo;
- Ubuntu 15.04 (no 14.10 não funcionou direito);
- Gambas3 (o OpenASB só funciona com o Gambas3 instalado);
- Xvnc (para acesso remoto).
OpenASB Client:
O módulo cliente terá que ser configurado com as seguintes características:
- OpenASB apontar para o Servidor;
- Ubuntu 15.04;
- Ubuntu 15.04;
- Gambas3;
- Xvnc;
- O cliente precisa de dois usuários, um para permissão de "sudo" e outro com permissão padrão ou remover do grupo de sudoers (gpasswd -d usuário sudo);
- Bloquear acesso terminal (usermod -s /bin/false usuário);
- Para manter um trabalho com um bom acabamento, foi padronizado os papeis de paredes das máquinas dos clientes, e em seguida bloqueado (chmod 555 -R ~/.config/dconf).
Referências:
CORRIGIR "ERRO DE SISTEMA 85" - NÃO CARREGA CORRETAMENTE PERFIL DO USUÁRIO DO DOMÍNIO
Ao logar com meu usuário do AD, não consegui as permissões liberada para mim por exemplo: todos os usuários do meu setor estão com permissões para acessar o youtube. Contudo, no perfil não foi possível.
Para resolução deste problema foi executado os seguintes procedimento:
1º - Corrigir o "o erro de sistema 85"
Esse comportamento é causado por uma configuração de 1 na seguinte valor do registro:
HKLM\System\CurrentControlSet\Control\SessionManager\ProtectionMode
Se a configuração for 1, o problema ocorre. Se você alterar a configuração para 0 e reinicie o servidor, o problema desaparece.
2º - Forçar a atualização do perfil do usuário:
Abra o CMD e digite:
gpupdate /force
Assinar:
Postagens (Atom)









