Conhecendo o Linux – Parte 2


Tux ProfessorE ai gente.

Tudo bom com vocês.

E dando continuidade ao artigo por mim escrito anteriormente, vamos agora ver mais alguns comandos muito úteis e utilizados no Linux. Nesse artigo veremos Links, Conceitos de Entradas e Saídas e Permissões.

Para quem já conhece e tem algum conceito, fica mais fácil o entendimento.

Vamos começar falando sobre links.

O link é um mecanismo que faz referência ou apontamento para outro arquivo ou diretório em outra localização.  Complicado? Um pouco. Mas durante o decorrer do texto vocês terão uma ideia e um melhor entendimento sobre o assunto. A diferença entre eles, esta no “inode” (endereço físico do “HD” que indica onde está o arquivo no HD). Essa estrutura é responsável por conter informações básicas sobre seus arquivos e pastas, como permissões de acesso, identificação dos donos dos arquivos, data e hora do último acesso e alterações, tamanho e o mais importante, os famosos ponteiros para o arquivo em si. De modo geral, o INODE é a identidade de um arquivo ou diretório, é uma identificação única para ele.

Há dois tipos de links, o Simbólico (ou Soft Link) e o Hard Link, vamos entender um pouco o que cada um faz.

Link Simbólico (Soft Link): O link simbólico é um arquivo especial de disco que tem como conteúdo o caminho para chegar até o arquivo alvo.  No Soft Link você cria apenas um apontamento. Se você apagar o arquivo origem, o link é quebrado.

Ex:

ln -s <destino> <link>

-s -> Cria um link simbólico.
-v -> Modo verbose

$ ln -s /home/micro/docs.txt/ docs

Vamos ver como ficou?
ls –lhi
231362 -rw-r–r– 1 user user 293 2007-06-11 19:58 docs.txt
257637 lrwxrwxrwx 1 user user 9 2007-06-19 00:28 docs-> docs.txt

Pense como um link Web, onde determinado link faz uma referência a uma página em algum Sitio. Basicamente seu funcionamento é o mesmo.

Hard Link : No Hard Link você cria um link como se criasse um arquivo diferente contendo o conteúdo do arquivo origem. Se você apagar o arquivo origem o arquivo Hard Link continua funcionando.

Ex:

-> ln [opções] <destino> <atalho>

ln /home/micro/docs.txt/ docs2

$ ls –lhi
282450 -rw-r–r– 2 user user 293 2007-06-19 00:35 docs.txt
282450 -rw-r–r– 2 user user 293 2007-06-19 00:35 docs2

Se observarmos, veremos que o Soft Link possui um “l” (ele) no inicio, isso determina que se trata de um Link Simbólico, enquanto o Hard Link tanto um arquivo como outro são praticamente iguais.

Basicamente a diferença no modo de criação esta no “-s” que é utilizado para se criar um Link Simbólico (Soft Link).

Entradas e Saídas

No Linux podemos fazer direcionamentos de Entradas e Saídas para outros arquivos.

Saídas:

O direcionamento nada mais é do que uma concatenação de um arquivo em outro, onde é utilizado dois tipos de direcionamento, o destrutivo “>” e o não-destrutivo “>>”. Qual a diferença? O direcionamento não destrutivo ira adicionar ao final do segundo arquivo o conteúdo do primeiro arquivo.

Ex:

cat arquivo1 >> arquivo2

Se digitarmos o seguinte comando

$ less arquivo2

Veremos que o arquivo1 foi adicionado ao final do arquivo2, porem se utilizarmos o direcionamento destrutivo “>”, o arquivo2 será substituído pelo conteúdo do arquivo1.

Ex:

cat arquivo1 > arquivo2

$ less arquivo2

Todo o conteúdo do arquivo2 foi removido, sendo incluído em seu lugar o conteúdo do arquivo1

Por isso muito cuidado ao utilizar esse comando. Ele é realmente necessário? Em muitos casos sim, pois você pode querer adicionar algumas linha de comando em um arquivo sem precisar ficar digitando, só precisa ficar atento ao tipo de direcionamento que você esta utilizando.

Você também pode criar uma nova entrada a partir de uma entrada padrão utilizando o teclado.

Ex:

cat >> arquivo

Será aberto um terminal donde você fará as novas entradas sendo adicionadas ao final do arquivo, e para encerrar a sua edição basta apenas pressionar Ctrl+c. Caso o arquivo não exista ele será criado para que possa ser editado.

Alguns tipos de direcionamentos

