Aprenda Linux

  • Página Inicial
  • Contato!
  • Tudo sobre Linux Parte 1!
  • Tudo sobre Linux Parte 2!
  • Tudo sobre Linux Parte 3!
  • Tudo sobre Linux Parte 4!
  • Tudo sobre Linux Parte 5!
  • Tudo sobre Linux Parte 6!
  • Tudo sobre Linux Parte 5

    Redirecionamento e Pipes no Linux - stdin, stdout, stderr

    No Linux e Unix em geral, tudo é considerado arquivo, inclusive diretórios, discos, etc., e por isso tudo pode ser mapeado para o sistema de arquivos.

    Os dispositivos que são mapeados como arquivos eles são chamados de arquivos de dispositivos. Um exemplo clássico é o /dev/sda. Um arquivo de dispositivo é um objeto do sistema que oferece uma interface para o dispositivo em si.

    O kernel do Linux associa os drivers de dispositivos aos arquivos de dispositivos. Assim podemos acessar os dispositivos como se fossem arquivos.

    Os arquivos no Linux possuem uma espécie de abstração para identificação. Essa abstração é chamada de descritor de arquivos. É uma abstração de uma identificação para acessar um arquivo. Para isso temos três descritores, entrada padrão (stdin), saída padrão (stdout) e erro padrão (stderr).

    A entrada padrão é um stream (fluxo) para entrada de texto. Por padrão, a entrada padrão é vinculada ao teclado. Também é conhecida como descritor de arquivos 0.

    A saída padrão é um stream para saída normal dos programas. Por padrão, a saída padrão é vinculada ao terminal ou janela de terminal (no caso de sistemas com interfaces gráficas). Também é conhecida como descritor de arquivos 1.

    O erro padrão é um stream para saída de texto, usado para exibir mensagens de erro. Por padrão também é vinculada ao terminal ou janela do mesmo. Também é conhecida como descritor de arquivos 2.

    Com esses dados em mente, podemos utilizar os recursos chamados de pipes. Pros programas, ler os dados de um arquivo armazenado no sistema ou do teclado, dá no mesmo, não há diferença alguma pros programas, assim como escrever no terminal ou dentro de outro arquivo. Ele também pode ler ou enviar dados de ou para outros programas.

    O símbolo de pipe é a barra em pé (|). O pipe permite juntar dois comandos, como por exemplo ls -l | less, nesse caso, a saída do ls, ao invés de ir diretamente pro terminal, ele irá para o comando less, que tratará os dados de outra forma antes de enviá-los ao terminal.

    Os pipes podem ser redirecionados para outros comandos sucessivamente. Se forem usados mais de dois comandos com redirecionamentos, damos o nome de pipeline a operação resultante. Por exemplo, redirecionando para a saída de outros comandos:

    
    ls /etc | sort -r | less # Ele listará o diretório /etc, ordenará de forma reversa e mostrará ao poucos com o less
    
    

    Para redirecionar para um arquivo, usamos o >, dessa forma:

    
    ls -i > inodes.txt
    
    

    Redirecionamento e Pipes no Linux - Comando tee

    Na prática, as saídas que são redirecionadas para um arquivo, não são exibidas na saída padrão (terminal), exceto os erros padrão.

    O operador > cria arquivos, se já existir ele será sobrescrito. Para não perder o conteúdo do arquivo e adicionar novas linhas, use o operador >>.

    Digite esses comandos:

    
    ls > texto.txt
    
    cat texto.txt
    
    echo "Lista de arquivos do diretório home"
    
    echo "Lista de arquivos do diretório home" > texto.txt # Sobrescrevendo
    
    cat texto.txt
    
    ls > texto.txt # Sobrescrevendo de novo
    
    echo "Lista de arquivos do diretório home" >> texto.txt # Adicionando
    
    

    Para redirecionamento de entrada, podemos fazer assim:

    
    cat < /etc/group > /tmp/grupos
    
    cat /tmp/grupos
    
    

    No caso acima, o redirecionamento < lê a partir de um arquivo (no caso, o /etc/group

    Vamos supor esse comando:

    
    ls -zz # A opção -zz não existe, gerará um erro.
    
    ls -zz > erro.txt
    
    

    Das duas formas, a saída aparecerá na tela. O arquivo erro.txt é gerado, mas ele não escreve no arquivo, porque o operador > redireciona a saída padrão, e não o erro padrão.

    Para redirecionar a saída do erro padrão ao arquivo, colocamos o número 2 na frente do operador, dessa forma:

    
    ls -zz 2> erro.txt # O -zz não existe, lembre-se.
    
    

    Pra mostrar a saída tanto no terminal quanto no arquivo ao mesmo tempo, usamos o comando tee, usando a sintaxe tee opções arquivos, que são essas:

    Veja alguns exemplos de uso:

    
    ls -l | tee saida.txt # Sobrescreverá caso já exista o arquivo saida.txt
    
    ls -i | tee saida.txt | less # Idem acima, mas usará o less para ver aos poucos
    
    

    Gerenciamento de Usuários e Grupos - Arquivo /etc/passwd

    As informações de usuários ficam armazenados em vários arquivos de configuração do seu sistema. Os principais arquivos são /etc/passwd, /etc/group, /etc/shadow e /etc/gshadow.

    O arquivo /etc/passwd contém a lista dos usuários do sistema (não apenas usuários humanos, mas também contas administrativas). Antigamente ele era usado também para arquivo de senhas de usuários, mas hoje em dia elas ficam em outro arquivo, o /etc/shadow. O arquivo passwd pode ser lido por qualquer um no sistema e pode ser editado com editores de texto (porém, não é recomendado, e sim que se altere usando comandos como o usermod, localizado em /usr/sbin/usermod).

    Digite o comando cat /etc/passwd para visualizarmos o arquivo no terminal.

    Cada linha é uma conta, cujas informações são divididas por dois pontos (:). Veja por exemplo essa linha:

    
    eu:x:1000:1000:eu,,,:/home/eu:/bin/bash
    
    

    Os campos são esses:

    1. É o nome do usuário, usado pra fazer login.
    2. É a senha (que não é x, mas que está no arquivo /etc/shadow).
    3. É o UID (ID do usuário, variando de 0 a 65535).
    4. É o GID (ID do grupo, primário, também variando de 0 a 65535).
    5. São os comentários (informações extras, como o nome completo ou o telefone). As vírgulas indicam que caberiam mais informações.
    6. É o diretório home (padrão) do usuário.
    7. É o shell padrão do usuário.

    Os números de 1 a 999 para UID são reservados para contas de sistema e administrativas. As contas de usuário começam a contar a partir do 1000 (geralmente atribuída ao usuário principal do Linux). O usuário root recebe o UID 0.

    Gerenciamento de Usuários e Grupos - Arquivos group e gshadow

    O arquivo /etc/group define os grupos aos quais os usuários do Linux pertencem. Os grupos são usados para aplicar permissões de acesso a recursos do sistema. Também permitem facilitar o gerenciamento e monitoramento de usuários.

    Digite no terminal cat /etc/group para visualizarmos o arquivo.

    Cada linha é uma conta, cujas informações são divididas por dois pontos (:). Veja por exemplo essa linha:

    
    eu:x:1000:
    
    

    Os campos são esses:

    1. É o nome do grupo.
    2. É a senha, geralmente não usada.
    3. É o GID (ID do grupo, variando de 0 a 65535).
    4. Lista de membros, separados por vírgulas, o usuário de mesmo nome do grupo não aparece.

    O arquivo /etc/gshadow é onde estão as senhas criptografadas dos grupos. Podemos ver o arquivo digitando sudo cat /etc/gshadow.

    Cada linha é uma conta, cujas informações são divididas por dois pontos (:). Veja por exemplo essa linha:

    
    eu:!::
    
    

    Os campos são esses:

    1. É o nome do grupo.
    2. É a senha criptografada, se houver. Se houver um !, ela indica que os usuários que não são do grupo não podem acessá-la, mas que também não tem senha no mesmo.
    3. São os administradores do grupo, o usuário de mesmo nome do grupo não aparece. O root também pode fazer isso mesmo não estando no mesmo.
    4. Lista de membros, separados por vírgulas, o usuário de mesmo nome do grupo não aparece.

    Alguns comandos que podemos usar no terminal:

    Digite esses comandos:

    
    id -g eu
    
    id -G eu
    
    id -nG eu
    
    

    Gerenciamento de Usuários e Grupos - Arquivo de Senhas shadow

    O arquivo /etc/shadow contém as senhas criptografadas dos usuários, além de outras informações sobre as contas de usuário. Ele somente é legível pelo usuário root ou outro que tenha permissão para ler o mesmo.

    Digite o comando sudo cat /etc/shadow no terminal.

    Cada linha é uma conta, cujas informações são divididas por dois pontos (:). Veja por exemplo essa linha:

    
    syslog:*:17937:0:99999:7:::
    
    

    Os campos são esses:

    1. É o nome da conta.
    2. É a senha. Se possuir um ! é porque ele não possui senha. Se possuir * é porque a conta está desativada e não poderá fazer login no sistema. Se possuir um ![senha] é porque a conta tá travada. E se possuir um !! é porque a senha nunca foi configurada.
    3. É a última modificação de senha, contada em dias desde 01/01/1970 até a data da modificação da mesma.
    4. É o mínimo de dias antes que o usuário tem que esperar pra modificar sua senha.
    5. É o máximo de dias que o usuário pode manter a mesma senha.
    6. É o campo de aviso de dias antes da expiração da senha.
    7. É o campo de dias após a validade do qual a conta é desabilitada.
    8. É a expiração da conta, quando a conta será desativada, contada em dias desde 01/01/1970.
    9. É um campo reservado, sem uso especificado.

    PS: A data 01/01/1970 é conhecida como a data Unix, para chegar ao dia exato especificado na conta, faça uma soma do tipo abaixo, na qual colocamos a quantidade de dias reference ao usuário/grupo:

    
    date -d "1970/01/01 + 15748 days"
    
    

    Gerenciamento de Usuários e Grupos - Criar Usuários - Comandos useradd e adduser

    Usamos o comando useradd para criar uma conta de usuário do sistema. As opções dele são useradd opções nomedaconta, que são essas:

    Digite esses comandos:

    
    sudo useradd -m -c "Fulano da Silva" -s /bin/sh fulano # Cria o usuário fulano
    
    cat /etc/passwd # Verifica se o usuário existe
    
    

    Temos também o adduser que é um script escrito em Perl que usa o programa useradd para realizar tarefas de criação de usuários, na distros Debian e derivados. Ele pode ser usado para adicionar um usuário a um grupo já existentes.

    Digite esse comando que adicionará o usuário beltrano e pedirá dados como senha e etc.:

    
    sudo adduser beltrano
    
    

    O script adduser fica localizado em /usr/sbin/adduser.

    Para dar permissões de root para um usuário podemos fazer assim:

    
    sudo usermod -aG sudo beltrano
    
    

    E para deletar um usuário, assim como seu grupo, fazemos assim:

    
    sudo userdel -f beltrano
    
    sudo groupdel beltrano
    
    

    Gerenciamento de Usuários e Grupos - Alterar Senhas - Comando passwd

    O comando passwd é usado para configurar a senha de um usuário, além de algumas opções de conta. A sintaxe é passwd opções username, que são essas:

    Digite esses comandos:

    
    sudo passwd -S fulano
    
    sudo passwd fulano
    
    

    O user fulano, criado anteriormente, não tem senha, então podemos criar uma pra ele usando esses comandos:

    
    sudo passwd fulano
    
    sudo passwd -l fulano # Trava a conta
    
    sudo passwd -u fulano # Destrava a conta
    
    

    Gerenciamento de Usuários e Grupos - Administrar Grupos - Comando gpasswd

    O comando gpasswd é usado para administrar grupos do Linux. Ele grava as informações nos arquivos /etc/group e /etc/shadow. A sintaxe do comando é gpasswd opções grupo.

    Veja alguns exemplos de comandos:

    
    gpasswd nomedogrupo # Cria ou altera a senha do grupo
    
    gpasswd -a nomedousuario nomedogrupo # Adiciona o usuário ao grupo
    
    gpasswd -d nomedousuario nomedogrupo # Remove o usuário do grupo especificado
    
    gpasswd -A nomedousuario nomedogrupo # Torna o usuário administrador do grupo
    
    

    Digite esses comandos para adicionar o usuários:

    
    sudo gpasswd -a fulano bluetooth
    
    sudo gpasswd -a fulano scanner
    
    groups fulano
    
    

    Para remover o usuário:

    
    sudo gpasswd -d fulano bluetooth
    
    

    Para tornar administrador do grupo:

    
    sudo gpasswd -A fulano scanner
    
    

    Gerenciamento de Usuários e Grupos - Alterar Usuários - Comando usermod

    O comando usermod modifica uma conta de usuário existente. A sintaxe dele é usermod opções usuario.

    Essas são as opções:

    Digite esses comandos:

    
    cat /etc/passwd
    
    sudo usermod -c "Nome do Usuário" fulano
    
    sudo usermod -u 2000 fulano
    
    groups fulano
    
    sudo usermod -G cdrom,bluetooth,scanner,eu fulano
    
    groups fulano
    
    sudo usermod -l novonome fulano
    
    cat /etc/passwd
    
    mv /home/fulano /home/novonome
    
    

    Linux - Gerenciamento de Usuários e Grupos - Alterar e Excluir Usuários - Comandos chfn e userdel

    O comando chfn altera informações dos usuários. A sintaxe é chfn opcoes usuario.

    Essas são as opções:

    Digite esses comandos:

    
    cat /etc/passwd
    
    sudo chfn -r 15 fulano
    
    sudo chfn -w 996848865 fulano
    
    sudo chfn -h 964423548 fulano
    
    

    Para deletar usuários, basta usar o comando userdel, dessa forma, na sintaxe userdel -r nomedousuario (a opção -r, opcional, exclui o diretório home do usuário):

    
    sudo userdel -r fulano