Tópico 5: Segurança e Permissões de Arquivos
Peso: 7
5.1: Segurança Básica e Identificação de Tipos de Usuários
Peso: 2
O Linux é um sistema operacional multiusuário. Como o nome sugere, esse tipo de sistema operacional permite que diferentes usuários utilizem o sistema de modo independente. Ou seja, diferentes pessoas podem utilizar o mesmo sistema operacional sem que seus arquivos e personalizações estejam acessíveis a outros usuários.
Diferentes usuários podem utilizar o sistema operacional ao mesmo tempo. Apesar de não ser comum um mesmo computador possuir mais de um teclado e monitor, é bastante comum que diversos usuários utilizem o mesmo sistema via rede.
Outra vantagem em manter os usuários em contas distintas é poder controlar seus privilégios dentro do sistema. Um usuário deve poder trabalhar com seus arquivos e ter acesso restrito a certos recursos do computador, mas não deve ter acesso a arquivos de terceiros ou a recursos que podem prejudicar o funcionamento do sistema operacional. O único usuário que possui acesso irrestrito dentro do sistema operacional é o usuário root.
O usuário root
O principal usuário de um sistema Unix é o usuário chamado root. Ele é criado por padrão e é utilizado para configurar o sistema operacional e corrigir eventuais problemas. Também é o único usuário cujo diretório pessoal não está no diretório padrão de usuários, /home
, mas na raiz do sistema de arquivos, em /root
.
Senha de root
A senha do usuário root normalmente é definida durante a instalação do sistema operacional. Em alguns casos, não é atribuída uma senha ao usuário root, e será necessário utilizar o comando
sudo
para realizar operações de root.
Devido ao seu poder irrestrito no sistema operacional, é importante ter muito cuidado quando utilizando o usuário root. Mesmo tratando-se de um computador pessoal utilizado por apenas uma pessoa, é recomendável operar o computador com um usuário convencional.
Usuários convencionais e de sistema
É o usuário root o responsável por criar usuários no sistema local. Todas as contas de usuário são armazenadas no arquivo de configuração /etc/passwd
. O usuário root também pode associar um usuário a um grupo para lhe conferir privilégios extras. Os grupos do sistema e os usuários a eles associados são armazenados no arquivo /etc/group
.
Todo usuário está associado a pelo menos um grupo, chamado seu grupo principal. O grupo principal é único, mas o usuário pode estar associado e diversos outros grupos.
Cada usuário e grupo possuem um número único associado, chamado respectivamente UID e GID. O único usuário com um número padrão é o root, com número UID 0. Os números de um usuário e de seus grupos podem ser observados com o comando id
. Sem argumento, o comando id
exibe o número do usuário atual e os grupos aos quais pertence:
$ id
uid=13130(lcnsqr) gid=207(bmac) groups=207(bmac)
Neste exemplo, o número (uid) do usuário lcnsqr é 13130, o número de seu grupo principal (bmac) é 207 e está associado somente a este grupo. Os números são gerados automaticamente, geralmente sendo atribuídos números a partir de 1000 para usuários convencionais.
Usuários comuns podem executar tarefas normalmente reservadas ao root com o comando sudo
. Por exemplo, para utilizar o comando administrativo apt-get dist-upgrade
com o sudo
:
$ sudo apt-get dist-upgrade
O sudo
pode ser configurado para restringir diferentes tipos de ação a usuário específicos, solicitando ou não uma senha. Ele também pode ser usado com o comando su
para iniciar uma nova sessão do shell como outro usuário, com o comando sudo su usuário
, onde usuário é o nome de login do outro usuário. Caso a conta do root tenha uma senha definida, pode ser utilizado o comando su
diretamente:
$ su -
Nesse caso será necessário fornecer a senha do root para prosseguir.
Além dos usuários convencionais, existem usuários especiais chamados usuários de sistema. Estes usuários não correspondem a uma pessoa, mas a alguma tarefa do sistema operacional. Essa abordagem oferece uma camada adicional de segurança, pois programas executados por um usuário não podem interferir com arquivos e processos que não lhe pertencem.
Inspeção de usuários
O usuário root pode interferir em processos de outros usuários e modificar seus arquivos. O root pode até checar quem está usando o sistema com o comando who
. Com o comando w
o usuário root pode verificar quem está utilizando o sistema e sua atividade no momento.
O comando lastlog
exibe quando foi a última vez que cada usuário entrou no sistema:
$ lastlog -t 2
Nome de Usuário Porta De Último
guilherme pts/1 143.107.45.1 Qua Fev 27 09:14:45 -0300 2019
lucas pts/1 143.107.45.1 Ter Fev 26 10:23:34 -0300 2019
gustavo pts/1 143.107.45.1 Ter Fev 26 19:47:28 -0300 2019
afranio pts/2 143.107.45.1 Ter Fev 26 19:17:22 -0300 2019
filipe pts/1 c-73-208-7-86.hs Ter Fev 26 15:39:21 -0300 2019
willian pts/1 179.225.189.179 Qua Fev 27 08:57:10 -0300 2019
lcnsqr pts/2 189.79.126.38 Qua Fev 27 09:57:19 -0300 2019
A opção -t 2
foi utilizada para limitar a inspeção aos últimos dois dias. É possível verificar a partir de onde o usuário ingressou no sistema e qual foi a data e hora exatas do login.
O comando last
possui finalidade semelhante, mas exibindo os últimos ingressos de usuários no sistema. Para verificar os últimos ingressos de um usuário específico, basta fornecer seu nome de usuário como argumento:
$ last lcnsqr
lcnsqr pts/2 189.79.126.38 Wed Feb 27 09:57 still logged in
lcnsqr pts/1 189.79.126.38 Tue Feb 26 17:27 - 17:32 (00:04)
lcnsqr pts/1 189.79.126.38 Tue Feb 26 16:29 - 17:15 (00:46)
lcnsqr pts/0 189.79.126.38 Wed Feb 20 16:24 - 16:27 (00:02)
lcnsqr pts/0 189.79.126.38 Wed Feb 20 16:24 - 16:24 (00:00)
wtmp begins Fri Feb 1 13:48:21 2019
O comando last reboot
mostra quando o sistema foi ligado pela última vez, ou seja, desde quando está ligado. O usuário root pode verificar também se houveram tentativas mal sucedidas de ingresso no sistema com o comando lastb
.
5.2: Criação de Usuários e Grupos
Peso: 2
Em ambientes onde mais de uma pessoa utiliza o computador ou utiliza os recursos fornecidos por ele via rede, é muito importante que cada uma delas possua restrições para que não comprometa dados sensíveis, sejam eles pertinentes ao próprio sistema, sejam pertinentes a outros usuários. Para isso, para cada usuário é criada uma conta com a qual ele acessará o sistema.
Cabe ao usuário root administrar as contas e grupos de usuários. Contudo, o próprio usuário pode modificar alguns aspectos de sua própria conta no sistema.
Conta de usuário
O comando useradd
é usado pelo usuário root para criar uma nova conta no sistema. As principais opções do useradd
são:
-c comentário
: comentário (geralmente o nome completo do usuário).-d diretório
: caminho para o diretório pessoal do usuário.-g grupo
: grupo inicial (GID). Precisa existir previamente n sistema.-G grupol,grupo2
: grupos adicionais, separados por vírgula.-u UID
: UID (User ID) do usuário.-s shell
: Shell padrão para o usuário.-p senha
: senha (entre aspas).-e data
: data de validade da conta.-k /etc/skel
: copia o diretório modelo/etc/skel
.-m
: cria o diretório pessoal, se não existir.
Com a opção -k /etc/skel
novos diretórios pessoais podem ser criados a partir de um conteúdo padrão armazenado em /etc/skel
. Esse procedimento facilita a criação de várias contas de usuário a partir de um perfil pré-definido.
Para que o usuário possa acessar sua conta, o administrador precisará definir uma senha para ele. Isso pode ser feito por meio do comando passwd usuário
. Usado sem argumentos, passwd
altera a senha para o usuário atual, o que pode ser feito por um usuário comum. O passwd
também pode ser utilizado pelo usuário root para bloquer a conta de um usuário. Por exemplo, a conta do usuário luciano pode ser bloqueada com o comando passwd -l luciano
. A conta poderá ser desbloqueada com o comando passwd -u luciano
.
O campo de descrição pode ser alterado com o comando chfn
e o shell principal pode ser alterado com chsh
. Usuários comuns podem usar estes comandos para alterar exclusivamente suas próprias contas.
Uma conta de usuário pode ser apagada com o comando userdel
. A opção -r
assegura que o diretório pessoal do usuário também seja apagado.
As informações de conta dos usuários do sistema são armazenadas no arquivo /etc/passwd
, no formato:
root:x:0:0::/root:/bin/bash
luciano:x:1000:1000:Luciano Antonio Siqueira:/home/luciano:/bin/bash
Cada usuário é definido em uma linha, em campos separados por “:” representando, respectivamente:
- Nome de Login.
- Senha (“x”quando usando o arquivo
/etc/shadow
). - Número de identificação do usuário (UID).
- Número do grupo principal do usuário (GID).
- Descrição do usuário (opcional).
- Diretório pessoal para o usuário.
- Shell inicial do usuário (se vazio, o arquivo padrão
/bin/sh
será usado).
Para editar diretamente o arquivo /etc/passwd
, é recomendado usar o comando vipw
, que bloqueia o arquivo /etc/passwd
contra possíveis alterações concorrentes, evitando corrupção do arquivo. A edição será feita com o editor padrão, via de regra o editor vi. Usado com a opção -s
, vipw
abrirá para edição o arquivo /etc/shadow
.
Senhas shadow
O arquivo /etc/passwd
pode ser lido por qualquer usuário, o que pode tornar as senhas criptografadas passíveis de decodificação. Para evitar essa possibilidade, é usado um segundo arquivo, acessível apenas ao usuário root, o arquivo /etc/shadow
. As senhas dos usuários são armazenadas num hash criptografado que não pode ser facilmente decodificado.
Como no arquivo /etc/passwd
, os campos no arquivo /etc/shadow
são separados por “:”, correspondendo a:
- Nome de usuário, que deve corresponder a um nome válido em
/etc/passwd
. - A senha criptografada. Em branco permite login sem senha. Com um asterisco “*” indica que a conta está bloqueada.
- O número de dias (desde 01/01/1970) desde que a senha foi alterada.
- Número mínimo de dias até que uma senha possa ser novamente alterada. O número zero “0” permite alterar a senha sem tempo de espera.
- Número de dias depois dos quais a senha deverá ser alterada. Por padrão, 99999, ou 274 anos.
- Número de dias para informar ao usuário sobre a expiração da senha.
- Número de dias, depois de a senha expirar, até que a conta seja bloqueada.
- O número de dias, a partir de 01/01/1970, desde que a conta foi bloqueada.
- Campo reservado.
As informações referentes à validade da senha também podem ser modificadas por meio do programa chage
, com as seguintes opções:
-m dias
: mínimo de dias até que o usuário possa trocar uma senha modificada.-M dias
: número máximo de dias que a senha permanecerá válida.-d dias
: número de dias decorridos em relação a 01/01/1970. Determina quando a senha foi mudada. Também pode ser expresso no formato de data local (dia/mês/ano).-E dias
: número de dias decorridos em relação a 01/01/1970, a partir dos quais a conta não estará mais disponível. Também pode ser expresso no formato de data local (dia/mês/ano).-I dias
: inatividade ou tolerância de dias, após a expiração da senha, para que a conta seja bloqueada.-W dias
: dias anteriores ao fim da validade da senha, quando será emitido um aviso sobre a expiração da validade.
Para usuários comuns, o chage
só pode ser usado com a opção -l usuário
, que mostra as restrições referentes ao usuário em questão. O comando usermod
agrega as funções de alteração de conta de usuário por meio das opções:
-c descrição
: descrição do usuário.-d diretório
: altera diretório do usuário. Com o argumento-m
, move o conteúdo do diretório atual para o novo.-e valor
: prazo de validade da conta, especificado no formato dd/mm/aaaa.-f valor
: número de dias, após a senha ter expirado, até que a conta seja bloqueada. Um valor-1
cancela essa função.-g grupo
: grupo principal do usuário.-G grupo1,grupo2
: grupos adicionais para o usuário.-l nome
: nome de login do usuário.-p senha
: senha.-u UID
: número de identificação (UID) do usuário.-s shell
: shell padrão do usuário.-L
: bloqueia a conta do usuário, colocando um sinal ! na frente da senha criptografada. Uma alternativa é substituir o shell padrão do usuário por um script ou programa que informe as razões do bloqueio.-U
: desbloqueia a conta do usuário, retirando o sinal ! da frente da senha criptografada.
Os arquivos /etc/passwd
e /etc/shadow
armazenam somente as informações diretamente relacionadas a cada conta de usuários. Grupos de usuários são configurados em seus próprios arquivos de configuração.
Grupos de usuários
Para criar um grupo de usuários, é usado o comando groupadd
:
# groupadd estudo_c
O número de identificação do grupo (GID) pode ser especificado com a opção -g
. Para excluir um grupo, é usado o comando groupdel
:
# groupdel estudo_c
Um usuário poderá ser incluído/excluído de um grupo com o comando gpasswd
, utilizando o argumento adequado. As opções mais comuns do gpasswd
são:
gpasswd grupo
: cria uma senha para grupo.gpasswd -r grupo
: apaga a senha para grupo.gpasswd -a usuário grupo
: associa usuário ao grupo.gpasswd -d usuário grupo
: exclui usuário de grupo.gpasswd -A usuário grupo
: torna um usuário administrador de grupo.
Um usuário pode pertencer a mais de um grupo, mas apenas um grupo pode ser o principal. Para mostrar os grupos aos quais um usuário pertence, pode ser usado o comando groups usuário
. Usado sem argumentos, o comando groups
mostra os grupos do usuário atual.
As informações sobre os grupos existentes no sistema são armazenadas no arquivo /etc/group
. Neste arquivo, cada grupo é definido em uma linha, em campos separados por :, representando:
- Nome do grupo.
- Senha para o grupo (x se utilizar
/etc/gshadow
). - Número de identificação do grupo (GID).
- Lista de membros do grupo, separados por vírgula.
Para editar diretamente o arquivo /etc/group
, é altamente indicado usar o comando vigr
, que bloqueia o arquivo /etc/group
contra possíveis alterações externas, evitando corrupção do arquivo.
O comando groupmod
agrega algumas funções de alteração de grupos. Suas opções mais comuns são:
-g GID
: altera o número (GID) do grupo.-n nome
: altera o nome do grupo.
A principal finalidade dos grupos é permitir que usuários executem atividades que não são permitidas fora do grupo em questão. Essas atividades estão relacionadas principalmente à leitura e escrita em arquivos e diretórios restritos. Portanto, é importante compreender como funciona o sistema de permissões de arquivos em ambientes Unix.
5.3: Controle de Permissões e Propriedade de Arquivos
Peso: 2
Em sistemas de arquivos do padrão Unix, existem regras de permissões que determinam a quem pertence um determinado arquivo ou diretório e quais usuários ou grupos podem utilizá-los. Para arquivos e diretórios há três níveis de permissão:
- Usuário dono do arquivo (u).
- Grupo dono do arquivo (g).
- Demais usuários – outros – (o).
O diretório /var/run
contém arquivos com diferentes tipos de permissões, identificadas na primeira coluna:
drwx------ 2 root root 40 fev 26 10:08 cryptsetup
drwxr-xr-x 3 root lp 80 fev 26 10:08 cups
srw-rw-rw- 1 root root 0 fev 26 10:08 .heim_org.h5l.kcm-socket
drwxrwxr-x 2 lightdm lightdm 40 fev 26 10:08 lightdm
drwxr-x--- 2 root root 40 fev 26 10:08 pptp
-rw-r--r-- 1 root root 4 fev 26 10:08 crond.pid
drwx------ 2 root root 40 fev 26 10:51 udisks2
srw-rw-rw- 1 root root 0 fev 26 10:08 secrets.socket
drwxr-x--- 2 chrony chrony 80 fev 27 09:00 chrony
prw------- 1 root root 0 fev 26 10:08 dmeventd-server
drwx------ 2 rpc rpc 60 fev 26 10:08 rpcbind
drwxrwxr-x 2 root root 40 fev 26 10:08 netreport
-rw-r--r-- 1 root root 5 fev 27 09:00 dhclient6-enp0s25.pid
prw------- 1 root root 0 fev 26 10:08 initctl
A primeira letra representa o tipo do arquivo, podendo ser:
-
: Arquivo convencional.d
: Diretório.l
: Link simbólico.c
: Dispositivo especial de caracteres.p
: Canal fifo.s
: Socket.
As demais letras são divididas em grupos de três, determinando as permissões para o dono do arquivo, o grupo do arquivo e demais usuários, respectivamente. O arquivo crond.pid
, por exemplo, possui permissão rw-
para o dono do arquivo (o usuário root), permissão r--
para o grupo (o grupo root) e permissão r--
para os demais usuários.
Alterando permissões
As permissões são alteradas com o comando chmod
e podem ser de leitura (r), escrita (w) e execução (x). Por exemplo, o grupo ao qual pertence um arquivo chamado documentos.tar.gz
terá apenas acesso de leitura a este e para os demais usuários será retirada a permissão de leitura:
$ chmod g=r,o-r documentos.tar.gz
Para incluir permissão de escrita para o grupo do arquivo documentos.tar.gz
:
$ chmod g+w documentos.tar.gz
Apesar de possuírem o mesmo modelo de permissões, arquivos e diretórios comportam-se de maneiras diferentes tendo as mesmas permissões. Em diretórios, a permissão r possibilita ler o conteúdo do diretório, a permissão w permite criar arquivos dentro do diretório e x permite listar o conteúdo do diretório.
Permissões numéricas (octais)
Permissões podem ser manejadas de modo mais sucinto através de um formato numérico, chamado octal. O número octal consiste em uma sequencia de quatro dígitos. O primeiro dígito representa uma permissão especial, abordada adiante. Os demais representam as permissões para o usuário, grupo e outros, nessa ordem.
Cada dígito indica a presença de uma permissão a partir da soma dos valores 4, 2 e 1. Esses valores correspondem à leitura, escrita e execução. A tabela a seguir mostra todas permissões possíveis, desde 0 (nenhuma permissão) até 7 (todas as permissões).
Dígito | Leitura (valor 4) | Escrita (valor 2) | Execução (valor 1) |
0 | — | — | — |
1 | — | — | Sim |
2 | — | Sim | — |
3 | — | Sim | Sim |
4 | Sim | — | — |
5 | Sim | — | Sim |
6 | Sim | Sim | — |
7 | Sim | Sim | Sim |
Dessa forma, o comando chmod 0664 documentos.tar.gz
mudará as permissões do arquivo documentos.tar.gz
para -rw-rw-r--
, ou seja, leitura e escrita para o usuário, leitura e escrita para o grupo e somente leitura para os demais.
Para mudar recursivamente todos os arquivos dentro de um diretório especificado, utiliza-se o chmod
com a opção -R
.
Modificar donos e grupos de arquivos
Para alterar dono e grupo de arquivos e diretórios, utiliza-se os comandos chown
e chgrp
. O primeiro argumento é um nome válido de usuário ou grupo e o segundo é o arquivo ou diretório a ser alterado. Apenas o usuário root pode usar o comando chown
, mas qualquer usuário pode usar o comando chgrp
em seus arquivos e diretórios, desde que faça parte do grupo que será atribuído.
Mudar dono de arquivo usando o chown
:
# chown luciano documentos.tar.gz
Mudar grupo de arquivo:
$ chgrp users documentos.tar.gz
Para alterar usuário e grupo simultaneamente:
# chown luciano.users documentos.tar.gz
ou
chown luciano:users documentos.tar.gz
Tanto chown
quanto chgrp
possuem a opção -R
para alterar conteúdos de diretórios recursivamente.
5.4: Arquivos e Diretórios Especiais
Peso: 1
Permissões suid e sgid
Num ambiente Unix, todos os processos são vinculados ao usuário que os iniciou. Dessa forma, o programa herdará as mesmas permissões de leitura e escrita do usuário que o executou. Algumas tarefas, no entanto, exigem que o processo altere ou acesse arquivos para os quais o usuário não tem a permissão necessária. Por exemplo, alterar a própria senha exige que o arquivo /etc/shadow
seja alterado, mas as permissões de /etc/shadow
limitam a escrita ao usuário dono deste arquivo (o usuário root):
$ ls -l /etc/shadow
-rw-r----- 1 root shadow 1172 Mai 15 2017 /etc/shadow
Para contornar essa condição, existe um tipo de permissão especial, chamada suid (set user id). Arquivos executáveis que possuam a permissão suid serão executados com as mesmas permissões do dono do comando e não com as permissões do usuário que o executou. A permissão suid é representada pela letra s no lugar do x na porção referente ao dono do arquivo:
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 54192 Fev 24 2017 /usr/bin/passwd
Para incluir a permissão suid em um arquivo executável, utiliza-se:
# chmod u+s comando
De maneira semelhante, a permissão sgid atua em diretórios. Ela é uma permissão de grupo, portanto aparece no campo de permissões referente ao grupo. Num diretório com a permissão sgid, todos os arquivos ali criados pertencerão ao grupo do diretório em questão, o que é especialmente útil em diretórios onde trabalham usuários pertencentes ao mesmo grupo.
Quando ativas, as permissões suid e sgid fazem aparecer a letra s no lugar da letra x nas permissões de dono do arquivo e grupo do arquivo, respectivamente. Se a permissão de execução também existir, aparecerá a letra s minúscula. Se apenas as permissões suid e sgid existirem, aparecerá a letra S maiúscula.
A permissão sticky
O inconveniente em usar diretórios compartilhados é que um usuário poderia apagar algum ou todo o conteúdo inadvertidamente. Para evitar que isso aconteça, existe o a permissão sticky, que impede usuários de apagar arquivos não criados por eles mesmos. É o caso do diretório /tmp
, cujas propriedades podem ser verificadas com o comando ls -l
mais a opção -d
, que permite obter informações do próprio diretório em questão e não de seu conteúdo:
$ ls -ld /tmp
drwxrwxrwt 17 root root 36864 Fev 27 11:32 /tmp
A letra t nas permissões para demais usuários demonstra o uso da permissão sticky. Se apenas a permissão sticky existir, aparecerá a letra T maiúscula.
Para atribuir a permissão sticky num diretório chamado trabalho
, portanto, pode ser utilizado um comando como chmod o+t trabalho
.
Permissões especiais em formato numérico
Como as opções convencionais, as permissões especiais também podem ser manipuladas em formato octal (numérico). A permissão especial é o primeiro dos quatro dígitos da opção no formato octal. A tabela a seguir detalha essa correspondência.
Dígito | suid (valor 4) | sgid (valor 2) | sticky (valor 1) |
0 | — | — | — |
1 | — | — | Sim |
2 | — | Sim | — |
3 | — | Sim | Sim |
4 | Sim | — | — |
5 | Sim | — | Sim |
6 | Sim | Sim | — |
7 | Sim | Sim | Sim |
Criar e alterar links simbólicos e hardlinks
Links são arquivos especiais que têm finalidade de atalho para outros arquivos, facilitando a maneira como são acessados. Existem dois tipos de links: o softlink (link simbólico) e o hardlink (link físico).
Hardlinks (links físicos)
Hardlinks são um ou mais nomes que um inode do sistema de arquivos pode ter. Todo arquivo criado é, necessariamente, um hardlink para seu inode correspondente. Novos hardlinks são criados usando o comando ln
:
$ ln documentos.tar.gz docs.tar.gz
O que é um inode?
Um inode é o elemento básico que identifica o arquivo no sistema de arquivos. O primeiro inode de um arquivo guarda suas propriedades e indica em quais outros inodes do sistema de arquivos os dados deste arquivo estão localizados.
A opção -i
do comando ls
mostra o número dos inodes dos arquivos:
$ ls -i
6534 documentos.tar.gz 6534 docs.tar.gz
Ambos documentos.tar.gz
e docs.tar.gz
são hardlinks para o mesmo inode 6534. Hardlinks para o mesmo inode possuem mesma permissão, donos, tamanho e data, pois esses atributos são registrados diretamente nos inodes.
$ ls -l documentos.tar.gz
-rw-r--r-- 2 luciano luciano 188 Oct 16 22:10 documentos.tar.gz
O número 2 na segunda coluna de informações demonstra que há dois hardlinks para o inode correspondente ao arquivo documentos.tar.gz
. Um arquivo só é de fato apagado do sistema de arquivos quando o último hardlink remanescente é excluído.
Hardlinks só podem ser criados dentro de um mesmo sistema de arquivos. Não é possível criar hardlinks para diretórios. Os arquivos especiais .
e ..
são hardlinks para diretório criados exclusivamente pelo próprio sistema.
Softlinks (links simbólicos)
Links simbólicos podem apontar para qualquer alvo, inclusive em sistemas de arquivos diferentes. Para criar um link simbólico, usa-se ln
com a opção -s
:
$ ln -s documentos.tar.gz atalho.tar.gz
Detalhes do link:
$ ls -l atalho.tar.gz
lrwxrwxrwx 1 lcnsqr bmac 17 Fev 27 11:40 atalho.tar.gz -> documentos.tar.gz
Um link simbólico é indicado pela letra l
no início das permissões que, nesse caso, são sempre rwxrwxrwx
. O tamanho do arquivo de link é exatamente a quantidade de bytes (caracteres) do caminho alvo. A seta ao lado do nome do link simbólico indica o caminho até o alvo.
Um link simbólico para um caminho relativo será quebrado se o alvo ou o próprio link for movido. Um link simbólico para um caminho absoluto só será quebrado se o alvo for movido ou apagado. Para atualizar a informação de alvo de um link simbólico existente, mas “quebrado”, pode-se redefinir o alvo do link com a opção -f
.
Funções comuns para links simbólicos são indicar caminhos longos frequentemente usados, criar nomes mais simples para arquivos executáveis e nomes adicionais para bibliotecas de sistema.