Dicas e truques de configuração do SUDO para Linux e UNIX

Nos sistemas operacionais baseados no Linux ou no UNIX (MacOS, FreeBSD etc) há tarefas administrativas, que só podem ser executadas com privilégios de superusuário (root).
O comando sudo nasceu da necessidade do sysadmin delegar algumas destas tarefas a outros usuários do sistema — sem precisar expôr a própria senha.
captura de tela comando sudo
Usuários pertencentes ao grupo “sudo”, podem assumir privilégios superiores com o uso da própria senha — sem ter conhecimento da senha do root, portanto.
Quem usa o computador sozinho, pode fazer tudo como usuário comum. Eventualmente, pode “se investir de poderes especiais”, com o uso do sudo — e voltar à segurança de um usuário comum, logo em seguida.
Uma, dentre muitas tarefas comuns a todo usuário, por exemplo, é atualizar o sistema. O comando permite fazer isso, sem exigir que se autentique como root.
Na configuração padrão do sudo, usuários com acesso ao comando podem realizar as seguintes tarefas (entre outras):

  • Acessar dispositivos restritos do hardware.
  • Formatar e alterar sistemas de arquivos.
  • Instalar novos aplicativos e configurar áreas sensíveis do sistema.

Como configurar o comportamento do sudo no meu sistema

O arquivo de configuração do sudo é o /etc/sudoers. Contudo, as boas práticas de segurança, recomendam sempre usar o programa visudo para alterar este arquivo:


sudo visudo


Dentro do arquivo de configuração, há uma sessão com várias linhas. Cada uma delas começa com uma entrada Defaults.
Você pode alterar o comportamento do sudo:

  • editando uma destas linhas — removendo ou editando algum parâmetro ou, ainda, acrescentando um novo.
    Para acrescentar, vá até o final da linha e acrescente uma vírgula seguida do novo parâmetro desejado;
  • adicionando uma nova linha Defaults, seguida da tabulação e dos parâmetros de configuração que você deseja acrescentar.

Por ser muito usado no Linux, já escrevi alguns artigos sobre o sudo (veja a lista no final deste texto). Não esqueça também de dar uma olhada nas tags visudo e sudo, para obter mais informações sobre o uso da ferramenta.
sudo sudoers environment variables
Algumas pessoas, por questão de organização, preferem ter uma linha Defaults exclusiva para cada parâmetro de configuração.
Acompanhe as dicas, para entender melhor.

Edite corretamente o /etc/sudoers

Trata-se de uma dica de segurança.
O UNIX e o Linux são sistemas operacionais projetados para atender uma grande quantidade de demandas e usuários simultâneos.
O visudo bloqueia o acesso de outros usuários ao /etc/sudoers, enquanto você o estiver editando.
Portanto, use sempre o visudo para ajustar o sudo no seu sistema. Não edite o /etc/sudoers diretamente.
Além disso, o visudo faz uma análise do sudoers, logo depois da edição.
Se houver erros, ele avisa e permite que você volte para alterar e corrigir o arquivo.

Organize os Defaults

Como já disse, você pode adicionar vários parâmetros e valores por linha ou abrigar um único parâmetro por linha.
A escolha é sua.
A configuração, abaixo


Defaults        env_reset,timestamp_timeout=5,pwfeedback

tem o mesmo efeito desta


Defaults        env_reset
Defaults        timestamp_timeout=5
Defaults        pwfeedback

