Sistemas Operacionais Redirecionamento de stream e Permissões de acesso Paulo Ricardo Lisboa de Almeida 1
Redirecionamento de stream O redirecionamento de stream permite redirecionar tanto a entrada padrão quanto a saída padrão para um arquivo comando < (sinal de menor) <arquivo> indica que o comando irá ler o conteúdo do <arquivo>, ao invés do teclado comando > (sinal de maior) <arquivo> indica que o comando escrever o conteúdo no <arquivo>, ao invés da saída padrão (monitor) Exemplo ls > saida.txt 2
Redirecionamento de stream O redirecionamento de stream permite redirecionar tanto a entrada padrão quanto a saída padrão para um arquivo comando < (sinal de menor) <arquivo> indica que o comando irá ler o conteúdo do <arquivo>, ao invés do teclado comando > (sinal de maior) <arquivo> indica que o comando escrever o conteúdo no <arquivo>, ao invés da saída padrão (monitor) Exemplo ls > saida.txt O comando não exibiu nada na tela certo? O conteúdo da saída padrão (no caso a tela), foi redirecionado para o arquivo saida.txt 3
cat O comando cat concatena arquivos e mostra na tela Se não passarmos um arquivo para o cat, ele vai ler do teclado, e depois vai exibir o conteúdo na tela cat saida.txt Vai exibir o conteúdo do arquivo saida.txt na tela cat Tudo que você digitar vai ser reexibido na tela Pressione contro+c para sair do programa 4
cat Podemos utilizar o cat como um editor de texto Vamos adicionar tudo que escrevemos no arquivo saida.txt Como podemos fazer isso? 5
cat O comando cat concatena arquivos e mostra na tela Podemos utilizar o cat como um editor de texto Vamos adicionar tudo que escrevemos no arquivo saida.txt cat >> saida.txt Note que utilizamos dois sinais de maior, isso quer dizer que desejamos fazer um append, e tudo que digitarmos será incluso no final do arquivo Se utilizarmos somente um sinal de menor, o arquivo saida.txt será recriado com a saída do cat Nesse caso o conteúdo antigo é apagado Existem editores de texto mais sofisticados baseados em linha de comando, e que são melhores que os editores com interface gráfica para muitas tarefas Pesquise sobre o vi e o vim 6
Permissões de acesso Crie um arquivo na sua home chamado meuscript.sh touch meuscript.sh Escreva qualquer coisa nele cat >> meuscript.sh Agora digite ls -l para listar os arquivos e diretórios, onde o -l indica que você quer uma lista detalhada A saída será algo assim:... drwxr-xr-x 2 user user 4096 Mar 6 14:55 Imagens -rw-r--r-- 1 user user 0 Mar 6 19:48 meuscript.sh drwxr-xr-x 2 user user 4096 Mar 6 14:55 Modelos... 7
Permissões de acesso Vamos olhar para o primeiro grupo de informações, que nos dá informações de acesso do arquivo O primeiro componente indica se o objeto é um arquivo (marcado por um traço), ou um diretório (letra d)... drwxr-xr-x 2 user user 4096 Mar 6 14:55 Imagens -rw-r--r-- 1 user user 0 Mar 6 19:48 meuscript.sh drwxr-xr-x 2 user user 4096 Mar 6 14:55 Modelos... 8
Permissões de acesso Vamos olhar para o primeiro grupo de informações, que nos dá informações de acesso do arquivo O primeiro componente indica se o objeto é um arquivo (marcado por um traço), ou um diretório (letra d) O restante é dividido em três blocos de permissão Permissões do dono do objeto Permissões do grupo Permissões de outros... drwxr-xr-x 2 user user 4096 Mar 6 14:55 Imagens -rw-r--r-- 1 user user 0 Mar 6 19:48 meuscript.sh drwxr-xr-x 2 user user 4096 Mar 6 14:55 Modelos... 9
Permissões de acesso Três blocos de permissão Permissões do dono do objeto Permissões do grupo Permissões de outros Cada bloco ainda é dividido em três, na seguinte ordem Permissão de leitura r Permissão de escrita w Permissão de execução x Sendo assim temos três grupos no formato rwx, onde um traço no lugar de uma das letras indica a que não... há permissão drwxr-xr-x 2 user user 4096 Mar 6 14:55 Imagens -rw-r--r-- 1 user user 0 Mar 6 19:48 meuscript.sh drwxr-xr-x 2 user user 4096 Mar 6 14:55 Modelos... 10
Permissões de acesso Sendo assim, meuscript.sh é um arquivo, pois começa com um traço Analisando cada trio: Primeiro trio rwindica que o dono do arquivo pode ler e escrever nele, mas não pode executá-lo (isso seria um problema caso fosse um script de verdade) O segundo trio r-- pessoas que pertencem ao grupo do arquivo podem ler, mas não podem escrever nem executar O segundo trio r-- o arquivo pode ser acessado para leitura publicamente somente... drwxr-xr-x 2 user user 4096 Mar 6 14:55 Imagens -rw-r--r-- 1 user user 0 Mar 6 19:48 meuscript.sh drwxr-xr-x 2 user user 4096 Mar 6 14:55 Modelos... 11
Permissões de acesso Exercício Quais as permissões de acesso do diretório Imagens?... drwxr-xr-x 2 user user 4096 Mar 6 14:55 Imagens -rw-r--r-- 1 user user 0 Mar 6 19:48 meuscript.sh drwxr-xr-x 2 user user 4096 Mar 6 14:55 Modelos... 12
Permissões de acesso Exercício Quais as permissões de acesso do diretório Imagens? Dono: rwx Grupo: r-x Público: r-x... drwxr-xr-x 2 user user 4096 Mar 6 14:55 Imagens -rw-r--r-- 1 user user 0 Mar 6 19:48 meuscript.sh drwxr-xr-x 2 user user 4096 Mar 6 14:55 Modelos... 13
Permissões de acesso O próximo valor é o número de links para o arquivo Tomaremos esse assunto mais adiante na disciplina Os dois próximos componentes indicam o dono do arquivo, e o grupo do qual o arquivo pertence, respectivamente Sendo assim, o arquivo meuscript.sh pertence ao usuário user e também a um grupo chamado user... drwxr-xr-x 2 user user 4096 Mar 6 14:55 Imagens -rw-r--r-- 1 user user 0 Mar 6 19:48 meuscript.sh drwxr-xr-x 2 user user 4096 Mar 6 14:55 Modelos... 14
Criando um usuário Agora vamos criar um usuário utilizando o comando adduser sudo adduser alonso O sudo indica que essa é uma ação de super usuário Somente um super usuário (root) pode executar este tipo de ação Digite man sudo para mais informações Por isso é necessária a senha de super usuário Agora vamos utilizar o usuário alonso para visualizar o arquivo meuscript.sh Primeiro, vamos trocar para o usuário alonso no bash su alonso cat meuscript.sh Conseguimos visualizar o conteúdo do arquivo, por quê? 15
Criando um usuário Agora vamos criar um usuário utilizando o comando useradd sudo adduser alonso O sudo indica que essa é uma ação de super usuário Somente um super usuário (root) pode executar este tipo de ação Digite man sudo para mais informações Por isso é necessária a senha de super usuário Agora vamos utilizar o usuário alonso para visualizar o arquivo meuscript.sh Primeiro, vamos trocar para o usuário alonso no bash su alonso cat meuscript.sh Conseguimos visualizar o conteúdo do arquivo, por quê? O arquivo possui permissão pública de leitura 16
Criando um usuário Agora faça o seguinte cat >> meuscript.sh O que aconteceu? 17
Criando um usuário Agora faça o seguinte cat >> meuscript.sh Alonso não é dono do arquivo, e somente o dono do arquivo têm permissão de escrita (w) Utilize o ls -l para verificar isso -rw-r--r-- 1 user user 103 Mar 7 13:17 meuscript.sh Vamos resolver isso através de um grupo 18
Criando um grupo Se você ainda está logado como alonso, utilize control+d para voltar ao usuário user Utilize o comando groupadd para criar um grupo sudo groupadd alunos O comando acima irá criar um grupo chamado alunos no sistema Para listar todos os grupos utilize o comando getent group 19
Atrelando o usuário a um grupo Para adicionar um usuário que já existe a um grupo que também já existe, utilize o comando sudo usermod -a -G alunos alonso -a siginifica adicionar grupo suplementar -G significa que se trata de um grupo secundário Note que o G é maiúsculo Para checar os grupos de determinado usuário, utilize o comando groups <usuário> 20
Atrelando um arquivo a um grupo Utilize o comando chown (change owner) para modificar o dono e o grupo do arquivo chown <dono>:<grupo> sudo chown user:alunos meuscript.sh O dono foi modificado para user (esse já era o dono antigo) O arquivo agora pertence ao grupo alunos Verifique com ls 21
Editando o arquivo Vamos editar o arquivo novamente como o usuário alonso su alonso cat >> meuscript.sh Não deu certo ainda? O que cargas d água estamos fazendo errado? O alonso pertence ao grupo alunos O arquivo é do grupo alunos O que estamos deixando passar? 22
Editando o arquivo Vamos editar o arquivo novamente como o usuário alonso su alonso cat >> meuscript.sh Não deu certo ainda? O que cargas d água estamos fazendo errado? O alonso pertence ao grupo alunos O arquivo é do grupo alunos O que estamos deixando passar? -rw-r--r-- 1 user alunos 103 Mar 7 13:17 meuscript.sh O grupo tem somente permissão de leitura no arquivo 23
Modificando as Permissões de acesso Faça o logof do alonso (control+d) Para modificar as permissões de acesso de um arquivo, podemos utilizar o comando chmod Como descrito no início da aula, o acesso é descrito por três blocos Permissões do dono do objeto Permissões do grupo Permissões de outros Cada grupo (que contém 3 tipos de permissão rwx) pode ser visto como um número binário O valor 1 indica a permissão, o valor 0 indica que não é permitido -rw-r--r-- 1 user alunos 0 Mar 6 19:48 meuscript.sh 24
Modificando as Permissões de acesso Cada grupo (que contém 3 tipos de permissão rwx) pode ser visto como um número binário O valor 1 indica a permissão, o valor 0 indica que não é permitido Permissão Binário Decimal 644 rw-r--r-- 110100100 Como ficaria o então ser quisermos que o grupo tenha permissão de escrita? 25
Modificando as Permissões de acesso Como ficaria o então ser quisermos que o grupo tenha permissão de escrita? Permissão Binário Decimal 664 rw-rw-r-- 110110100 Podemos alterar a permissão de acesso agora chmod 664 meuscript.sh Verifique as permissões agora com ls 26
Editando o arquivo Vamos editar o arquivo novamente como o usuário alonso su alonso cat >> meuscript.sh Deu certo! Tanto o alonso quanto o arquivo pertencem ao grupo alunos O grupo alunos tem permissão de escrita no arquivo 27
Modificando as Permissões de Acesso Modo ugoa u dono do arquivo (user) g os usuários que são membros do mesmo grupo do arquivo (group) o outros (others) a todos os usuários do sistema (all). Combinado com + adição das permissões - remoção das permissões = redefinição das permissões Tipo de permissão r leitura. w gravação. x execução 28
Modificando as Permissões de Acesso Exemplo removendo a permissão de escrita do grupo e pública (others) chmod go-w meuscript.sh 29
Removendo um usuário e um grupo Para excluir um grupo, utilize o comando groupdel <nome_grupo> Para excluir um usuário, utilize o comando userdel -r <nome_usuario> O parâmetro -r indica que o diretório home do usuário também será removido 30
Exercícios 1. Crie um arquivo e escreva um texto qualquer nele. Crie um segundo arquivo e insira o texto do primeiro no segundo. 2. Modifique o dono e o grupo dos arquivos que você criou (se você criou o arquivo como user, coloque o alonso como dono, e fazendo parte do grupo alunos por exemplo). Modifique as permissões de acesso dos arquivos que você criou através do método binário e ugoa da seguinte forma: a) r--r--r-- b) rwxrw-rw c) rw------- d)rwxrwxrwx 31
Referências Papos de Botequim: http://wiki.softwarelivre.org/twikibar/webhome Introdução ao shell script: http://www.geocities.ws/reimlima/apostila-introducao-shell.pdf 32