<chapt id="perm">Permissões de acesso a arquivos e diretórios
 <p>
As permissões de acesso protegem o sistema de 
arquivos Linux do acesso indevido de pessoas ou programas não autorizados. 
 <p>
A permissão de acesso do <prgn>GNU/Linux</prgn> também impede que um programa 
mal intencionado, por exemplo, apague um arquivo que não deve, envie arquivos 
especiais para outra pessoa ou forneça acesso da rede para que outros usuários 
invadam o sistema. O sistema <prgn>GNU/Linux</prgn> é muito seguro e como 
qualquer outro sistema seguro e confiável impede que usuários mal 
intencionados (ou iniciantes que foram enganados) instalem programas enviados 
por terceiros sem saber para que eles realmente servem e causem danos 
irreversíveis em seus arquivos, seu micro ou sua empresa. 
 <p>
Esta seção do guia, de inicio, pode ser um pouco dificil de se entender, 
então recomendo ler e ao mesmo tempo prática-la para uma ótima 
compreensão. Não se preocupe, também coloquei exemplos para 
ajuda-lo a entender o sistema de permissões de acesso do ambiente 
<prgn>GNU/Linux</prgn>. 


<sect id="perm-user-group">Donos, Grupos e outros usuários
 <p>
A idéia básica da segurança no sistema <prgn>GNU/Linux</prgn> é 
definir o acesso aos arquivos por donos, grupos e outros usuários: 
<taglist compact>
 <tag><em>dono</em></tag>
 <item>
É a pessoa que criou o arquivo ou o diretório. O nome do dono do 
arquivo/diretório é o mesmo do usuário usado para entrar 
no sistema <prgn>GNU/Linux</prgn>. Somente o dono pode modificar as 
permissões de acesso do arquivo. 
 <p>
As permissões de acesso do dono de um arquivo somente se aplicam ao 
dono do arquivo/diretório. A identificação do dono também é chamada de 
<tt>user id</tt> (UID). 
 <p>
A identificação de usuário ao qual o arquivo pertence 
é armazenada no arquivo <file>/etc/passwd</file> e do grupo no 
arquivo <file>/etc/group</file>. Estes são arquivos textos comuns e podem 
ser editados em qualquer editor de texto, mas utilize preferencialmente os 
comandos <prgn>vipw</prgn> e <prgn>vigr</prgn> que executa procedimentos 
adicionais de checagem de uids e grupos após a alteração. Tenha cuidado 
para não modificar o campo que contém a senha do usuário encriptada (que pode 
estar armazenada no arquivo <file>/etc/passwd</file> caso não estiver usando 
senhas ocultas). 


 <tag><em>grupo</em></tag>
 <item>
Permite que vários usuários diferentes tenham acesso a um 
mesmo arquivo (já que somente o dono poderia ter acesso ao arquivo). 
Cada usuário pode fazer parte de um ou mais grupos e então acessar 
arquivos que pertençam ao mesmo grupo que o seu (mesmo que estes 
arquivos tenham outro <em>dono</em>). 
 <p>
Por padrão, quando um novo usuário é criado e não especificar nenhum grupo, 
ele pertencerá ao grupo de mesmo nome do seu grupo primário (este comportamento
é controlado pelo parametro <tt>USERGROUPS=yes</tt> do arquivo 
<file>/etc/adduser.conf</file>, veja <ref id="cmdc-id">). 
A identificação do grupo é chamada de <tt>GID (<em>group id</em>)</tt>.
 <p>
Um usuário pode pertencer a um ou mais grupos. Para detalhes de como 
incluir o usuário em mais grupos veja <ref id="cmdc-incluirgrupo">.

 <tag><em>outros</em></tag>
 <item>
É a categoria de usuários que não são donos ou não pertencem ao grupo 
do arquivo. 
</taglist>
Cada um dos tipos acima possuem três tipos básicos de permissões de 
acesso que serão vistas na próxima seção. 


<sect id="perm-tipos">Tipos de Permissões de Acesso
 <p>
Quanto aos tipos de permissões que se aplicam ao <em>dono</em>, 
<em>grupo</em> e <em>outros usuários</em>, temos 3 permissões básicas: 
<list compact>
 <item>
<tt>r</tt> - Permissão de leitura para arquivos. Caso for um diretório, 
permite listar seu conteúdo (através do comando <prgn>ls</prgn>, por 
exemplo).
 
 <item>
<tt>w</tt> - Permissão de gravação para arquivos. Caso for um diretório, 
permite a gravação de arquivos ou outros diretórios dentro dele.
 <p>