Eu gosto do segundo método de organizar os ajustes, pois ele permite adicionar um comentário (com ‘#’) ao final de cada linha.
A forma mais comum de usar a palavra-chave é assim: Defaults. Mas em sistemas mais complexos, com um grande número de usuários, em que o sysadmin deseja delegar especificamente e com abrangência, há outras formas de uso. Veja:

  • Defaults parameter, parameter_list — # os parâmetros desta configuração afetam todos os usuários autenticados no host.
  • Defaults@Host_List parameter, parameter_list # afeta todos os usuários logados no especificado em @Host_List.
  • Defaults:User_List parameter, parameter_list #afeta todos os usuários especificados na lista :User_List.
  • Defaults!Cmnd_List parameter, parameter_list #afeta os comandos especificados na lista !Cmnd_List.
  • Defaults>Runas_List parameter, parameter_list #afeta comandos listados, desde que executados por um usuário específico.

Como criar um arquivo de log do sudo

Como comportamento padrão, o sudo envia o log ou relatório sobre o que ocorreu durante o seu uso para o syslog(3).
Opcionalmente, você pode criar um arquivo para receber este relatório.
Adicione a seguinte linha:


Defaults        logfile="/var/log/sudo.log"

Se quiser que o seu arquivo de log contenha informações sobre o host e o ano relacionados às ações relatadas, use assim:


Defaults        log_host,log_year,logfile="/var/log/sudo.log"

Para poder ver o conteúdo do seu novo arquivo de log, use o sudo e o cat:


sudo cat /var/log/sudo.log

Jun 12 15:32:09 2017 : justincase : HOST=s5ultra : TTY=pts/0 ;
    PWD=/home/justincase ; USER=root ; COMMAND=/bin/ls
Jun 12 15:32:43 2017 : justincase : HOST=s5ultra : TTY=pts/0 ;
    PWD=/home/justincase ; USER=root ; COMMAND=/usr/sbin/visudo
Jun 12 15:34:46 2017 : justincase : HOST=s5ultra : TTY=pts/0 ;
    PWD=/home/justincase ; USER=root ; COMMAND=/bin/cat /var/log/sudo.log

Leia mais dicas e truques para usar com o sudo:

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Referências

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux_OpenStack_Platform/2/html/Getting_Started_Guide/ch02s03.html.
https://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/.

Use o gddccontrol para ajustar e configurar o seu monitor.

O gddccontrol é um utilitário gráfico (GUI) e de linha de comando (CLI) para controlar os parâmetros do monitor de vídeo do seu PC ou notebook.
O software pode não funcionar no monitor interno do seu notebook (faça o teste, aí).
Ele é projetado para atuar no monitor externo, através das conexões DVI, VGA e HDMI.
No Debian, ele pode ser instalado com o apt:


sudo apt install gddccontrol

Para contextualizar, este artigo foi escrito em um laptop Samsung Series 5 Ultra, com uma placa gráfica Intel, usando o driver i915.
O sistema operacional é o Debian 9 Stretch, com um monitor externo Samsung SyncMaster P2250, conectado via HDMI.

Acho os controles, de toque, do meu monitor externo ruins de usar e, para quem se detém por algum tempo no ajuste da imagem, cansa ficar com o braço esticado por muito tempo.
Poder realizar os ajustes via teclado ou touchpad é mais confortável para mim.

No meu caso, não houve suporte à tela interna (do notebook).
Apesar do aviso de falta de suporte também ao meu modelo de monitor externo (imagem abaixo), o utilitário oferece pelo menos as configurações básicas.
gddccontrol
Se você tiver sorte, tudo vai funcionar “right out of the box“, ou seja, logo após a instalação.
Contudo, pode ser necessário realizar alguns procedimentos para poder acessar os controles do seu monitor — como carregar o módulo de controle e dar permissão de escrita e leitura ao dispositivo, para usuários normais do sistema poderem usar plenamente o utilitário.
Se for necessário, carregue o módulo i2c-dev:


sudo modprobe i2c-dev

Algumas placas gráficas podem exigir que se carregue também o framebuffer adequado. Este não é o caso da maioria das GPUs Intel.
Se a sua for uma ATI Radeon, o comando é


sudo modprobe radeonfb

Para as GPUs nVidia, o nome do módulo é nvidiafb ou rivafb (se você tiver uma das mais antigas).
Para dar acesso a todos os usuários aos ajustes do utilitário, use o comando chmod:


chmod a+rw /dev/i2c-*

Ajustes do monitor na linha de comando

O aplicativo pode ser invocado da linha de comando (CLI), o que permite colocá-lo dentro de um script, se quiser.
Neste caso, ele deve ser chamado ddccontrol.
Veja como obter informações sobre o(s) dispositivo(s) conectados ao seu sistema:


ddccontrol -p

A saída pode ser muito extensa e cheia de informações que não te interessam, no momento. Convém filtrar, usando o comando grep.
Portanto, para ver apenas o valor do brilho, use-o assim:


ddccontrol -p | grep -A1 -i id=brightness

Isto reduz o excesso de dados exibidos. A parte que importa aqui é a seguinte:

> id=brightness, name=Brightness, address=0x10, delay=-1ms, type=0
    supported, value=28, maximum=100

Para alterar o valor do brilho (de 28 para 38), na CLI, vai ser necessário usar o parâmetro address, veja:


ddccontrol -p -r 0x10 -w 38


ddccontrol version 0.4.2

...

Detected monitors :
 - Device: dev:/dev/i2c-5
   DDC/CI supported: Yes
   Monitor Name: VESA standard monitor
   Input type: Digital
  (Automatically selected)
Reading EDID and initializing DDC/CI at bus dev:/dev/i2c-5...

...

Writing 0x10, 0x26(38)...
Control 0x10: +/38/100 C [Brightness]

Este tipo de controle também pode ser feito com o comando xrandr. O gddccontrol é uma alternativa a este método.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Exemplos de loops no Bash

Mesmo não querendo se dedicar a aprender e entender melhor os meandros da linguagem de programação de scripts Bash, pode ser útil conhecer alguns de seus conceitos.
Saber criar loops é um destes conhecimentos básicos que vale a pena adquirir.
Um pequeno script pode ajudar a poupar uma enormidade de tempo, no dia a dia de qualquer usuário, de qualquer sistema operacional.
Se achar melhor, adicione esta página aos seus favoritos (Ctrl + D), para ter uma referência rápida no futuro. 😉

Os diferentes tipos de loops do Bash

Os loops (ou laços) são expressões presentes em todas (ou quase todas) as linguagens de programação. Além disso, podem se dividir em tipos diferentes.
No Bash, você pode usar for, while e until.
Veja em que casos cada um é mais indicado:

  • for — se você tem experiência com outras linguagens de programação, no Bash, o for é um pouco diferente da maioria.
    Basicamente é usado para te permitir iterar entre uma série de palavras dentro de uma string.
  • while — executa um pedaço de código, caso a expressão de controle seja verdadeira. Ele só irá parar quando ela for falsa — ou quando encontrar um break explícito no meio do código em execução.
  • until — muito semelhante ao while, exceto pelo fato de que o código é executado enquanto a expressão de controle é falsa.

Segue alguns exemplos simples, que você pode usar para compor ou construir um código mais sofisticado, para atender melhor às suas necessidades.

Exemplos de uso do for

Você pode experimentar este código diretamente na linha de comando do sistema, como no exemplo abaixo


for i in $( ls ); do
> echo item: $i
> done

… ou pode abrir um editor e escrever o código dentro dele e gravar com algum nome. O meu, vou gravar como exemplo-for.sh:


#!/bin/bash
for i in $( ls ); do
   echo item: $i
done

Explicando o código…

  • A primeira linha informa ao sistema que o arquivo deve ser executado com o programa /bin/bash.
  • Na segunda linha declaramos a variável i como repositório dos diferentes valores contidos em $( ls ).
  • A terceira linha expõe o valor atual de i.
  • Por fim, done informa que chegamos ao final do laço for e, se não houver mais nada a ser feito, o programa para por aqui — ou segue sendo executado.

Depois de gravado, execute-o com o bash


bash exemplo-for.sh

Experimente também este script, para colorir texto:


#!/bin/bash
for fg in {30..39}
do
    echo -e "\e["$fg"m apenas um texto colorido pelos caracteres de escape do BASH."
done

vim syntax color

Como criar um loop while no Bash

Veja um exemplo simples de laço while (enquanto), no Bash:


#!/bin/bash
contador=0
while [ $contador -lt 10 ];
do
    echo O valor atual do contador é: $contador
    let contador=contador+1
done

O argumento -lt pode ser abreviatura de less than ou lower than, que significame “menos que” ou “menor que”, em uma tradução livre.
Da mesma forma, usa-se -gt, como abreviatura de greater than, para “maior que”.

Exemplo de uso do until no Bash

Se eu fosse traduzir livremente a linha until [ $contador -lt 10 ]; no exemplo abaixo, eu diria “até que (until) a variável contador seja menor que 10…”
Experimente o código e veja o resultado:


#!/bin/bash
contador=30
until [ $contador -lt 10 ];
do
    echo O valor do meu contador é igual a $contador
    let contador-=1
done

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Controle a temperatura da tela com o sct

O sct é um daqueles utilitários bem simples, leves e fáceis de usar.
Aqui, não tem segredo. Se você o executar sem parâmetro algum, ele vai ajustar a temperatura da sua tela principal para 6500 graus.
É simples assim:


sct

O aplicativo pode trabalhar dentro do limite de temperaturas entre 1000 e 10000.
O valor desejado pode ser passado diretamente para ele:


sct 5000

Quem precisa trabalhar à noite, pode usar valores de temperatura mais baixos (ou mais quentes), para dar conforto visual e não atrapalhar o sono, mais tarde.
Durante as primeiras horas da manhã, valores mais altos (ou temperaturas mais frias) podem ser mais indicados.
No Debian e no Ubuntu, o aplicativo pode ser instalado com o apt:


sudo apt install sct

Você pode experimentar as várias nuances do sct com um pequeno script Bash.
Abra o seu editor de textos favorito, digite o seguinte código e salve-o:


for temp in {1000..10000}
do
        sct $temp
done

Eu gravei o meu script com o nome de sctchange.sh. Para executá-lo, use o bash:


bash sctchange.sh

Aguarde, enquanto ele lentamente vai “esfriando” a tela, a partir da temperatura 1000.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Como usar Ubuntu com o Arduino

Preparar o seu computador com Ubuntu para trabalhar (ou brincar) com o Arduíno é muito fácil.
A versão 16.04 Xenial Xerus traz, pelo menos, 5 pacotes oficiais para instalar no seu sistema e começar a “fuçar” no seu kit novo.
ubuntu arduino packages
Use o apt search para encontrar os pacotes:


apt search arduino

Sorting... Pronto
Full Text Search... Pronto
arduino/xenial,xenial 2:1.0.5+dfsg2-4 all
  AVR development board IDE and built-in libraries

arduino-core/xenial,xenial 2:1.0.5+dfsg2-4 all
  Code, examples, and libraries for the Arduino platform

arduino-mighty-1284p/xenial,xenial 1-2 all
  Platform files for Arduino to run on ATmega1284P

arduino-mk/xenial,xenial 1.5-2 all
  Program your Arduino from the command line

pd-pduino/xenial,xenial 0.5.1-1 all
  interfacing with the Arduino from within Pure Data (Pd)

Você pode obter informações individuais sobre cada um destes pacotes, com o apt show. Segue um exemplo:


apt show arduino

Vamos conhecer um pouco mais de cada um destes pacotes, nos próximos tópicos.
foto do arduino uno r3

O pacote de softwares arduino no Ubuntu

O primeiro pacote da lista é, provavelmente, o principal.
Ele contém a IDE AVR (2:1.0.5+dfsg2-4) de desenvolvimento da placa e algumas bibliotecas.
Ele requer também a instalação dos pacotes arduino-core (obrigatoriamente) e do arduino-mk (como sugestão).
Com relação à IDE, se você fizer questão e não se importa de compilar um pouco de código, pode obter uma versão mais atual no site http://www.arduino.cc.
Se você está iniciando, isto é tudo o que você vai precisar, por enquanto.

O pacote arduino-core

Como eu disse, este pacote é requerido e instalado automaticamente com o pacote principal do Arduino no Ubuntu.
Ele contém códigos-fonte, códigos exemplo e bibliotecas essenciais ou complementares para você desenvolver para a plataforma.

O pacote arduino-mighty-1284p

Contém os arquivos necessários para rodar a plataforma do processador ATmega1284P.
Se você já olhou a sua placa cuidadosamente e se ela não contém este processador, é muito provável que não precise deste pacote.
atmel arduino atmega 1284p

O pacote arduino-mk

É sugerido, no momento da instalação dos outros.
Com ele é possível programar o seu Arduino direto da linha de comando do Linux.
Entre outros softwares, o pacote contém o utilitário ard-reset-arduino que… faz o que o nome diz: reseta o arduino.
Pode ser necessário, em alguns momentos.

Pure Data com Arduino

O último pacote da lista traz software para comunicação e interação com a placa e troca de dados puros ou pure data.
Este pacote é instalado, como padrão, no Ubuntu Studio e é voltado para as pessoas que usam o hardware para reproduzir sons, áudio etc.
A página oficial do projeto é https://puredata.info/downloads/pduino.
Como resumo, iniciantes apenas precisam instalar o primeiro pacote arduino e, eventualmente, o arduino-mk. São pequenos, leves e ocupam um espaço ínfimo no seu sistema.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.