>          -> Redireciona a saída padrão para um arquivo
>>        -> Redireciona a saída padrão pra um arquivo sem apagar o conteúdo do arquivo
<          -> Redireciona a entrada padrão usando um arquivo
2>        -> Redireciona a saída de erro para arquivo
2>>      -> Redireciona a saída de erro anexando o conteúdo em um arquivo
>&2      -> Redireciona a saída padrão para saída de erro
2>&1    -> Redireciona saída de erro para saída padrão
|           -> Conecta a saída padrão na entrada padrão de outro arquivo ex: ls –la | more, este comando faz a listagem longa de arquivos que é enviado ao comando more (que tem a função de efetuar uma pausa a cada 25 linhas do arquivo). A principal diferença entre o | e o >, é que o pipe envolve processamento entre comandos, ou seja, a saída de um comando é enviada a entrada do próximo e o > redireciona a saída de um comando para um arquivo ou dispositivo.

Ex:

echo teste > arquivo.txt -> escreve TESTE em um arquivo chamado arquivo.txt porém o arquivo é apagado caso já exista

ls foo 2>> error.log      -> caso a arquivo foo não exista o comando ls falhou e a mensagem de erro é anexada em error.log

cat /etc/X11/xorg.conf | grep vesa -> Mostra na saída o arquivo /etc/X11/xorg.conf porém a saída é passada para o grep que procura o padrão “vesa” e mostra na tela a linha caso exista.

Entradas:

Abordaremos muito pouco o conceito de entradas por serem pouco utilizados, o conceito de Entrada é basicamente direcionar a entrada padrão de arquivo ou dispositivo para um comando. Estes comandos fazem o contrário dos anteriores, ele envia dados ao comando. Você pode usar os comandos anteriores para fazer esse direcionamento

Ex:

cat <teste.txt   -> Envia o conteúdo do arquivo teste.txt ao comando cat que mostrará seu conteúdo

Permissões e Propriedades do Arquivo

O chmod é utilizado para mudar a permissão de um arquivo ou diretório. Com este comando você pode escolher se usuário ou grupo terá permissão para ler, gravar, executar um arquivo ou arquivos. Sempre que um arquivo é criado, seu dono é o usuário que o criou e seu grupo é o grupo do usuário.

Sua sintaxe é:

chmod [opções] [permissões] [diretório/arquivo]

Temos três tipos de permissões, Usuários, Grupos e Outros, e vamos ver cada um deles.

U                           G                     O

rwx                      rwx                   rwx

421                      421                  421

Usuário             Usuário             Outros

dono                  grupo

Onde:

r -> read : permissão de leitura (4)

w -> write : permissão de escrita (2)

x -> executável ou acesso a diretórios (1)

a -> todos(rwx)

E como podemos observar cada um contem um valor.

Vamos entender como funciona:

U                                 G                                 U

rwx                              r-x                                r-x

421                              421                              421

O Usuário (dono do arquivo) possui os três tipos rwx

O Usuário de Grupo possui dois tipos r-x

E os Outros possuem dois tipos r-x

Então vamos as contas:

U= rwx                         G=rx                            U=rx

4+2+1 = 7                     4+1 = 5            4+1 = 5

Onde temos a permissão 755 para um determinado arquivo.

Entendeu? Não? Vamos dar mais um exemplo:

Digamos que eu dei a seguinte permissão

$ chmod 754 arquivo.txt

$ ls –l

-rwxr-xr– users users arquivo.txt

o que fizemos:

Nos demos permissão total para o Usuário Dono (ler, escrever e executar), permissão somente de leitura e execução para os Usuários de Grupo e permissão apenas de leitura para outros usuários

Outro exemplo:

rw-                               r–                                r–

421                              421                              421

4+2 = 6                        4 = 4                            4 = 4

Permissão = 644

$ chmod 644 arquivo.txt

$ls –l

-rw-r–r– users users arquivo.txt

Essa seria a forma octal de se dar permissões. Ela é bem simples, basta saber o valor determinado por cada item.

-> 0 – Nenhuma permissão de acesso

-> 1 – Permissão de execução (x).

-> 2 – Permissão de gravação (w).

-> 3 – Permissão de gravação e execução (wx).

-> 4 – Permissão de leitura (r).

-> 5 – Permissão de leitura e execução (rx).

-> 6 – Permissão de leitura e gravação (rw).

-> 7 – Permissão de leitura, gravação e execução. Equivalente a +rwx.

Há muitas formas de determinarmos o modo como as permissões são feitas

Ex:

chmod 755 arquivo.txt  -> rwx para o dono, rx para grupo e rx para outros

chmod uo+x arquivo.txt            -> determinei que o usuário dono e outros terá permissão de execução para o arquivo.txt

chmod o-r arquivo.txt   -> retirei a permissão de leitura do arquivo.txt de outros

chmod a=rw arquivo.txt            -> Defini que a permissão de todos os usuários será exatamente iguais para leitura e gravação do arquivo arquivo.txt

chmod a+rwx arquivo.txt-> defini que todos o itens terão todas a permissões(tenha cuidado com esse comando, dessa forma você está dando permissão total para o arquivo, seria a mesmo coisa que 777 (permissão total em octal)).

