Sistemas Operacionais (técnico)

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

CÓDIGO DA UNIDADE CURRICULAR -
CARGA HORÁRIA: 2 horas/semana = 40 horas.
PRÉ REQUISITOS: , , ,
UNIDADES CURRICULARES CLIENTES: Redes de Computadores , , ,

Competências

Habilidades

Bases Tecnológicas

Diários de Aula

Aula 9 - Ainda Permissões de acesso a arquivos e diretórios - Uso da umask e exercícios complementares

Objetivos

  • Uso da umask;
  • Exercícios adicionais.

Uso da umask

A umask é uma palavra binária que permite definir quais são as permissões que serão dadas na criação de um arquivo ou de um diretório. A regra geral para formação destas permissões é:

  • Para arquivo: 666 AND (NOT umask);
  • Para diretório: 777 AND (NOT umask);

Ou seja, suponha que vamos criar um arquivo. A umask pode ser verificada com o comando:

umask

Normalmente esta máscara é 022. Se você criar um arquivo ele terá as seguintes permissões:

666 AND (NOT 022) = 666 AND 755 = 644

Ou seja, direito de rw para usuário, r para grupo e outros.

Para diretórios seria:

777 AND (NOT 022) = 777 AND 755 = 755

Ou seja, direito de rwx para usuário, rx para grupo e outros.

Se você usar o comando:

umask -S

será possível visualizar estas permissõeses de forma simbólica.

Usando a umask

  • Modifique a umask para que todos os arquivos criados para outros tenham direito de leitura e escrita (e execução para diretórios). Basta aplicar o comando umask e a máscara a ser aplicada;
  • Crie um arquivo qualquer:
touch teste.txt
  • Crie um diretório qualquer qualquer:
mkdir teste
  • Confira os resultados:
ls -l
  • Volte a umask ao valor inicial

Exercícios adicionais

Usando uma máquina virtual, como na aula anterior, criar 4 usuários: joao, maria, jose e lara. Os usuários joao, maria e lara pertencem a um grupo projX, que também deve ser criado (se ainda não existir).

Algumas restrições de permissão

O usuário joao possui os seguintes diretórios: docs_outros, docs_pessoais e docs_projX. Ele colocou as seguintes restrições de acesso:

  1. Em docs_pessoais somente joao pode criar e ver arquivos e diretórios, todos os demais grupos e usuários não tem permissão alguma. Em docs_projX, somente joao e os integrantes do grupo projX podem criar arquivos e entrar no diretório;
  2. Em docs_outros qualquer um pode entrar e listar o diretório mas não pode criar ou renomear arquivos no mesmo;

Testando permissões

  1. Logue como joao e crie os arquivos alfa.txt e beta.txt no diretório docs_pessoais com direito de acesso a somente leitura para outros. Dê acesso a leitura e escrita para proprietário e grupo.
  2. Logue como maria e teste os direitos de acesso aos diretórios criados por joao.
  3. Logue como jose e tente entrar nos diretórios criados por joao. Qual deles permite este acesso?
  4. Faça lara criar um arquivo em docs_projX;


Aula 10 - Entradas e Saídas Padrão

Objetivos

  1. Conceituar e trabalhar entradas e saída padrão, saída de erros padrão e pipes;
  2. Trabalhar os comandos cut, find, wc, grep, head e tail.

Redirecionamento de entrada e saídas

Sempre existem 3 arquivos "abertos" por default para um determinado processo. São eles a entrada padrão (stdin, normalmente associada ao teclado), stdout(normalmente associada a tela) e a saída padrão de erros (stderr, normalmente associada a tela). Estes arquivos podem ser modificados resultando no que se chama de redirecionamento das entradas e saídas do processo.

Cada arquivo aberto, associado a um processo, possui um descritor identificado por um número que se constitui em um índice de uma tabela de arquivos abertos associados ao processo. Segue-se um resumo da forma de realizar redirecionamento.

Redireção de stdout (arquivo lista é sobrescrito):

ls > lista

