Sistemas Operacionais (técnico)
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:
- Em docs_pessoais somente joao pode criar arquivos e diretórios. Em docs_projX, somente joao e os integrantes do grupo projX podem criar arquivos e entrar no diretório;
- 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
- 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.
- Logue como maria e teste os direitos de acesso aos diretórios criados por joao.
- Logue como jose e tente entrar nos diretórios criados por joao. Qual deles permite este acesso?
- Faça lara criar um arquivo em docs_projX;
Aula 10 - Entradas e Saídas Padrão
Objetivos
- Conceituar e trabalhar entradas e saída padrão, saída de erros padrão e pipes;
- 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
- 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";
- Gere um arquivo contendo somente os campos userid e nome completo de usuários que constam do arquivo passwd;
- Pesquisar o comando head e gerar um arquivo chamado DezLinhas contendo as 10 primeiras linhas do arquivo /etc/passwd;
- Repetir o exercício anterior para as 5 primeiras linhas;
- 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
- 2010-2 - Odilson Tadeu Valle
- 2010-2 - Eraldo Silveira e Silva