“+”       -> adiciona uma permissão

“-“         -> retira uma permissão

“=”        -> define a permissão exatamente como especificado.

Pode-se também modificar a permissão de uma pasta junto com suas subpastas e arquivos, basta utilizar a opção –R (recursiva)

Ex:

chmod –R 744 <pasta>

Sempre cientes de que as permissões seguem essa ordem:

ugoa    -> usuário (u), grupo (g), outros (o), todos (a).

umask (user mask)

A umask são 3 números que definem as permissões iniciais do dono, grupo e outros usuários que o arquivo ou diretório receberá quando ele foi criado ou copiado.

Vamos digitar umask sem parâmetros para vermos o valor de sua umask atual.

A umask tem efeitos diferentes caso o arquivo que estiver sendo criado for binário (um programa executável) ou texto.

Veja a tabela abaixo e veja qual é a mais adequada a sua situação:

UMASK Arquivo Diretório
Binário Texto
0 r-x rw- rwx
1 r– rw- rw-
2 r-x r– r-x
3 r– r– r–
4 –x -w- -wx
5 -w- -w-
6 –x –x
7

Um arquivo texto criado com o comando

umask 012;

touch texto.txt

receberá as permissões -rw-rw-r–, pois 0 (dono) terá permissões rw-, 1 (grupo), terá permissões rw- e 2 (outros usuários) terão permissões r–.

Observe sempre a ordem u=usuário, g=grupo, o=outros.

Um arquivo binário copiado com o comando umask 012;

cp /bin/ls /tmp/ls

receberá as permissões -r-xr–r-x (confira na tabela acima).

Por este motivo é preciso um pouco de atenção antes de escolher a umask, um valor mal escolhido poderia causar problemas de acesso a arquivos, diretórios ou programas não sendo executados.

Por padrão o valor da umask na maioria das distribuições atuais é 022.

A umask padrão no sistema Debian é a 022 .

A umask é de grande utilidade para programas que criam arquivos/diretórios temporários, desta forma pode-se bloquear o acesso de outros usuários desde a criação do arquivo, evitando recorrer ao chmod.

Agora nós vamos ver como mudamos os donos e grupo de um arquivo ou diretório.

Quando damos um comando ls, o terminal nos apresenta o seguinte formato:

-rw-r–r– 1 users users 32  Jun 5 10:30 arquivo.txt

-rw-r–r– -> tipo (arquivo, diretório,etc…) e permissões

1                      -> Número de links em cada arquivo ou diretório.

users                -> dono do arquivo ou diretório

users                -> grupo do arquivo ou diretório

32                    -> Número de Byte ocupados pelo arquivo.

Jun 5 10:30       -> Data e hora em que o arquivo ou diretório foi criado, ou alterado pela última vez.

arquivo.txt        -> arquivo propriamente dito

para mudar o dono do arquivo ou diretório usamos o comando “chown“

Ex:

chown [opções] usuário[.grupo] <arquivos…>

-R – Recursivamente

$ chown daniel.users arquivo.txt

$ ls

-rw-r–r– 1 daniel users 32  Jun 5 10:30 arquivo.txt

Para mudar o grupo do arquivo, utiliza-se o comando “chgrp”.

Ex:

chgrp [opções] grupo <arquivos…>

-R – Recursivamente

$ chgrp daniel.dono arquivo.txt

$ ls

-rw-r–r–1 daniel dono 32  Jun 5 10:30 arquivo.txt

Espero que tenha sido de grande ajuda a vocês, e espero vocês em um próximo tópico onde iremos falar um pouco mais sobre esse excelente S.O. Logo estarei de volta, falando um pouco mais e trazendo mais dicas.

Ok..

Vejo vocês em breve.

Fontes:

http://www.inf.ufpr.br/afms03/shell.html

http://www.c3sl.ufpr.br/prd-suporte/manuais/html/manual_usuario/index.html

http://www.juliobattisti.com.br/default.asp

http://focalinux.cipsga.org.br/

Últimos 5 artigos de Daniel Lima

Sobre Daniel Lima

De Campinas-SP, bacharel em Tecnologia em Análise e Desenvolvimento de Sistemas pela Faculdade Anhanguera Educacional. Atua na área desde 1994 passando por vários setores como Montagens, Configuração e Instalação de PCs e Redes e Desenvolvimento de Softwares em Delphi, C# e PHP, Banco de Dados MySql, PostgreSql, Oracle e SQL Server. Atualmente trabalho como Programador Pleno em WebSites dinâmicos em PHP/MySql/Oracle, pela mantenedora da Faculdade Anhanguera S/A, gerenciando e desenvolvendo Módulos para Moodle em EAD.

Deixe uma resposta