Redireção de stdout fazendo um append ao arquivo de saída:

ls >> lista

Cria/sobreescreve um arquivo de tamanho zero, similar ao touch

> lixo

Resumo das redireções das saídas:

  • 1>filename # Redireciona stdout para o arquivo filename
  • 1>>filename # Redireciona e acrescenta a stdout para o arquivo filename
  • 2>filename # Redireciona stderr para o arquivo filename
  • 2>>filename # Redireciona e faz append da stderr para o arquivo filename
  • &>filename # Redireciona ambos stdout and stderr para o arquivo filename

Exercícios

  • Listar o diretório corrente, de forma detalhada e em ordem crescente de modificação, redirecionando a saída para um arquivo ListaOrdenada:
ls -l > ListaOrdenada
  • Acrescentar ao final (append) do arquivo ListaOrdenada, a data atual:
date >> ListaOrdenada
  • Criar um arquivo chamado teste1, com a frase “Alo Mundo”, usando o comando echo e redirecionamento de saída:
echo Alo Mundo > teste1
  • Criar um arquivo vazio usando somente > arquivo;
> ArquivoVazio

Acho que esta é a forma mais rápida de criar um arquivo vazio!

  • Aplicar um comando ls ao diretório /eetc (intecionalmente errado) redirecionando a saída para lixo1:
ls /eetc > lixo1
  • Conferir o conteúdo de lixo1
cat lixo1
  • Repetir o comando ls ao diretório /eetc (intecionalmente errado) redirecionando a saída de erro para lixo2;
ls /eetc 2> lixo2
  • Conferir o conteúdo de lixo2
cat lixo2
  • Ordenar o arquivo passwd:
sort < /etc/passwd > PasswdOrdenado

Pipes

A filosofia do unix/linux é resolver pequenos problemas com comandos simples. É possível no entanto resolver problemas mais complexos encadeando saídas em entradas, usando pipes.

  • Listar de forma controlada (rolando a tela) o diretório /etc:
ls -l /etc | more}
  • Procurar arquivos com terminação .conf no diretório /etc, usando o comando find e redirecionar a saída de erro para /dev/null (equivalente a uma lixeira mas sem volta!):
find /etc -name .conf 2> /dev/null
  • Repetir o exercício anterior fazendo um pipe para o comando wc(com flag -l para contar o número de linhas) a fim de verificar o número de ocorrências dos arquivos procurados:
find /etc -name .conf | wc -l
  • Eliminar a saída de erros do comando anterior:
find /etc -name .conf 2$ /dev/null | wc -l
  • Usar um pipe com cat e wc para determinar quantas linhas existe no arquivo /etc/passwd:
cat /etc/passwd | wc -l
  • Repetir o exercício anterior para verificar quantos caracteres contem o arquivo:
cat /etc/passwd | wc
  • Listar o campo 1 do arquivo passwd:
cat /etc/passwd | cut -f 1 -d :

Conferir com o comando man o uso do comando cut.

Outros Exercícios

  1. O comando grep pode ser usado para verificar ocorrências de palavras em (padrões) em um arquivo. Por exemplo: grep aluno /etc/passwd.

Componha um comando usando cut, grep e wc para verificar quantos userid possuem a cadeia "un";

  1. Gere um arquivo contendo somente os campos userid e nome completo de usuários que constam do arquivo passwd;
  2. Pesquisar o comando head e gerar um arquivo chamado DezLinhas contendo as 10 primeiras linhas do arquivo /etc/passwd;
  3. Repetir o exercício anterior para as 5 primeiras linhas;
  4. Pesquisar o comando tail e gerar um arquivo chamado DezUltimas com com as 5 últimas linhas do arquivo /etc/passwd mas ordene estas

linhas com o comando sort (use pipes).

Referências Bibliográficas

Professores da Unidade Curricular


Grade do Curso Técnico de Telecomunicações com ênfase em Telefonia
Grade do Curso Técnico de Telecomunicações com ênfase em Redes de Computadores