Baixe o app para aproveitar ainda mais
Prévia do material em texto
Fundamentos de Linux Capítulo 1. Um Pouco de História, FHS e Instalação do Sistema Prof. Douglas Rafael Silva Fundamentos de Linux Aula 1.1. Um pouco de história e distribuições Prof. Douglas Rafael Silva Nesta aula Apresentação dos capítulos do módulo. Breve história do GNU/Linux. Distribuições. Fundamentos de Linux 1. Um pouco de história, FHS e instalação do sistema. 2. Comandos básicos. 3. Redirecionamentos e Filtros. 4. Shell Script. Fundamentos de Linux 5. Gerenciamento de processos. 6. Comandos básicos de rede. 7. Gerenciamentos de usuários e grupos. 8. Permissões de arquivos e diretórios. Um pouco de história e distribuições • Sistemas Operacionais proprietários (DOS, Unix e Mac OS). • Unix nasceu nos anos 60 (Empresa AT&T) - Principais programadores Ken Thompson e Dennis Ritchie (criador da linguagem C). • Até os anos 80 o Unix compartilhava código fonte com universidades. • Em 1987 Andrew S Tanenbaum criou o Minix baseado no Unix com o objetivo de ensinar. Um pouco de história e distribuições • Em 1991 inspirado no trabalho de Tanenbaum, Linus Torvalds desenvolveu seu próprio sistema operacional baseado no Minix\Unix. • Linus compartilhou o código fonte para que outras pessoas pudessem contribuir. • Richard Stallman x Linus Torvalds GNU/Linux ou Linux? • Linux distribuído com a licença GPL (GNU General Public License) Principal autor Richard Stallman em 1989. Um pouco de história e distribuições • Distribuições contém o Kernel mais os aplicativos mantidos por uma empresa ou comunidade. • Distribuições com foco em atender usuário final, servidores web, executar containers, segurança, etc. • Apesar das diferenças de distribuições para diversos objetivos. Possuem características comuns, mantendo um padrão entre as distribuições. • Linux Standard Base (LSB) – Projeto com o objetivo de manter padrões entre as distribuições. Conclusão Linux é um kernel de software livre, desenvolvido por Linus Torvalds baseado no sistema Minix criado por Tanenbaum. Linus tinha como objetivo criar um sistema operacional que as pessoas pudessem ver e contribuir com o código e usar para diversos fins. Devido a liberdade de criar e modificar o sistema, hoje temos diversos sabores de Linux que, apesar das diferenças de distribuições para objetivos variados, apresentam características comuns, mantendo um padrão entre as distribuições. Próxima aula Padrão de hierarquia do sistema de arquivos (FHS). Fundamentos de Linux Aula 1.2. Padrão de hierarquia do sistema de arquivos (FHS) Prof. Douglas Rafael Silva Nesta aula Padrão de hierarquia do sistema de arquivos (FHS). Padrão de hierarquia do sistema de arquivos (FHS) / => Raiz de toda a hierarquia do sistema de arquivos /boot => Arquivos utilizados para boot do sistema /bin => Programas essenciais para todos os usuários /sbin => Programas essenciais de root /lib => Bibliotecas para programas do /bin/ e /sbin/ Padrão de hierarquia do sistema de arquivos (FHS) /usr => Programas não essenciais, bibliotecas e documentações /usr/bin => Programas não essenciais para todos os usuários /usr/sbin => Programas não essenciais de root /usr/lib => Bibliotecas para programas do /usr/bin e /usr/sbin /dev => Dispositivos (Exemplo: arquivos do tipo bloco – HD’s). Padrão de hierarquia do sistema de arquivos (FHS) /var => Arquivos variáveis como filas de e-mail e logs /home => Diretório padrão dos usuários /root => Diretório home do root /etc => Arquivos de configuração Padrão de hierarquia do sistema de arquivos (FHS) /mnt e /media => Pontos de montagem temporário /opt => Programas de terceiros /tmp => Arquivos temporários /proc => Informações de processos /sys => Informações do sistema Conclusão O Linux organiza os arquivos no sistema de forma hierárquica a partir do “ / ”. Cada diretório dentro do barra tem propósitos diferentes. Exemplo: arquivos de configuração são armazenados dentro de /etc. Próxima aula Instalação do VirtualBox e Putty. Fundamentos de Linux Aula 1.3. Instalação VirtualBox e Putty Prof. Douglas Rafael Silva Nesta aula Vamos instalar o VirtualBox e o Putty. Instalando VirtualBox e o Putty Download Virtual Box: https://download.virtualbox.org/virtualbox/6.1.12/VirtualB ox-6.1.12-139181-Win.exe Download Putty: https://the.earth.li/~sgtatham/putty/0.74/w64/putty.exe https://download.virtualbox.org/virtualbox/6.1.12/VirtualBox-6.1.12-139181-Win.exe https://the.earth.li/~sgtatham/putty/0.74/w64/putty.exe Conclusão A partir da instalação do VirtualBox, podemos virtualizar um servidor Linux. E através do Putty vamos acessar o servidor via SSH. Próxima aula Instalação da distribuição CentOS 7. Fundamentos de Linux Aula 1.4. Instalação do CentOS 7 Prof. Douglas Rafael Silva Nesta aula Será instalado a distribuição CentOS 7. Instalando a distribuição CentOS 7 Download CentOS: http://mirror-centos-jpa.hostdime.com.br/centos/7.8.2003/isos/x86_64/CentOS-7- x86_64-Minimal-2003.iso http://mirror-centos-jpa.hostdime.com.br/centos/7.8.2003/isos/x86_64/CentOS-7-x86_64-Minimal-2003.iso Conclusão Instalado uma distribuição Linux podemos explorar o sistema de arquivos e praticar comandos essenciais para administração do sistema. Próxima aula Conhecer o comando “rpm” para instalação de programas. Fundamentos de Linux Aula 1.5. Instalação de pacotes .rpm Prof. Douglas Rafael Silva Nesta aula Vamos conhecer o comando “rpm” e como instalar pacotes. Instalação de pacotes .rpm Lista pacotes instalados no sistema: rpm -qa Informações sobre um pacote: rpm -qi "pacote“ Mostra arquivos referente a um pacote instalado: rpm -ql "pacote" Informa o pacote que instalou um arquivo rpm -qf "caminho do arquivo" Instalação de pacotes .rpm Instala pacote rpm (não resolve dependências) rpm -i "pacote.rpm" -v => verbose -r => mostra progresso da instalação Remove pacote: rpm -evh "pacote" Conclusão O comando “rpm” é muito útil para verificarmos programas instalados e informações de pacotes, mas não resolve dependências dos programas. Próxima aula Instalação de programas usando o gerenciador de pacotes “yum”. Fundamentos de Linux Aula 1.6. Gerenciador de pacotes “yum” Prof. Douglas Rafael Silva Nesta aula Instalação de programas usando o gerenciador de pacotes “yum”. Gerenciador de pacotes Yum Diretório de repositórios: /etc/yum.repos.d/ Atualiza todos os pacotes da máquina: yum update Procura pacotes nos repositórios: yum search "pacote" Gerenciador de pacotes Yum Instala pacote: yum install "pacote“ Parâmetro: -y => Instala sem pedir confirmação Remove pacote: yum remove "pacote" Conclusão O gerenciador de pacotes “yum” facilita a instalação de programas, pois já resolve dependências dos pacotes. Próxima aula Conhecer o shell e explorar o sistema de arquivos. Fundamentos de Linux Capítulo 3. Redirecionamentos e Filtros Prof. Douglas Rafael Silva Fundamentos de Linux Aula 3.1. Redirecionamentos >, >>, tee e pipe Prof. Douglas Rafael Silva Nesta aula Redirecionamentos >, >>, tee e pipe. Redirecionamentos >, >>, tee e pipe > => redireciona a saída de um comando substituindo o conteúdo do arquivo >> => redireciona a saída de um comando adicionando o conteúdo ao final do arquivo 2> => redireciona a saída de erro de um comando substituindo o conteúdo do arquivo 2>> => redireciona a saída de erro de um comando adicionando o conteúdo ao final do arquivo 2>&1 => redireciona a saída de erro para a mesma saída padrão | => envia a saída de um comando para entrada de outro Comando “tee” redireciona a saída padrão para um arquivo e imprime na tela: cat arquivo1 arquivo2 | tee arquivo3 Conclusão Através dos redirecionadores >, >>, 2> e 2>> podemos enviar a saída padrãoe\ou saída de erro para um arquivo. O comando tee também pode ser utilizado para redirecionar saída padrão. E o pipe “ | “ envia a saída de um comando para outro. Próxima aula Os comandos “head”, “tail”, “sort” e “du”. Fundamentos de Linux Aula 3.2. Comandos head, tail, sort e du Prof. Douglas Rafael Silva Nesta aula Comandos head, tail, sort e du. Comandos head, tail, sort e du Mostra as 10 primeiras linhas de um arquivo: head /etc/services Parâmetro: n => define a quantidade de linhas para mostrar Mostra as 10 últimas linhas de um arquivo: tail /etc/services Parâmetro: n => define a quantidade de linhas para mostrar f => fica aguardando novas saídas no arquivo Comandos head, tail, sort e du Ordena linhas de um arquivo (padrão ordenar por ordem alfabética): sort /etc/passwd Parâmetro: -u => remove linhas repetidas (igual ao comando uniq) Verifica o uso de espaço em disco de arquivos e diretórios: du -sh /home Comando muito útil para identificar diretórios com maior consume de disco: du -sh /home/* | sort -h Conclusão O comando “head” mostra as primeiras linhas de um arquivo. O comando “tail” mostra as últimas linhas. O “sort” é utilizado para ordenar um arquivo. O “du” verifica uso do disco. Próxima aula Comandos find, locate e xargs. Fundamentos de Linux Aula 3.3. Comandos find, locate e xargs Prof. Douglas Rafael Silva Nesta aula Comandos para busca de arquivos: find e locate. E o comando xargs. Comandos find, locate e xargs Procura arquivos baseados pelo nome: find /etc -name services find /etc -name *.conf Procura arquivos baseados pelo tipo: find /etc -type d (diretório) find /etc -type l (link simbólico) Procura arquivos baseados pelo tamanho: find /etc -size +100k Comandos find, locate e xargs -exec => executa uma ação baseado na saída do find: find /etc -size +100k -exec du -sh {} \; Faz busca por arquivos baseado no nome: locate arquivo.txt (precisa do pacote mlocate) updatedb (antes de realizar a busca, execute o comando updatedb para atualizar a base de dados que o locate consulta) whereis cp (procura baseado no primeiro nome) xargs => executa comandos baseados na saída padrão: find /etc -size +100k | xargs ls -l mkdir ~/backup ; find /etc -size +100k | xargs -i cp {} ~/backup Conclusão O find pode realizar buscas de diversos tipos, como por exemplos: tamanho, nome, tipo do arquivo etc. O comando locate utiliza uma base de dados que contém o nome de todos os arquivos do sistema, permitindo uma busca pelo nome completo ou parte do nome do arquivo. Xargs é utilizado para receber saídas de outros comandos e executar outro comando através da saída. Próxima aula Comandos cut, awk, tr, sed e grep. Fundamentos de Linux Aula 3.4. Comandos cut, awk, tr, sed e grep Prof. Douglas Rafael Silva Nesta aula Comandos cut, awk, tr, sed e grep. Comandos cut, awk, tr, sed e grep Corta partes de um texto: cut -c1,2 /etc/passwd (c = caracter) cut -c1-5 /etc/passwd cut -d: -f1 /etc/passwd (d = delimitador e f = campo (field) ) cut -d: -f1,2 --output-delimiter="|" /etc/passwd awk '{print$1}' /etc/services awk -F: '{print$1 " | " $6}' /etc/passwd ls /etc/*.conf | head -n3 | awk '{print "echo 3 primeiros arquivos encontrados: " $1}' Comandos cut, awk, tr, sed e grep Troca caracteres ou deleta: cat /etc/passwd | tr [:lower:] [:upper:] cat /etc/passwd | tr -d [:space:] Realiza filtros e transformações em arquivos: sed -i s/velho/novo/ arquivo.txt => substitui string “velho” para “novo” sed -n 5p arquivo.txt => imprime a linha 5 de um arquivo sed -n 50,70p arquivo.txt => Imprime um bloco, linha 50 a 70 sed /string/d arquivo.txt => Deleta a linha que contém uma string específica Comandos cut, awk, tr, sed e grep Mostra linhas filtradas por um padrão: grep root /etc/passwd Parâmetros: -i => desconsidera o case sensitive -r => busca de forma recursiva -w => resultado somente com a palavra completa -v => resultado exceto o que encontrar O grep e o sed são comandos que aceitam expressões regulares. Um exemplo do grep para remover linhas em branco (quebra de linha) e comentadas: grep -v -E ‘^#|^$’ /etc/services => grep -E = egrep Conclusão Os comandos cut e awk são utilizados para cortar partes de um texto. O “tr” troca caracteres ou deleta. O “sed” filtra e transforma dados do arquivo. E o “grep” mostra linhas baseados em um padrão. Próxima aula Introdução a shell script. Fundamentos de Linux Capítulo 2. Comandos Básicos Prof. Douglas Rafael Silva Fundamentos de Linux Aula 2.1. Conhecendo o shell e explorando o sistema de arquivos Prof. Douglas Rafael Silva Nesta aula Vamos conhecer o shell; E comandos para navegar entre diretórios e listar arquivos. Conhecendo o shell e explorando o sistema de arquivos O que é o shell? O shell é um interpretador de comandos, ele faz o meio de campo entre o usuário e o sistema, ou seja, é uma interface para o usuário executar programas e interagir com o sistema. Também é um ambiente de programação (shell script), muito utilizado para automatizar tarefas. Em ambientes Desktop, além do shell existe uma interface gráfica para interação. Mas em ambientes corporativos, na maioria dos casos, a única forma de interação com o sistema é através do shell para administração de servidores. Existem alguns tipos de Shell, porém, o mais utilizado atualmente é o “BASH”. Conhecendo o shell e explorando o sistema de arquivos Acessando os diretórios: cd /var -> usando caminho absoluto cd log -> usando caminho relativo cd /var/log -> caminho absoluto • Caminho absoluto sempre vai começar com o “/”. Ou seja, é o caminho completo de um arquivo ou diretório. • Caminho relativo depende do diretório atual. Conhecendo o shell e explorando o sistema de arquivos Informa o diretório atual: pwd . => representa o diretório corrente .. => representa um diretório anterior cd /var/log cd ../lib -> retorna para o /var e acessa /var/lib cd ../../etc -> a partir do /var/lib retorna para o / e acessa /etc. cd - -> volta para o último diretório acessado, nesse caso /var/lib Conhecendo o shell e explorando o sistema de arquivos O diretório /home por padrão armazena os diretórios dos usuários. Exemplo: /home/douglas ~ representa o home do usuário. cd ~/Downloads é igual a cd /home/douglas/Downloads cd sem informar qualquer diretório retorna para o home do usuário. Conhecendo o shell e explorando o sistema de arquivos Listando arquivos: ls Principais parâmetros do ls: -l => lista longa, mostra mais informações sobre os arquivos -t => organiza pela data de modificação -r => organiza de forma reversa -d => lista somente o diretório sem o conteúdo do mesmo -a => lista arquivos ocultos No Linux arquivos ocultos são iniciados com “.” Conclusão O shell é um interpretador de comandos para interagirmos com o sistema; Caminho absoluto é o caminho completo e relativo é a partir do diretório atual; O comando “cd” é utilizado para navegar entre os diretórios do sistema e possui alguns atalhos para facilitar a navegação; O comando “pwd” mostra o diretório atual; E comando “ls” lista o conteúdo dos diretórios. Próxima aula Como pedir ajuda. Utilização de curingas no shell. Fundamentos de Linux Aula 2.2. Pedindo ajuda e curingas do shell Prof. Douglas Rafael Silva Nesta aula Pedindo ajuda através de documentações. Curingas do shell. Pedindo ajuda e curingas do shell Dicas: Sempre que aprender um novo comando explore sua documentação, utilizando os comandos man e help; man ls ls -help Acostume utilizar atalhos do shell e o Tab para acelerar a digitação dos comandos. Pedindo ajuda e curingas do shell Tab auto completa comandos e caminhos dos arquivos/diretórios. Atalhos mais usados: Ctrl+L => limpa a tela (igual ao comandoclear) Ctrl+R => realiza busca no histórico de comandos (history) Ctrl+U => recorta a linha inteira Ctrl+W => recorta a palavra à esquerda Ctrl+K => recorta do cursor até o fim da linha Ctrl+Y => cola o trecho recortado Pedindo ajuda e curingas do shell * => qualquer coisa ? => um caractere qualquer [ ] => qualquer um dos caracteres listados ou um intervalo { } => strings específicas separadas por “,” Pedindo ajuda e curingas do shell Os curingas do shell podem ser utilizados para qualquer comando. Alguns exemplos usando o ls: ls -l /dev/sda* ls -l /dev/sd? ls -l /dev/sda[13] ls -l /dev/sd{a,a5} Conclusão Os comandos man e --help contém documentação dos comandos. Curingas do shell podem ser utilizados em qualquer comando para facilitar a execução de alguma tarefa. Próxima aula Gerenciando arquivos e diretórios. Comandos mkdir, tree, touch, cp, alias, mv e rm. Fundamentos de Linux Aula 2.3. Gerenciando arquivos e diretórios Prof. Douglas Rafael Silva Nesta aula Gerenciando arquivos e diretórios. Comandos mkdir, tree, touch, cp, alias, mv e rm. Gerenciando arquivos e diretórios Cria diretório: mkdir ~/backup Cria árvore de diretórios: mkdir -p ~/backup/2020/{01..12} tree ~/backup => visualiza toda a árvore Cria um arquivo vazio: touch ~/backup/2020/01/app01.conf Gerenciando arquivos e diretórios Copia arquivos: cp ~/backup/2020/01/app02.conf ~/backup/2020/02 Parâmetros: -i => interativo, pede uma confirmação antes de sobrescrever -r => cópia recursiva -p => preserva atributos (data de modificação, permissões etc.) -a => cópia recursiva e preserva permissões do arquivo alias vi='vim‘ => cria alias unalias vi => remove alias Gerenciando arquivos e diretórios Move e/ou renomeia arquivos: mv ~/backup/2020/01/app01.conf ~/backup/2020/02/ mv ~/backup/2020/02/app01.conf ~/backup/2020/03/app03.conf mv ~/backup/2020/03/app03.conf ~/backup/2020/03/app03_novo.conf Parâmetros: -i => interativo, pede uma confirmação antes de sobrescrever um arquivo -f => força sobrescrever o arquivo de destino Gerenciando arquivos e diretórios Remove arquivos e diretórios: rm ~/backup/2020/03/app03_novo.conf Parâmetros: -i => interativo, pede uma confirmação antes de remover -f => força remoção do arquivo -r => remove diretório de forma recursiva rm -rf /* => O que acontece? Remove diretório vazio: rmdir ~/backup/2020/04 Conclusão Apresentamos os principais comandos para gerenciar arquivos e diretórios. Como criar diretórios e arquivos. Como copiar, remover, mover e renomear. Próxima aula Leitores de texto. Fundamentos de Linux Aula 2.4. Leitor de texto Prof. Douglas Rafael Silva Nesta aula Vamos apresentar os leitores de texto mais utilizados no Linux. Leitor de texto Concatena arquivos e imprime na saída padrão: cat arquivo1 arquivo2 Informando somente um arquivo, é impresso na tela: cat /etc/services Alguns parâmetros: -n => enumera todas as linhas -b => enumera as linhas, exceto linhas em branco (igual o comando nl) Leitor de texto Lê um arquivo de texto de forma paginada: less /etc/services Opção de busca: / => realiza buscas dentro do arquivo n => mostra a próxima busca encontrada N => retorna busca anterior encontrada q => para sair Leitor de texto Mostra quantidade de linhas, palavras e bytes de um arquivo: wc /etc/services Parâmetro: -l => quantidade de linhas -w => quantidade de palavras -c => quantidade de bytes Conclusão Conhecemos os principais leitores de texto no Linux. O “cat” imprime na tela todo conteúdo do arquivo. O “less” mostra o conteúdo do arquivo de forma paginada. O “wc” imprime informações do arquivo como quantidade de palavras, linhas e bytes. Próxima aula Como empacotar e comprimir arquivos. Fundamentos de Linux Aula 2.5. Compressão de arquivos Prof. Douglas Rafael Silva Nesta aula Vamos aprender empacotar arquivos no Linux e como compactar esses arquivos. Compressão de arquivos Empacota arquivos: tar cvf arquivo.tar /etc/services /etc/passwd Mostra os arquivos: tar tvf arquivo.tar c => cria t => lista v => verbose f => define o nome do arquivo Compressão de arquivos Compactar arquivos com gzip: gzip arquivo.tar Descompactar arquivo gzip: gunzip arquivo.tar.gz ou gzip -d arquivo.tar.gz Podemos unir o recurso do tar com gzip para compactar e descompactar. Compressão de arquivos Compacta: tar zcvf arquivo.tar.gz /etc/passwd /etc/services Descompacta: tar zxvf arquivo.tar.gz (extrai no diretório corrente) tar zxvf arquivo.tar.gz -C /home ( -C define o diretório de destino) z => invoca o gzip x => extrai Comandos úteis para ler arquivos compactados sem precisar extrair: “zcat” e “zgrep” Conclusão O comando “tar” empacota arquivos e pode invocar o comando “gzip” para compressão dos arquivos. Próxima aula Vamos conhecer o editor de texto mais utilizado no sistema Linux. O “vi”. Fundamentos de Linux Aula 2.6. Editor de texto Vi Prof. Douglas Rafael Silva Nesta aula Vamos aprender utilizar o comando “vi” para editar arquivos. Editor de texto Vi Acessa um arquivo para edição: vi ~/backup/2020/03/app03_novo.conf i => entra no modo de inserção ( “o” modo de inserção na próxima linha ) Esc => entra no modo de navegação Esc : => entra no modo de comandos Alguns comandos: :w => salva o arquivo :q => sai do arquivo sem salvar :wq => sai do arquivo salvando ou :x Editor de texto Vi Mais alguns comandos úteis: :%s/string_velha/nova_string :5,10 s/string_velha/nova_string Opções para o modo de navegação: / => busca (n próxima | N anterior) gg => move o cursor para primeira linha G => move o cursor para última linha yy => copia a linha c => recorta a linha p => cola a linha dd => apaga a linha u => desfazer Conclusão A edição de texto é essencial na administração do sistema Linux, e é muito importante conhecer o principal editor de texto do sistema, que é o “vi”, uma ferramenta muito versátil com diversas opções para manipulação de arquivos. Próxima aula Variáveis de ambiente do shell. Fundamentos de Linux Aula 2.7. Variáveis de ambiente Prof. Douglas Rafael Silva Nesta aula Variáveis de ambiente do shell. Comandos internos e externos. Scripts .bash. Variáveis de ambiente Assim como qualquer outra linguagem de programação, o shell também utiliza de variáveis para armazenar dados em memória. Podemos aproveitar essas variáveis do shell ou criarmos novas para utilizarmos em um script, por exemplo. Existem as variáveis locais e globais. As locais não são vistas por processos filhos do bash. Lista todas as variáveis: set Lista somente variáveis globais (exportadas): env Variáveis de ambiente Define uma variável local: IGTI=Linux Define uma variável global: IGTI=Linux export IGTI ou export IGTI=Linux Remove variável: unset IGTI Variáveis de ambiente Imprime uma mensagem e/ou valor de uma variável: echo Fundamentos de Linux - IGTI echo $IGTI echo $HISTFILE O shell possui comandos internos, como por exemplo o “echo”. E utiliza a variável de ambiente PATH para localizar o caminho absoluto dos comandos externos. Verifica se um comando é interno do shell ou externo: type echo Verifica o caminho absoluto de um comando, utiliza a variável PATH: which cp Variáveis de ambiente Mostra informações do sistema: uname -a Para manter as configurações de alias e PATH pode ser utilizado .bash_profile ou .bashrc .bash_profile => chamado quando é realizado login .bash_logout => chamado quando é realizado logout .bashrc => chamado quando o shell é executado Conclusão As variáveis de ambiente do shell além de serem utilizadas pelo shell podemos aproveitar para verificarmos algumas informações e até utilizar em shell scripts. A variável PATH contém o caminho dos comandos externos ao shell. Podemosutilizar os scripts .bash automatizar algumas tarefas simples. Próxima aula Tipos de arquivos no Linux e Links. Fundamentos de Linux Aula 2.8. Tipos de arquivos e Links Prof. Douglas Rafael Silva Nesta aula Tipos de arquivos. Comandos file, stat. Hardlink e Link simbólico. Tipos de arquivos e Links Para o Linux tudo é um arquivo, porém com tipos diferentes. Alguns exemplos: - => Arquivo regular (Ex.: texto, imagens etc.) d => Arquivo do tipo diretório l => Arquivo do tipo link simbólico b => Arquivo do tipo bloco (Ex.: HD) Tipos de arquivos e Links Informa o tipo do arquivo: file / file /dev/sda file /etc/passwd Mostra mais detalhes sobre o arquivo: stat /etc/passwd O Linux não trabalha com conceito de extensão de arquivo, você pode usar uma extensão para facilitar a identificação do arquivo, mas para o Linux não faz nenhuma diferença. touch programa.exe file programa.exe Tipos de arquivos e Links Hardlink são arquivos espelhados (mesmo inode), porém independentes. Comando “ln” cria um hardlink: touch arquivo1 ln arquivo1 arquivo2 stat arquivo1 arquivo2 Link simbólico é um atalho Parâmetro -s cria um link simbólico: ln -s arquivo1 arquivo3 file arquivo3 Conclusão Para o Linux tudo é um arquivo, mas com tipos diferentes. Hardlink são arquivos espelhados independentes. Link simbólico são atalhos para arquivos ou diretórios. Próxima aula Redirecionadores > , >>. Pipe e comando tee. Fundamentos de Linux Capítulo 4. Shell Script Prof. Douglas Rafael Silva Fundamentos de Linux Aula 4.1. Introdução a shell script (aspas, crase e $) Prof. Douglas Rafael Silva Nesta aula Introdução a shell script. Aspas, crase, $ e “ ; “. Introdução a shell script (aspas, crase e $) Por convenção shell scripts são nomeados com .sh Exemplo: script.sh A primeira linha do arquivo deve conter um shebang “#!” seguido do interpretador de comandos que será utilizado no script: Exemplo: #!/bin/bash Canivete suíço do shell: https://aurelio.net/shell/canivete/ https://aurelio.net/shell/canivete/ Introdução a shell script (aspas, crase e $) ; => utilizado para executar comandos sequenciais echo Listando arquivos do diretorio `pwd` ; ls echo Listando arquivos do diretorio $(pwd) ; ls ` ` e $() => comandos dentro de crase e $() são executados primeiro e o resultado é passado para o comando echo. No exemplo acima poderia ter sido aproveitando uma variável que já existe no shell: echo Listando arquivos do diretorio $PWD ; ls A saída de um comando também pode ser armazenada em uma variável. USUARIOS=$(ls /home) ; echo $USUARIOS Introdução a shell script (aspas, crase e $) \ => protege o caracter seguinte echo * echo \* Diferença entre aspas simples e duplas: echo “$PATH” echo ‘PATH’ echo “`pwd`” echo ‘`pwd`’ Aspas duplas protege os caracteres: $ ` Conclusão Por convenção utilizamos a extensão .sh nos scripts. Podemos utilizar ` ` ou $() para executar um comando e imprimir a saída ou gravar em uma variável. Aspas simples pode ser utilizada para imprimir texto simples, caso seja necessário proteger algum caracter pode ser necessário utilizar contra barra ou aspas duplas. Próxima aula Como passar parâmetros para o script. Fundamentos de Linux Aula 4.2. Passando parâmetros para o script Prof. Douglas Rafael Silva Nesta aula Como passar parâmetros para um script. Passando parâmetros para o script Passando parâmetros para o script: O script interpreta parâmetros como $ mais um número de acordo com a sequência passada. Exemplo Ao executar o script: ~/script.sh /backup/logs 7 $1 = /backup/logs $2 = 7 bash -x script.sh => debug chmod +x script.sh => permissão de execução ./script.sh Passando parâmetros para o script Opção 1: #!/bin/bash echo Realizando limpeza dos logs do diretório: $1 echo Deletando Logs dos últimos $2 dias. Opção 2: #!/bin/bash DIRETORIO=$1 DIAS_RETENCAO=$2 echo Realizando limpeza dos logs do diretório: $DIRETORIO echo Deletando Logs dos últimos $DIAS_RETENCAO dias. Passando parâmetros para o script #!/bin/bash DIRETORIO=$1 DIAS_RETENCAO=$2 echo Realizando limpeza dos logs do diretório: $DIRETORIO echo Deletando Logs com mais de $DIAS_RETENCAO dias. find $DIRETORIO -mtime +7 -exec rm {} \; Conclusão Cada parâmetro passado para um script é interpretado como $ seguido de um número de acordo com a sequência informada. Próxima aula O uso do “for” para realizar loops (repetições). Fundamentos de Linux Aula 4.3.1. Loop “for” (Parte 1) Prof. Douglas Rafael Silva Nesta aula Como executar loops usando “for”. Loop for Parte 1 Loop com for: Sintaxe for VARIAVEL in LISTA => pode ser saída de um comando ` ` ou $() do done For muito útil no dia a dia não somente dentro de um script for servers in `cat servidores` ; do echo $servers ; curl https://servers:443 ; echo ; done Loop for Parte 1 #!/bin/bash for LISTA_USUARIOS in $(cat /etc/passwd | tr -d [:blank:]) do echo $LISTA_USUARIOS USUARIO=$(echo $LISTA_USUARIOS | cut -d: -f1) HOME_USUARIO=$(echo "$LISTA_USUARIOS" | cut -d: -f6) SHELL_USUARIO=$(echo "$LISTA_USUARIOS" | cut -d: -f7) echo echo -e "\n ===== $USUARIO ===== " echo "HOME: $HOME_USUARIO" echo "SHELL: $SHELL_USUARIO" echo " ==================== " done Próxima aula Mais exemplos de utilização do comando “for”. Fundamentos de Linux Aula 4.3.2. Loop “for” (Parte 2) Prof. Douglas Rafael Silva Nesta aula Continuidade do comando “for”. Loop for Parte 2 Comando “seq” útil para definir uma quantidade exata de loops para qualquer fim. Exemplo: #!/bin/bash for num in `seq 10` do echo echo "Realizando teste de conexao... Tentativa $num" sleep 3 done Loop for Parte 2 For dentro de For #!/bin/bash for EMP in `cat empresas` ; do for DEP in `cat departamento` ; do mkdir -p ~/backups/$EMP/$DEP done done Conclusão O “for” é utilizado para executar tarefas repetitivas. Muito útil em tarefas simples do dia a dia e shell scripts. Próxima aula Condicionais if, else e elif. Comando read. Fundamentos de Linux Aula 4.4. Condicionais (if, else, elif) e o comando read Prof. Douglas Rafael Silva Nesta aula Condicionais if, else e elif. Comando read. Condicionais (if , else, elif) e o comando read Condicionais (if , else, elif) e o comando read #!/bin/bash echo "Verifica se um usuário existe" read -p "Informe o nome do usuário: " usuario echo “$usuario” Condicionais (if , else, elif) e o comando read #!/bin/bash echo "Verifica se um usuário existe" read -p "Informe o nome do usuário: " usuario USUARIO=$(cut –d: -f1 /etc/passwd | grep -i $usuario) if [[ -n $USUARIO ]] then echo "Usuario $usuario existe!" else echo "Usuario $usuario NAO existe!" fi Condicionais (if , else, elif) e o comando read #!/bin/bash echo "Verifica se um usuário existe" read -p "Informe o nome do usuário: " usuario USUARIO=$(cut –d: -f1 /etc/passwd | grep -i $usuario) HOME=“/home/$(echo $usuário | tr [:upper:] [:lower:])” Condicionais (if , else, elif) e o comando read if [[ -n $USUARIO ]] then echo "Usuario $usuario existe!" elif [[ -d $HOME ]] then echo "Usuario nao existe mas possue um home" echo "Deletando o diretorio home..." ; sleep 2 rm -riv $HOME else echo "Usuario $usuario NAO existe!" fi Conclusão Assim como em qualquer linguagem de programação o shell também utiliza de condicionais para tomada de decisão em um script. O comando read aguarda a leitura de uma informação do usuário para armazenar em uma variável. Próxima aula Variável especial $?. Condicionais && e ||. Fundamentos de Linux Aula 4.5. Variável especial $? && e || Prof. Douglas Rafael Silva Nesta aula A variável especial $?. Condicionais && e ||. Variável especial $?, && e || Variável especial $? echo "Criando um diretório..." ; echo read -p "Informe umcaminho absoluto: " DIR echo "Criando o diretório $DIR..." ; sleep 2 mkdir $DIR if [[ $? -eq 0 ]] then echo "Diretório criado com sucesso" else echo "Falha ao criar o diretório" fi Variável especial $?, && e || && => Somente executa o segundo comando se o primeiro foi executado com sucesso || => Somente executa o segundo comando se o primeiro não foi executado com sucesso echo "Criando um diretório..." ; echo read -p "Informe um caminho absoluto: " DIR echo "Criando o diretório $DIR..." ; sleep 2 mkdir $DIR && echo "Diretório criado com sucesso" || echo "Falha ao criar o diretório" Conclusão A variável especial $? retorna um código referente a saída do último comando, é muito utilizada em shell script para validação de erros. As condicionais && e || podem ser utilizadas para simplificar algumas instruções de um script. Próxima aula Como gerar logs no shell script. Fundamentos de Linux Aula 4.6. Gerando logs Prof. Douglas Rafael Silva Nesta aula Usando redirecionadores para gerar logs. Gerando Logs #!/bin/bash echo "Criando um diretório..." ; echo read -p "Informe um caminho absoluto: " DIR echo "Criando o diretório $DIR..." > log.info ; sleep 2 mkdir $DIR 2> log.erro if [[ -d $DIR ]] then echo "Diretório: $DIR criado com sucesso!" >> log.info fi Gerando Logs #!/bin/bash echo "======= `date "+%d/%m/%Y %H:%M"` ======" >> log.info echo "Criando um diretório..." ; echo read -p "Informe um caminho absoluto: " DIR echo "Criando o diretório $DIR..." >> log.info ; sleep 2 mkdir $DIR 2>> log.info if [[ $? -eq 0 ]] ; then echo "Diretório $DIR criado com sucesso" >> log.info fi echo ============================= >> log.info Conclusão Logs são essenciais para qualquer programa. Através dos redirecionadores do shell é possível enviar a saída dos comandos para um arquivo de log. Próxima aula Como usar a condicional “case”. Fundamentos de Linux Aula 4.7. Condicional “case” Prof. Douglas Rafael Silva Nesta aula Uso da condicional “Case”. Condicional Case #!/bin/bash read -p "Informe o nome do usuario: " usuario echo "Consultando a base de usuários..." cut -d: -f1 /etc/passwd | grep -i $usuario if [[ $? -ne 0 ]] ; then echo "usuario $usuario nao existe" fi read -p "Deseja realizar uma nova busca? [ s/n ]" opcao if [[ $opcao == s ]] ; then $0 fi Condicional Case #!/bin/bash read -p "Deseja realizar uma nova busca? [ s/n ]" opcao case $opcao in s) $0 ;; n) echo “Saindo…” ; exit ;; *) echo “opcao invalida” ;; esac Conclusão Nos casos de condições específicas podemos utilizar o case tornando a construção da condicional mais simples de ler. Próxima aula Loop utilizando while. Funções. Fundamentos de Linux Aula 4.8. Loop com “while” e “funções” Prof. Douglas Rafael Silva Nesta aula Como realizar loops com o comando while. Como utilizar funções no shell. Loop com While e Função #!/bin/bash echo “Procura arquivos .conf..." if [[ -z $1 ]] ; then while [[ -z $diretorio ]] ; do read -p "Parametro nao informado. Informe um diretorio para consulta: " diretorio find $diretorio -iname "*.conf" done else find $1 -iname "*.conf" fi Loop com While e Função Função Sintaxe: function NOME_FUNCAO () { comandos } NOME_FUNCAO () { comandos } Loop com While e Função busca_conf () { find $1 -iname "*.conf" } if [[ -z $1 ]] ; then while [[ -z $diretorio ]] ; do read -p "Parametro nao informado. Informe um diretorio para consulta: " diretorio busca_conf $diretorio done else busca_conf $1 fi Conclusão O while é recomendado para loops com repetições que podem variar, devido a ação de algum usuário ou resultado de um comando. Funções são úteis para evitar repetição de código. Próxima aula Gerenciamento de processos. Fundamentos de Linux Capítulo 5. Gerenciamento de Processos Prof. Douglas Rafael Silva Fundamentos de Linux Aula 5.1. PID, processo init e load average Prof. Douglas Rafael Silva Nesta aula ID dos processos. Processo init. Comandos top, uptime, free, pidof e pgrep. PID, processo init e load average Todos os processos do sistema possui um identificador único => PID e possuem um processo pai => PPID O primeiro processo executado no sistema e pai de todos os outros é o processo init (systemd) de PID = 1 Lista processos em forma de árvore: pstree -p => mostra ID do processo PID, processo init e load average Monitora todos os processos do sistema: top Opção útil: 1 => mostra o consumo de cada processador Load average valor normal é relativo para cada máquina Mostra 1, 5 e 15 últimos minutos Shift+M => ordena por consumo de memória Shift+C => ordena por consumo de cpu PID, processo init e load average Mostra o tempo que o servidor está ligado => uptime Mostra o uso de memória => free -m Busca processo por nome: pidof “nome exato do processo” pgrep “parte do nome do processo” Conclusão Todos os processos no sistema possuem um identificador e um processo pai. O processo pai de todos os processos é o processo init. Comando top monitora os processos em tempo real e acompanha a performance do servidor. Próxima aula Listando os processos com o comando “ps”. Como enviar sinais aos processos. Fundamentos de Linux Aula 5.2. Comandos ps, kill, killall e pkill Prof. Douglas Rafael Silva Nesta aula Verificar os processos com o comando “ps”. Enviar sinais aos processos com os comandos “kill”, “killall” e “pkill”. Comandos ps, kill, killall e pkill Processos em execução do usuário no terminal corrente: ps -u => mostra mais informações relacionadas a usuário -x => mostra processos que não foram iniciados diretamente em seu terminal -a => mostra os processos de todos os usuários Comandos ps, kill, killall e pkill Envia sinais para processos: kill kill -l => lista todos os sinais Quando executamos Crtl+C estamos enviando o sinal 2) SIGINT (interrupção) 15) SIGTERM => termina processo 9) SIGKILL => termina processo de forma abrupta Comandos ps, kill, killall e pkill Duas maneiras de enviar sinais para os processos: kill -s SIGTERM “PID_PROCESSO” kill -15 “PID_PROCESSO” Mata processo por nome: killall “nome exato do processo” pkill “parte do nome do processo” Conclusão O comando ps mostrar os processos correntes no sistema. Através do comando kill é possível enviar sinais a processos. Comandos killall e pkill são usados para matar processos baseados no nome. Próxima aula Processos em foreground e background. Prioridades de processos. Fundamentos de Linux Aula 5.3. Processos em foreground, background e prioridades Prof. Douglas Rafael Silva Nesta aula O que são processos em foreground e background. Como alterar prioridades de processos. Processos em Foreground, Background e Prioridades Foreground (fg) e Background (bg): fg => prende o terminal bg => libera o terminal para execução de comandos Lista jobs com seu id (processos em Background): jobs Executa um comando enviando para background: [ Comando ] & Processos em Foreground, Background e Prioridades Retorna um comando para Foreground: fg “id do job” Crtl+Z => envia um sinal de stop para o processo Envia processos nos jobs para background: bg "id do job“ Mata o processo pelo id do job: kill %"id do job" Processos em Foreground, Background e Prioridades Prioridades dos processos PR => Prioridade ( 0 até 39 ) NI => Nice ( -20 até +19 ) nice -n -20 “comando" nice -n 15 “comando“ renice -n -8 “pid" renice -n 8 “pid" Conclusão Processos em foreground prendem o terminal do usuário. Processos em background são executados em segundo plano liberando o terminal para execução de outros comandos. Processos possuem prioridades de 0 até 39 e podem ser alterados entre -20 a +19. Sendo o menor valor de maior prioridade. Próxima aula Comandos básicos de rede. Verificando as interfaces de rede e alterando IP. Fundamentos de Linux Capítulo 6. Comandos Básicos de Rede Prof. Douglas Rafael Silva Fundamentos de Linux Aula 6.1. Verificando as interfaces e adicionando IP Prof. Douglas Rafael Silva Nesta aula Como verificar interfaces de rede. Como configurar IP nas interfaces. Verificando as interfaces e adicionando IP Pacotes para gerenciamento de rede: net-tools (descontinuado): Comandos => ifconfig e route iproute: Comando => ip Verificando as interfaces e adicionando IP Lista as interfaces: ip address show ifconfig Baixa interfaces: ip link set "interface" down ifconfig "interface" down Sobe interfaces: ip link set "interface" up ifconfig "interface" up Verificando as interfaces e adicionando IP Define um IP: ip addr add "IP/MASK" dev "interface" ifconfig "interface" "IP" netmask "mascara“ Deleta um IP de uma interface: ip addr del "IP/MASK" dev "interface“ ifconfig "interface" delete "IP" Define novos IP's em uma interface: ip addr add "IP/MASK" dev "interface" ifconfig "interface":"num" "IP" netmask "mascara" Conclusão Existem dois pacotes principais para gerência de rede, o net-tools que traz os comandos ifconfig e route. E o pacote iproute que traz o comando ip. Através desses comandos podemos verificar as interfaces de rede e realizar alterações. Próxima aula Como listar, criar e deletar rotas. Fundamentos de Linux Aula 6.2. Rotas Prof. Douglas Rafael Silva Nesta aula Como gerenciar as rotas no sistema. Rotas Lista as rotas: ip route show route Deleta rota default: ip route del default route del default Cria rota default: ip route add default via "IP“ route add default gw "IP" Rotas Adiciona rota: ip route add "rede/mask" via "IP" dev "interface“ route add -net "REDE" gw "IP" Deleta rota: ip route del "rede/mask" via "IP" dev "interface“ route del -net "REDE" gw "IP" Conclusão Utilizando os comandos route e ip route, podemos alterar e verificar as rotas no sistema. Próxima aula Fixando as configurações de rede. Fundamentos de Linux Aula 6.3. Fixando as configurações de rede Prof. Douglas Rafael Silva Nesta aula Como fixar as configurações de rede. Fixando as configuração de rede Configurando IP e Máscara: /etc/sysconfig/network-scripts/ifcfg-xxx IPADDR=192.168.1.10 NETMASK=255.255.255.0 Reinicia as interfaces de rede: systemctl restart network Fixando as configuração de rede Fixar rota default: /etc/sysconfig/network GATEWAY=192.168.1.1 Fixar rota: /etc/sysconfig/network-scripts/route-xxx 192.168.2.0/24 via 192.168.2.1 dev enp0xx Conclusão Os comandos para gerenciamento de rede fazem alteração em memória, para fixar essas configurações é necessário salvar em arquivos. Arquivo /etc/sysconfig/network. Diretório /etc/sysconfig/network-scripts/. Próxima aula Resolução de nomes. Fundamentos de Linux Aula 6.4. Resolução de nomes Prof. Douglas Rafael Silva Nesta aula Como o Linux realiza resolução de nomes. Resolução de nomes Configuração dos servidores de DNS: /etc/resolv.conf nameserver => aponta o servidor de DNS Resolução de Nomes: /etc/hosts Apontamento de IP -> nome (por padrao é consultado antes do DNS) Precedência da resolução de nomes é configurada no arquivo: /etc/nsswitch.conf Resolução de nomes Comandos úteis: pacote bind-utils Resolução de nomes e dns reverso: • host • dig • nslookup Verifica conectividade: ping -c => define a quantidade de pacotes Conclusão Por padrão, a resolução de nomes no sistema consulta o arquivo /etc/hosts primeiro e em seguida consulta servidores de DNS listados no arquivo /etc/resolv.conf. Próxima aula Comandos para verificar conexões (netstat, telnet e nc). Fundamentos de Linux Aula 6.5. Verificando conexões (netstat, telnet e nc) Prof. Douglas Rafael Silva Nesta aula Como verificar conexões ativas e testar conectividade com portas. Verificando conexões (netstat, telnet e nc) Mostra conexões ativas: netstat Parâmetros: -n => não resolve nome -a => todas as conexões (all) -t => tcp -u => udp -p => pid do processo Verificando conexões (netstat, telnet e nc) Testa conexões: telnet nc -v Abre uma porta no servidor (útil para testar conectividade com alguma porta): nc -l -p “Porta” Conclusão O comando netstat verifica as conexões ativas na máquina e é muito útil para checar se uma porta está escutando. Os comandos telnet e nc testam conectividades em determinadas portas. Próxima aula Gerenciando usuários no sistema. Fundamentos de Linux Capítulo 7. Gerenciamento de Usuários e Grupos Prof. Douglas Rafael Silva Fundamentos de Linux Aula 7.1. Gerenciamento de usuários Prof. Douglas Rafael Silva Nesta aula Como gerenciar usuários. Criar, remover e modificar usuários. Gerenciando usuários Usuários são armazenados no arquivo /etc/passwd 7 campos separados por : Nome: Senha: UID: GID: Descrição: Home: Shell O Campo “Senha” com x indica que as senhas estão armazenadas no arquivo: /etc/shadow Gerenciando usuários Cria usuário: useradd "nome do usuario" (é criado um grupo para esse usuário) Opções: -s => shell -c => comentário -m => solicita a criação de um home -d => home -g => grupo primário -G => grupo secundário Gerenciando usuários Definir senha do usuário: passwd "usuario" Remove usuário: userdel "nome do usuario" Opção: -r => remove o home do usuário Modifica usuário: usermod "opcoes" "nome do usuario“ (Mesmas opções do useradd) Conclusão O arquivo /etc/passwd contém as informações dos usuários do sistema. Os comandos useradd, userdel e usermod podem ser utilizados para manipular esse arquivo. Próxima aula Gerenciamento de grupos de usuário. Fundamentos de Linux Aula 7.2. Gerenciamento de grupos Prof. Douglas Rafael Silva Nesta aula Como gerenciar os grupos de usuário. Gerenciando grupos Grupos são armazenados no arquivo /etc/group 4 campos separados por : Grupo: Senha: ID: Usuários O Campo “Senha” com x indica que as senhas estão armazenadas no arquivo: /etc/gshadow Gerenciando grupos Cria grupo: groupadd "nome grupo" Altera o grupo primário de um usuário: usermod -g "grupo" "usuario" Altera o grupo secundário de um usuário: usermod -G "grupo" "usuario" Adiciona usuário em um grupo: usermod -a -G "grupo" "usuario" Gerenciando grupos Mostra o UID e todos GID que usuário pertence: id "usuario" Mostra os grupos de um usuário: groups "usuario" getent pode ser usado para consultar /etc/passwd e /etc/group getent passwd "usuario" getent group "grupo" Conclusão O arquivo /etc/group armazena os grupos do sistema. Comando groupadd adiciona grupos e o comando usermod pode ser utilizado para manipular grupos de usuários. Próxima aula Definindo permissões de arquivos e diretórios. Fundamentos de Linux Capítulo 8. Permissões de Arquivos e Diretórios Prof. Douglas Rafael Silva Fundamentos de Linux Aula 8.1. Definindo permissões de arquivos e diretórios Prof. Douglas Rafael Silva Nesta aula Como funciona as permissões de arquivos e diretórios; E como alterar as permissões. Definindo permissões de arquivos e diretórios - r w - r - - r - - root root Tipo do arquivo => Usuário Dono => Grupo Dono => Outros r = leitura (read) w = escrita (write) x = execução (execute) Arquivo -> ler (r), escrever (w) e executar (x) Diretório -> listar (r) criar e remover (w) e acessar (x) Definindo permissões de arquivos e diretórios u => usuário g => grupo o => outros a => todos = define + adiciona - remove Modificar permissões: chmod u=rw,g=rw,o=r arquivo.txt chmod a=rw arquivo.txt Definindo permissões de arquivos e diretórios r = leitura (read) -> 4 w = escrita (write) -> 2 x = execução (execute) -> 1 Modificar permissõesde forma octal: chmod 644 arquivo.txt Parâmetro: -R => define permissões de forma recursiva Comando stat mostra as permissões das duas formas Conclusão As permissões dos arquivos e diretórios são definidas por usuário, grupo e outros. O comando usermod é utilizado para alterar as permissões. Próxima aula Alterando os donos do arquivo. Fundamentos de Linux Aula 8.2. Alterando os donos de arquivos Prof. Douglas Rafael Silva Nesta aula Como alterar o usuário e grupo dono de um arquivo. Alterando os donos dos arquivos Alterar usuário e grupo dono: chown usuario “arquivo ou diretório” chown usuário:grupo “arquivo ou diretório” chown :grupo “arquivo ou diretório” chgrp grupo “arquivo ou diretório” -R => altera de forma recursiva Conclusão O comando chown altera usuário e grupo de um arquivo. O comando chgrp pode ser usado para alterar o grupo dono. Próxima aula Conhecendo os atributos especiais de arquivos. Como alterar os atributos e configuração de umask. Fundamentos de Linux Aula 8.3. Atributos especiais Prof. Douglas Rafael Silva Nesta aula Atributos especiais – SUID, SGID e Stick. Alterando os atributos com o chmod. Umask. Atributos especiais Atributos especiais: SUID => utiliza a permissão do usuário dono SGID => cria arquivos e diretórios herdando o mesmo grupo dono Stick => somente quem criou um arquivo no diretório consegue apagar e renomear -r w s r – x r – x root root /bin/passwd S – sem permissão de execução s – com permissão de execução T – sem permissão de execução t – com permissão de execução Atributos especiais Adicionar os atributos especiais: chmod u+s “arquivo” chmod g+s “arquivo” chmod o+t “arquivo” SUID => 4 SGID => 2 Stick => 1 chmod 4644 “arquivo” Atributos especiais umask => máscara usada para definir permissões de novos arquivos e diretórios umask 0022 0777 - 0022 -------- 0755 => Diretório 0644 => Arquivo Conclusão Em alguns casos, é necessário utilizar atributos especiais para definir determinadas permissões. O atributo SUID é utilizado para executar um comando ou script com permissão de dono. O atributo GUID faz com que arquivos criados dentro um diretório herdem o grupo dono do diretório. Stick somente quem criou um arquivo no diretório consegue apagar e renomear.
Compartilhar