Para que um arquivo/diretório possa ser apagado, é necessário o 
acesso a gravação. 

 <item>
<tt>x</tt> - Permite executar um arquivo (caso seja um programa 
executável). Caso seja um diretório, permite que seja acessado 
através do comando <prgn>cd</prgn> 
<![ %INIC-INTER [ (veja <ref id="comando-cd"> para detalhes). ]]>
</list>
As permissões de acesso a um arquivo/diretório podem ser visualizadas com 
o uso do comando <tt>ls -la</tt>. 
<![ %INIC-INTER [ Para maiores detalhes veja <ref id="comando-ls">. ]]>
As 3 letras (rwx) são agrupadas da seguinte forma:
<example>
-rwxr-xr--   gleydson   users  teste
</example>
Virou uma bagunça não? Vou explicar cada parte para entender o que quer 
dizer as 10 letras acima (da esquerda para a direita):
<list>
 <item>
A primeira letra diz qual é o tipo do arquivo. Caso tiver um "d" é um 
diretório, um "l" um link a um arquivo no sistema 
<![ %INIC-INTER [ (veja <ref id="cmdv-ln"> para detalhes) ]]>, 
um "-" quer dizer que é um arquivo comum, etc.
 
 <item>
Da segunda a quarta letra (rwx) dizem qual é a permissão de acesso ao 
<em>dono</em> do arquivo. Neste caso <em>gleydson</em> ele tem a permissão 
de ler (r - read), gravar (w - write) e executar (x - execute) o arquivo 
<file>teste</file>.

 <item>
Da quinta a sétima letra (r-x) diz qual é a permissão de acesso ao 
<em>grupo</em> do arquivo. Neste caso todos os usuários que pertencem 
ao grupo <em>users</em> tem a permissão de ler (r), e 
também executar (x) o arquivo <file>teste</file>.

 <item>
Da oitava a décima letra (r--) diz qual é a permissão de acesso para 
os <em>outros usuários</em>. Neste caso todos os usuários que não 
são donos do arquivo <file>teste</file> tem a permissão somente para ler 
o programa.
</list>
Veja o comando <ref id="perm-chmod"> para detalhes sobre 
a mudança das permissões de acesso de arquivos/diretórios.


<sect id="perm-acessando">Etapas para acesso a um arquivo/diretório
 <p>
O acesso a um arquivo/diretório é feito verificando primeiro se o usuário 
que acessará o arquivo é o seu <em>dono</em>, caso seja, as permissões 
de dono do arquivo são aplicadas. Caso não seja o <em>dono</em> do 
arquivo/diretório, é verificado se ele pertence ao grupo correspondente, caso 
pertença, as permissões do <em>grupo</em> são aplicadas. Caso não pertença ao  
<em>grupo</em>, são verificadas as permissões de acesso para os outros 
usuários que não são <em>donos</em> e não pertencem ao <em>grupo</em> 
correspondente ao arquivo/diretório. 
 <p>
Após verificar aonde o usuário se encaixa nas permissões de acesso do 
arquivo (se ele é o <em>dono</em>, pertence ao <em>grupo</em>, ou <em>outros 
usuários</em>), é verificado se ele terá permissão acesso para o que 
deseja fazer (ler, gravar ou executar o arquivo), caso não tenha, o acesso 
é negado, mostrando uma mensagem do tipo: "Permission denied" (permissão 
negada). 
 <p>
O que isto que dizer é que mesmo que você seja o dono do arquivo e 
definir o acesso do <em>dono</em> (através do comando <prgn>chmod</prgn>) 
como somente leitura (r) mas o acesso dos <em>outros usuários</em> como 
leitura e gravação, você somente poderá ler este arquivo mas os outros 
usuários poderão ler/grava-lo. 
 <p>
As permissões de acesso (leitura, gravação, execução) para donos, grupos 
e outros usuários são independentes, permitindo assim um nível de acesso 
diferenciado. Para maiores detalhes veja <ref id="perm-tipos">. 
<![ %OBS [
 <p>
Lembre-se: Somente o dono pode modificar as permissões de um arquivo/diretório! ]]>
 <p>
Para mais detalhes veja os comandos <ref id="perm-chown"> e <ref id="perm-chgrp">. 


<sect id="perm-exemplo">Exemplos práticos de permissões de acesso 
 <p>
Abaixo dois exemplos práticos de permissão de acesso: 
<ref id="perm-exemplo-a"> e a <ref id="perm-exemplo-d">. 
Os dois exemplos são explicados passo a passo para uma 
perfeita compreensão do assunto. Vamos a prática!


<sect1 id="perm-exemplo-a">Exemplo de acesso a um arquivo
 <p>
Abaixo um exemplo e explicação das permissões de acesso a um arquivo no 
<prgn>GNU/Linux</prgn> (obtido com o comando <tt>ls -la</tt>, explicarei 
passo a passo cada parte: 
 <p>
-rwxr-xr--  1  gleydson user    8192 nov 4 16:00 teste
<taglist compact>
 <tag><tt>-rwxr-xr--</tt></tag>
 <item>
Estas são as permissões de acesso ao arquivo <file>teste</file>. Um 
conjunto de 10 letras que especificam o tipo do arquivo, permissão do 
dono do arquivo, grupo do arquivo e outros usuários. Veja a explicação 
detalhada sobre cada uma abaixo:
 <taglist compact>
  <tag><strong>-</strong>rwxr-xr--</tag>
  <item>
A primeira letra (do conjunto das 10 letras) determina o tipo do arquivos.  
Se a letra for um <strong>d</strong> é um diretório, e você poderá 
acessa-lo usando o comando <prgn>cd</prgn>. Caso for um <strong>l</strong>  
é um link simbólico para algum arquivo ou diretório no sistema 
<![ %INIC-INTER [ (para detalhes veja o comando <ref id="cmdv-ln"> ]]>. 
Um <strong>-</strong> significa que é um arquivo normal.

  <tag>-<strong>rwx</strong>r-xr--</tag>
  <item>
Estas 3 letras (da segunda a quarta do conjunto das 10 letras) são as  
permissões de acesso do <em>dono</em> do arquivo <file>teste</file>. 
O dono (neste caso <em>gleydson</em>) tem a permissão para ler (r), gravar (w) 
e executar (x) o arquivo <file>teste</file>.

  <tag>-rwx<strong>r-x</strong>r--</tag>
  <item>
Estes 3 simbolos (do quinto ao sétimo do conjunto de 10) são as 
permissões de acesso dos usuários que pertencem ao <em>grupo user</em> 
do arquivo <file>teste</file>. Os usuários que pertencem ao grupo 
<em>user</em> tem a permissão somente para ler (r) e executar (x) o 
arquivo <file>teste</file> não podendo modifica-lo ou apaga-lo. 

  <tag>-rwxr-x<strong>r--</strong></tag>
  <item>
Estes 3 simbolos (do oitavo ao décimo) são as permissões de acesso para 
usuários que <strong>não</strong> são <em>donos</em> do arquivo  
<file>teste</file> e que <strong>não</strong> pertencem ao grupo  
<em>user</em>. Neste caso, estas pessoas somente terão a permissão 
para ver o conteúdo do arquivo <file>teste</file>. 
 </taglist>

 <tag><em>gleydson</em></tag>
 <item>
Nome do dono do arquivo <file>teste</file>. 

 <tag><em>user</em></tag>
 <item>
Nome do grupo que o arquivo <file>teste</file> pertence. 

 <tag><file>teste</file></tag>
 <item>
Nome do arquivo. 
</taglist>


<sect1 id="perm-exemplo-d">Exemplo de acesso a um diretório
 <p>
Abaixo um exemplo com explicações das permissões de acesso a um diretório no 
<prgn>GNU/Linux</prgn>:
 <p>
drwxr-x---  2  gleydson user    1024 nov 4 17:55 exemplo
<taglist compact>
 <tag><tt>drwxr-x---</tt></tag>
 <item>
Permissões de acesso ao diretório <file>exemplo</file>. É um conjunto de 10 
letras que especificam o tipo de arquivo, permissão do dono do diretório, 
grupo que o diretório pertence e permissão de acesso a outros usuários. Veja  
as explicações abaixo:
 <taglist compact>
  <tag><strong>d</strong>rwxr-x---</tag>
  <item>
A primeira letra (do conjunto das 10) determina o tipo do arquivo. Neste 
caso é um diretório porque tem a letra <strong>d</strong>. 

  <tag>d<strong>rwx</strong>r-x---</tag>
  <item>
Estas 3 letras (da segunda a quarta) são as permissões de acesso do 
<em>dono</em> do diretório <file>exemplo</file>. 
O dono do diretório (neste caso <em>gleydson</em>) tem a permissão para 
listar arquivos do diretório (r), gravar arquivos no diretório (w) e entrar  
no diretório (x). 

  <tag>drwx<strong>r-x</strong>---</tag>
  <item>
Estas 3 letras (da quinta a sétima) são as permissões de acesso dos  
usuários que pertencem ao <em>grupo user</em>. Os usuários que pertencem  
ao grupo <em>user</em> tem a permissão somente para listar arquivos do  
diretório (r) e entrar no diretório (x) <file>exemplo</file>. 

  <tag>drwxr-x<strong>---</strong></tag>
  <item>
Estes 3 simbolos (do oitavo ao décimo) são as permissões de acesso para  
usuários que <strong>não</strong> são <em>donos</em> do diretório 
<file>exemplo</file> e que <strong>não</strong> pertencem ao grupo 
<em>user</em>. Com as permissões acima, nenhum usuário que se encaixe  
nas condições de <em>dono</em> e <em>grupo</em> do diretório tem a  
permissão de acessa-lo. 
 </taglist>

 <tag><em>gleydson</em></tag>
 <item>
Nome do dono do diretório <file>exemplo</file>.

 <tag><em>user</em></tag>
 <item>
Nome do grupo que diretório <file>exemplo</file> pertence.

 <tag><file>exemplo</file></tag>
 <item>
Nome do diretório.
</taglist>
Para detalhes de como alterar o dono/grupo de um arquivo/diretório, veja 
os comandos <ref id="perm-chmod">, <ref id="perm-chgrp"> e  
<ref id="perm-chown">.

<![ %OBS [ 
 <p>
<strong>OBSERVAÇÕES</strong>:
<list compact>
 <item>
O usuário <tt>root</tt> não tem nenhuma restrição de acesso ao sistema.
 <item>
Se você tem permissões de gravação no diretório e tentar apagar um arquivo 
que você não tem permissão de gravação, o sistema perguntará se você 
confirma a exclusão do arquivo apesar do modo leitura. Caso você tenha 
permissões de gravação no arquivo, o arquivo será apagado por padrão sem 
mostrar nenhuma mensagem de erro (a não ser que seja especificada a opção 
-i com o comando <prgn>rm</prgn>).
 <item>
Por outro lado, mesmo que você tenha permissões de gravação em um arquivo 
mas não tenha permissões de gravação em um diretório, a exclusão do arquivo 
será negada.
</list>
Isto mostra que é levado mais em consideração a permissão de acesso do  
diretório do que as permissões dos arquivos e sub-diretórios que ele contém. 
Este ponto é muitas vezes ignorado por muitas pessoas e expõem seu sistema 
a riscos de segurança. Imagine o problema que algum usuário que não tenha 
permissão de gravação em um arquivo mas que a tenha no diretório pode causar 
em um sistema mal administrado. ]]>


<sect id="perm-especiais">Permissões de Acesso Especiais
 <p>
Em adição as três permissões básicas (rwx), existem permissões de acesso 
especiais (stX) que afetam os arquivos e diretórios: 
<list compact>
 <item>
<tt>s</tt> - Quando é usado na permissão de acesso do <em>Dono</em>, ajusta 
a identificação efetiva do usuário do processo durante a execução de 
um programa, também chamado de <em>bit setuid</em>. Não tem efeito em 
diretórios. 
 <p>
Quando <tt>s</tt> é usado na permissão de acesso do <em>Grupo</em>, 
ajusta a identificação efetiva do grupo do processo durante a execução 
de um programa, chamado de <em>bit setgid</em>. É identificado pela letra 
<tt>s</tt> no lugar da permissão de execução do grupo do arquivo/diretório. 
Em diretórios, força que os arquivos criados dentro dele pertençam ao mesmo 
grupo do diretório, ao invés do grupo primário que o usuário pertence. 
 <p>
Ambos <em>setgid</em> e <em>setuid</em> podem aparecer ao mesmo tempo no 
mesmo arquivo/diretório. A permissão de acesso especial <tt>s</tt> somente 
pode aparecer no campo <em>Dono</em> e <em>Grupo</em>. 

 <item>
<tt>S</tt> - Idêntico a "s". Significa que não existe a permissão "x"
(execução ou entrar no diretório) naquela posição. Um exemplo é o 
chmod 2760 em um diretório.
 
 <item>
<tt>t</tt> - Salva a imagem do texto do programa no dispositivo swap, assim 
ele será carregado mais rapidamente quando executado, também chamado de 
<em>stick bit</em>. 
 <p>
Em diretórios, impede que outros usuários removam arquivos dos quais não 
são donos. Isto é chamado de colocar o diretório em modo <tt>append-only</tt>. 
Um exemplo de diretório que se encaixa perfeitamente nesta condição é o 
<file>/tmp</file>, todos os usuários devem ter acesso para que seus 
programas possam criar os arquivos temporários lá, mas nenhum pode apagar 
arquivos dos outros. 
A permissão especial <tt>t</tt>, pode ser especificada somente 
no campo outros usuários das permissões de acesso. 

 <item>
 <tt>T</tt> - Idêntico a "t". Significa que não existe a permissão "x"
 naquela posição (por exemplo, em um chmod 1776 em um diretório).

 <item>
<tt>X</tt> - Se você usar <tt>X</tt> ao invés de <tt>x</tt>, a permissão de 
execução somente é aplicada se o arquivo já tiver permissões de execução. Em 
diretórios ela tem o mesmo efeito que a permissão de execução <tt>x</tt>. 
</list> 

<![ %EXEMPLO [
 <p>
<list>
 <item>
Exemplo da permissão de acesso especial <tt>X</tt>:
 <enumlist compact>
<item>Crie um arquivo <file>teste</file> (digitando <tt>touch teste</tt>) 
e defina sua permissão para <tt>rw-rw-r--</tt> 
(<tt>chmod ug=rw,o=r teste</tt> ou <tt>chmod 664 teste</tt>). 
<item>Agora use o comando <tt>chmod a+X teste</tt>
<item>digite <tt>ls -l</tt>
<item>Veja que as permissões do arquivo não foram afetadas.
<item>agora digite <tt>chmod o+x teste</tt>
<item>digite <tt>ls -l</tt>, você colocou a permissão de execução para os 
outros usuários.
<item>Agora use novamente o comando <tt>chmod a+X teste</tt> 
<item>digite <tt>ls -l</tt>
<item>Veja que agora a permissão de execução foi concedida a todos os 
usuários, pois foi verificado que o arquivo era executável (tinha permissão 
de execução para outros usuários). 
<item>Agora use o comando <tt>chmod a-X teste</tt>
<item>Ele também funcionará e removerá as permissões de execução de todos os 
usuários, porque o arquivo <file>teste</file> tem permissão de execução 
(confira digitando <tt>ls -l</tt>). 
<item>Agora tente novamente o <tt>chmod a+X teste</tt> 
<item>Você deve ter reparado que a permissão de acesso especial <tt>X</tt> é 
semelhante a <tt>x</tt>, mas somente faz efeito quanto o arquivo já 
tem permissão de execução para o dono, grupo ou outros usuários. 
</enumlist>

Em diretórios, a permissão de acesso especial <tt>X</tt> funciona da 
mesma forma que <tt>x</tt>, até mesmo se o diretório não tiver nenhuma 
permissão de acesso (<tt>x</tt>). 
</list> ]]>


<sect id="perm-root">A conta root
 <p>
<em>Esta seção foi retirada do Manual de Instalação da Debian</em>. 
 <p>
A conta root é também chamada de <em>super usuário</em>, este é um login  
que não possui restrições de segurança. A conta root somente deve ser  
usada para fazer a administração do sistema, e usada o menor tempo  
possível. 
 <p>
Qualquer senha que criar deverá conter de 6 a 8 caracteres (em 
sistemas usando crypto) ou até frases inteiras (caso esteja 
usando MD5, que garante maior segurança), e também poderá conter letras 
maiúsculas e minúsculas, e também caracteres de pontuação. Tenha um cuidado 
especial quando escolher sua senha root, porque ela é a conta mais poderosa. 
Evite palavras de dicionário ou o uso de qualquer outros dados pessoais que 
podem ser adivinhados. 
 <p>
Se qualquer um lhe pedir senha root, seja extremamente cuidadoso. Você  
normalmente nunca deve distribuir sua conta root, a não ser que esteja  
administrando um computador com mais de um administrador do sistema. 
 <p>
Utilize uma conta de usuário normal ao invés da conta root para 
operar seu sistema. Porque não usar a conta root? Bem, uma razão para  
evitar usar privilégios root é por causa da facilidade de se cometer  
danos irreparáveis como root. Outra razão é que você pode ser enganado  
e rodar um programa <em>Cavalo de Tróia</em> -- que é um programa que  
obtém poderes do <em>super usuário</em> para comprometer a segurança do 
seu sistema sem que você saiba. 


<sect id="perm-chmod">chmod
 <p>
Muda a permissão de acesso a um arquivo ou diretório. Com este comando você 
pode escolher se usuário ou grupo terá permissões para ler, gravar, executar  
um arquivo ou arquivos. 
<![ %DESCRICAOD [ Sempre que um arquivo é criado, seu dono é o usuário 
que o criou e seu grupo é o grupo do usuário (exceto para diretórios 
configurados com a permissão de grupo <tt>"s"</tt>, será visto adiante). ]]> 
 <p>
<tt>chmod [<em>opções</em>] [<em>permissões</em>] [<em>diretório/arquivo</em>]</tt>
 <p>
<![ %OPCOES [
Onde:
<taglist compact>
 <tag><em>diretório/arquivo</em></tag>
 <item>
Diretório ou arquivo que terá sua permissão mudada.

 <tag><em>opções</em></tag>
 <tag>-v, --verbose</tag>
 <item>
Mostra todos os arquivos que estão sendo processados.

 <tag>-f, --silent</tag>
 <item>
Não mostra a maior parte das mensagens de erro.

 <tag>-c, --change</tag>
 <item>
Semelhante a opção -v, mas só mostra os arquivos que tiveram as permissões 
alteradas.

 <tag>-R, --recursive</tag>
 <item>
Muda permissões de acesso do <em>diretório/arquivo</em> no diretório atual e 
sub-diretórios.

 <tag><em>permissões</em></tag>
 <tag>ugoa+-=rwxXst</tag>
 <item>
 <list>
  <item>
<em>ugoa</em> - Controla que nível de acesso será mudado. Especificam, em 
ordem, usuário (u), grupo (g), outros (o), todos (a). 

  <item>
<em>+-=</em> - <em>+</em> coloca a permissão, <em>-</em> retira a 
permissão do arquivo e <em>=</em> define a permissão exatamente como 
especificado. 

  <item>
rwx - <em>r</em> permissão de leitura do arquivo. <em>w</em> permissão 
de gravação. <em>x</em> permissão de execução (ou acesso a diretórios).  
 </list>

</taglist>
]]>
<prgn>chmod</prgn> não muda permissões de links simbólicos, as permissões 
devem ser mudadas no arquivo alvo do link. Também podem ser usados 
códigos numéricos octais para a mudança das permissões de acesso a 
arquivos/diretórios. Para detalhes veja <ref id="perm-octal">. 
<![ %OBS [
 <p>
DICA: É possível copiar permissões de acesso do arquivo/diretório, 
por exemplo, se o arquivo <file>teste.txt</file> tiver a permissão 
de acesso <tt>r-xr-----</tt> e você digitar <tt>chmod o=u</tt>, 
as permissões de acesso dos outros usuários (o) serão idênticas ao 
do dono (u). Então a nova permissão de acesso do arquivo 
<file>teste.txt</file> será <tt>r-xr--r-x</tt> ]]>
<![ %EXEMPLO [
 <p>
Exemplos de permissões de acesso: 
<taglist compact>
 <tag><tt>chmod g+r *</tt></tag>
 <item>
Permite que todos os usuários que pertençam ao grupo dos arquivos (g) 
tenham (+) permissões de leitura (r) em todos os arquivos do diretório 
atual.
 
 <tag><tt>chmod o-r teste.txt</tt></tag>
 <item>
Retira (-) a permissão de leitura (r) do arquivo <file>teste.txt</file> para 
os outros usuários (usuários que não são donos e não pertencem ao grupo 
do arquivo <file>teste.txt</file>).

 <tag><tt>chmod uo+x teste.txt</tt></tag>
 <item>
Inclui (+) a permissão de execução do arquivo <file>teste.txt</file> para
o dono e outros usuários do arquivo.

 <tag><tt>chmod a+x teste.txt</tt></tag>
 <item>
Inclui (+) a permissão de execução do arquivo <file>teste.txt</file> para 
o dono, grupo e outros usuários.

 <tag><tt>chmod a=rw teste.txt</tt></tag>
 <item>
Define a permissão de todos os usuários exatamente (=) para leitura 
e gravação do arquivo <file>teste.txt</file>. 

</taglist> ]]>


<sect id="perm-chgrp">chgrp
 <p>
Muda o grupo de um arquivo/diretório.
 <p>
<tt>chgrp [<em>opções</em>] [grupo] [arquivo/diretório]</tt>
<![ %OPCOES [
 <p>
Onde:
<taglist compact>
 <tag><em>grupo</em></tag>
 <item>
Novo grupo do <em>arquivo/diretório</em>.

 <tag><em>arquivo/diretório</em></tag>
 <item>
Arquivo/diretório que terá o grupo alterado.

 <tag><em>opções</em></tag>
 <tag>-c, --changes</tag>
 <item>
Somente mostra os arquivos/grupos que forem alterados.

 <tag>-f, --silent</tag>
 <item>
Não mostra mensagens de erro para arquivos/diretórios que não puderam ser 
alterados.

 <tag>-v, --verbose</tag>
 <item>
Mostra todas as mensagens e arquivos sendo modificados.

 <tag>-R, --recursive</tag>
 <item>
Altera os grupos de arquivos/sub-diretórios do diretório atual.  
</taglist>
]]>
 

<sect id="perm-chown">chown
 <p>
Muda dono de um arquivo/diretório. Opcionalmente pode também ser usado para 
mudar o grupo. 
 <p>
<tt>chown [<em>opções</em>] [dono.grupo] [diretório/arquivo]</tt>
 <p>
<![ %OPCOES [
onde:
<taglist compact>
 <tag><em>dono.grupo</em></tag>
 <item>
Nome do <em>dono.grupo</em> que será atribuído ao <em>diretório/arquivo</em>. 
O grupo é opcional. 

 <tag><em>diretório/arquivo</em></tag>
 <item>
Diretório/arquivo que o dono.grupo será modificado.

 <tag><em>opções</em></tag>
 <tag>-v, --verbose</tag>
 <item>
Mostra os arquivos enquanto são alterados.

 <tag>-f, --supress</tag>
 <item>
Não mostra mensagens de erro durante a execução do programa.

 <tag>-c, --changes</tag>
 <item>
Mostra somente arquivos que forem alterados.

 <tag>-R, --recursive</tag>
 <item>
Altera dono e grupo de arquivos no diretório atual e sub-diretórios.

</taglist>
]]>
O <em>dono.grupo</em> pode ser especificado usando o nome de grupo ou o  
código numérico correspondente ao grupo (GID). 
<![ %OBS [
 <p>
Você deve ter permissões de gravação no diretório/arquivo para alterar 
seu dono/grupo. ]]>
<![ %EXEMPLO [
 <p>
<list compact>
 <item>
<tt>chown gleydson teste.txt</tt> - Muda o dono do arquivo  
<file>teste.txt</file> para <tt>gleydson</tt>.

 <item>
<tt>chown gleydson.foca teste.txt</tt> - Muda o dono do arquivo  
<file>teste.txt</file> para <tt>gleydson</tt> e seu grupo para <tt>foca</tt>.

 <item>
<tt>chown -R gleydson.focalinux *</tt> - Muda o dono/grupo dos arquivos do 
diretório atual e sub-diretórios para <tt>gleydson/focalinux</tt> (desde que 
você tenha permissões de gravação no diretórios e sub-diretórios).
</list> ]]>


<sect id="perm-octal">Modo de permissão octal
 <p>
Ao invés de utilizar os modos de permissão <tt>+r</tt>, <tt>-r</tt>, etc, 
pode ser usado o modo octal para se alterar a permissão de acesso a 
um arquivo. O modo octal é um conjunto de oito números onde cada número 
define um tipo de acesso diferente. 
 <p>
É mais flexível gerenciar permissões de acesso usando o modo octal ao invés 
do comum, pois você especifica diretamente a permissão do dono, grupo, outros 
ao invés de gerenciar as permissões de cada um separadamente. 
Abaixo a lista de permissões de acesso octal: 
<list compact>
 <item><tt>0</tt> - Nenhuma permissão de acesso. Equivalente a -rwx.
 <item><tt>1</tt> - Permissão de execução (x). 
 <item><tt>2</tt> - Permissão de gravação (w).
 <item><tt>3</tt> - Permissão de gravação e execução (wx). Equivalente a permissão 2+1
 <item><tt>4</tt> - Permissão de leitura (r).
 <item><tt>5</tt> - Permissão de leitura e execução (rx). Equivalente a permissão 4+1
 <item><tt>6</tt> - Permissão de leitura e gravação (rw). Equivalente a permissão 4+2
 <item><tt>7</tt> - Permissão de leitura, gravação e execução. Equivalente a +rwx (4+2+1).

</list>
O uso de um deste números define a permissão de acesso do <em>dono</em>, 
<em>grupo</em> ou <em>outros usuários</em>. Um modo fácil de entender 
como as permissões de acesso octais funcionam, é através da seguinte tabela: 
<example>
1 = Executar
2 = Gravar
4 = Ler

* Para Dono e Grupo, multiplique as permissões acima por x100 e x10.
</example>
<![ %INTER-AVANC [ 
e para as permissões de acesso especiais: 
<example>
1000 = Salva imagem do texto no dispositivo de troca
2000 = Ajusta o bit setgid na execução
4000 = Ajusta o bit setuid na execução

</example> 
]]>
Basta agora fazer o seguinte:
<list compact>
 <item>Somente permissão de execução, use 1.  
 <item>Somente a permissão de leitura, use 4. 
 <item>Somente permissão de gravação, use 2.
 <item>Permissão de leitura/gravação, use 6 (equivale a 2+4 / Gravar+Ler). 
 <item>Permissão de leitura/execução, use 5 (equivale a 1+4 / Executar+Ler).
 <item>Permissão de execução/gravação, use 3 (equivale a 1+2 / Executar+Gravar).
 <item>Permissão de leitura/gravação/execução, use 7 
 (equivale a 1+2+4 / Executar+Gravar+Ler). 
 <![ %INTER-AVANC [ 
 <item>Salvar texto no dispositivo de troca, use 1000.
 <item>Ajustar bit setgid, use 2000.
 <item>Ajustar bip setuid, use 4000.
 <item>Salvar texto e ajustar bit setuid, use 5000 
 (equivale a 1000+4000 / Salvar texto + bit setuid).
 <item>Ajustar bit setuid e setgid, use 6000 
 (equivale a 4000+2000 / setuid + setgid).
 ]]>
</list>
Vamos a prática com alguns exemplos:
<example>
"chmod 764 teste"
</example>
Os números são interpretados da <strong>direita para a esquerda</strong> como 
permissão de acesso aos <em>outros usuários</em> (4), <em>grupo</em> (6), e 
<em>dono</em> (7).  
O exemplo acima faz os <em>outros usuários</em> (4) terem acesso somente 
leitura (r) ao arquivo <file>teste</file>, o <em>grupo</em> (6) ter a  
permissão de leitura e gravação (w), e o <em>dono</em> (7) ter permissão 
de leitura, gravação e execução (rwx) ao arquivo <file>teste</file>. 
 <p>
Outro exemplo:
<example>
"chmod 40 teste"
</example>
O exemplo acima define a permissão de acesso dos <em>outros usuários</em> 
(0) como nenhuma, e define a permissão de acesso do <em>grupo</em> (4) como  
somente leitura (r). Note usei somente dois números e então a permissão de  
acesso do <em>dono</em> do arquivo <tt>não</tt> é modificada (leia  
as permissões de acesso da direita para a esquerda!). 
Para detalhes veja a lista de permissões de acesso em modo octal no inicio 
desta seção. 
 <p>
<example>
"chmod 751 teste"
</example>
O exemplo acima define a permissão de acesso dos <em>outros usuários</em> (1) 
para somente execução (x), o acesso do <em>grupo</em> (5) como leitura e 
execução (rx) e o acesso do <em>dono</em> (7) como leitura, gravação e 
execução (rwx). 
<![ %INTER-AVANC [ 
 <p>
<example>
"chmod 4751 teste"
</example>
O exemplo acima define a permissão de acesso dos <em>outros usuários</em> 
(1) para somente execução (x), acesso do <em>grupo</em> (5) como leitura 
e execução (rx), o acesso do <em>dono</em> (7) como leitura, gravação e 
execução (rwx) e ajusta o bit setgid (4) para o arquivo <file>teste</file>. 
]]>  


<sect id="perm-umask">umask
 <p>
A umask (<em>user mask</em>) são 3 números que definem as permissões iniciais 
do <tt>dono</tt>, <tt>grupo</tt> e <tt>outros usuários</tt> que o arquivo/diretório 
receberá quando for criado ou copiado para um novo local. Digite 
<tt>umask</tt> sem parâmetros para retornar o valor de sua umask atual. 
 <p>
A umask tem efeitos diferentes caso o arquivo que estiver sendo 
criado for <em>binário</em> (um programa executável) ou <em>texto</em> 
<![ %INICIANTE [ (<ref id="basico-arquivo-bintext">) ]]>. 
Veja a tabela a seguir para ver qual é a mais adequada a sua situação: 
<example>
---------------------------------------------
|       |        ARQUIVO       | DIRETÓRIO  |
| UMASK |----------------------|            |
|       |   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   |    ---     |   ---   |    ---     |
---------------------------------------------
</example>
Um <em>arquivo texto</em> criado com o comando <tt>umask 012;touch texto.txt</tt> 
receberá as permissões <tt>-rw-rw-r--</tt>, pois 0 (dono) terá permissões 
<tt>rw-</tt>, 1 (grupo), terá permissões <tt>rw-</tt> e 2 (outros usuários) 
terão permissões <tt>r--</tt>. Um <em>arquivo binário</em> copiado com o comando 
<tt>umask 012;cp /bin/ls /tmp/ls</tt> receberá as permissões <tt>-r-xr--r-x</tt> 
(confira com a tabela acima). 
 <p>
Por este motivo é preciso 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. O valor padrão da umask na maioria das 
distribuições atuais é 022.
A umask padrão no sistema <![ %DEBIAN [ Debian ]]> é a <![ %DEBIAN [ 022 ]]>. 
 <p>
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 <prgn>chmod</prgn>. 

