Sistemas de arquivos usam permissões e atributos para regular o nível de interação que os processos do sistema podem ter com arquivos e diretórios.
permissões de Visualização
Use o comando ls s -l
opção para exibir as permissões (ou modo de arquivo) para o conteúdo de um diretório, por exemplo:
$ ls -l /caminho/para/directório
A primeira coluna é o que precisamos nos focar., Taking an example value of drwxrwxrwx+
, the meaning of each character is explained in the following tables:
d |
rwx |
rwx |
rwx |
+ |
The file type, technically not part of its permissions. See info ls -n "What information is listed" for an explanation of the possible values., |
as permissões que o dono tem sobre o arquivo, explicadas abaixo. | as permissões que o grupo tem sobre o arquivo, explicado abaixo. | as permissões que todos os outros usuários têm sobre o arquivo, explicado abaixo. | um único carácter que especifica se um método de acesso alternativo se aplica ao ficheiro. Quando este carácter é um espaço, não existe um método de acesso alternativo. A. character indicates a file with a security context, but no other alternate access method., Um arquivo com qualquer outra combinação de métodos de acesso alternativo é marcado com um caractere
, por exemplo, no caso de Listas de controle de acesso., |
Cada um dos três permissão de tríades (rwx
no exemplo acima) pode ser constituído dos seguintes caracteres:
Caractere | Efeito de arquivos | Efeito em diretórios | |
---|---|---|---|
permissão de Leitura (primeiro caractere) | - |
O arquivo não pode ser lido., | o conteúdo da pasta não pode ser mostrado. |
r |
O arquivo pode ser lido. | o conteúdo do Diretório pode ser mostrado. | |
permissão de Escrita (segundo caractere) | - |
O arquivo não pode ser modificado. | o conteúdo da pasta não pode ser modificado. |
w |
O arquivo pode ser modificado., | o conteúdo da pasta pode ser modificado (criar novos ficheiros ou pastas; mudar o nome ou apagar os ficheiros ou pastas existentes); necessita que a permissão de execução seja também definida, caso contrário esta permissão não tem efeito. | |
permissão de Execução (terceiro caractere) | - |
O arquivo não pode ser executado. | o diretório não pode ser acessado com cd. |
x |
O arquivo pode ser executado., | O diretório pode ser acessado com cd; este é o único bit de permissão de que, na prática, pode ser considerado para ser “herdado” do ancestral diretórios, na verdade, se qualquer pasta no caminho não tem o x conjunto de bits, o final do arquivo ou pasta não pode ser acessado, independentemente de suas permissões; ver path_resolution(7) para mais informações., |
|
s |
O bit setuid, quando encontradas no usuário tríade; o bit setgid ao encontrado no grupo tríade; ele não é encontrado em outros tríade; implica também que x está definido. |
||
S |
Mesmo s , mas x não é definido; raros em arquivos regulares, e inútil em pastas., |
||
t |
The sticky bit; it can only be found in the others triad; it also implies that x is set. |
||
T |
Same as t , but x is not set; rare on regular files, and useless on folders. |
See info Coreutils -n "Mode Structure"
and chmod(1) for more details.,
namei -l path
.Exemplos
Vamos ver alguns exemplos para esclarecer:
drwx------ 6 archie users 4096 Jul 5 17:37 Documents
Archie tem acesso completo para o diretório de Documentos. Ele pode listar, criar arquivos e renomear, excluir qualquer arquivo em documentos, independentemente das permissões de arquivo. Sua capacidade de acessar um arquivo depende da permissão do arquivo.
dr-x------ 6 archie users 4096 Jul 5 17:37 Documents
Archie tem acesso completo, exceto que ele não pode criar, mudar o nome, excluir qualquer arquivo., Ele pode listar os arquivos e (se a permissão do arquivo permite) Pode acessar um arquivo existente em documentos.
d-wx------ 6 archie users 4096 Jul 5 17:37 Documents
Archie não pode fazer ‘ ls ‘ em documentos, mas se ele sabe o nome de um arquivo existente, então ele pode listar, renomear, excluir ou (se a permissão do arquivo lhe permite) acessá-lo. Além disso, ele é capaz de criar novos arquivos.
d--x------ 6 archie users 4096 Jul 5 17:37 Documents
Archie só é capaz de (se a permissão do arquivo o habilita) acessar esses arquivos em documentos que ele conhece. Ele não pode listar arquivos já existentes ou criar, renomear, excluir qualquer um deles.,
deve ter em mente que elaboramos as permissões das pastas e que não tem nada a ver com as permissões individuais dos ficheiros. Quando você cria um novo arquivo é o diretório que muda. É por isso que você precisa de permissão de escrita para o diretório.
vejamos outro exemplo, desta vez de um arquivo, e não um diretório:
-rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
Aqui podemos ver a primeira letra não é d
mas -
. Sabemos que é um ficheiro, não um directório., Em seguida, as permissões do proprietário são rw-
de modo que o proprietário tem a capacidade de ler e escrever, mas não executar. Isso pode parecer estranho que o proprietário não tem todas as três permissões, mas o x
não é necessária permissão, como é um texto ou arquivo de dados, para ser lido por um editor de texto, como o Gedit, o EMACS, ou software como o R, e não um executável em seu próprio direito (se continha algo como python de código de programação, em seguida, poderia muito bem ser)., As permissões do grupo são definidas para r--
, de modo que o grupo tem a capacidade de ler o arquivo, mas não gravá — lo de qualquer forma-é essencialmente como configurar algo para apenas leitura. Podemos ver que as mesmas permissões também se aplicam a todos os outros.
mudar as permissões
chmod é um comando em Linux e outros sistemas operacionais Unix-like que permite alterar as permissões (ou o modo de acesso) de um arquivo ou diretório.
método de texto
para alterar as permissões – ou o modo de acesso-de um ficheiro, use o comando chmod num terminal., Abaixo está a estrutura geral do comando:
onde who
é qualquer de uma gama de letras, Cada um significando a quem está sendo dada a permissão. Eles são os seguintes:
-
u
: o usuário que possui o arquivo. -
g
: o grupo de utilizadores a que o ficheiro pertence. -
o
: os outros utilizadores, ou seja, todos os outros. -
a
: tudo o acima; use isso em vez de digitarugo
.,
As permissões são os mesmos, como discutido no #permissões de Visualização (r
w
e x
).
Agora dê uma olhada em alguns exemplos usando este comando., Suponha que você se tornou muito protetora do diretório de Documentos e queria negar todo mundo, mas a si mesmo, permissões para ler, escrever e executar (ou, neste caso, de busca/procura) em que:
Antes: drwxr-xr-x 6 archie users 4096 Jul 5 17:37 Documents
$ chmod g= Documents$ chmod o= Documents
Depois: drwx------ 6 archie users 4096 Jul 6 17:32 Documents
Aqui, porque você quer negar permissões, você não põe todas as letras após o =
permissões de onde seria inserido. Agora você pode ver que somente as permissões do proprietário são rwx
e todas as outras permissões são -
.,
Isto pode ser revertido com:
Antes: drwx------ 6 archie users 4096 Jul 6 17:32 Documents
$ chmod g=rx Documents$ chmod o=rx Documents
Depois: drwxr-xr-x 6 archie users 4096 Jul 6 17:32 Documents
No próximo exemplo, você deseja conceder permissões de leitura e execução para o grupo e outros usuários, então, você coloca as letras para as permissões (r
e x
) após o =
, sem espaços.
pode simplificar isto para colocar mais de uma letra who
no mesmo comando, E.,g:
$ chmod go=rx Documents
who
cartas ou a permissão de letras em um chmod
comando: você poderia ter chmod go=rx file
ou chmod og=xr file
. É tudo a mesma coisa.,ider um segundo exemplo, suponha que você deseja alterar uma foobar
arquivo para que você tenha permissões de leitura e escrita, e os outros utilizadores do grupo users
, que podem ser colegas de trabalho no foobar
, também pode ler e escrever para ele, mas outros usuários podem apenas ler:
Antes: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod g=rw foobar
Depois: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
Isto é exatamente como o primeiro exemplo, mas com um arquivo, e não um diretório, e você conceder a permissão de gravação (apenas para dar um exemplo de concessão de cada permissão).,
Texto método de atalhos
O comando chmod permite adicionar e subtrair as permissões de um conjunto existente, usando o +
ou -
em vez de =
. Isso é diferente dos comandos acima, o que, essencialmente, re-escrever as permissões (por exemplo, para alterar uma permissão de r--
rw-
, você ainda precisa incluir r
assim como w
depois =
no comando chmod invocação., Se você ficou de fora r
, tiraria o r
permissão de como eles estão a ser re-escrito com o =
. Usando +
e -
evita isto adicionando ou retirando do actual conjunto de permissões).,>Antes: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod a-w foobar
Depois: -r--r--r-- 1 archie users 5120 Jun 27 08:28 foobar
Um atalho diferente é especial X
mode: este não é um arquivo real de modo mas é muitas vezes utilizado em conjunto com o -R
opção para definir o bit executável somente para os diretórios, e deixe-o inalterado para arquivos regulares, por exemplo:
$ chmod -R a+rX ./data/
Copiar as permissões
é possível dizer chmod para copiar as permissões de uma classe, dizem que o proprietário, e dar as mesmas permissões do grupo ou até mesmo de todos., Para fazer isso, em vez de colocar o r
w
, ou x
depois =
, colocar um outro que letra. e.g:
Antes: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod g=u foobar
Depois: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
Este comando traduz-se essencialmente para “alterar as permissões de grupo (g=
), para ser o mesmo que o usuário proprietário (=u
). Note que você não pode copiar um conjunto de permissões, bem como conceder novas.,:
$ chmod g=wu foobar
in that case chmod throw an error.
método numérico
chmod também pode definir permissões usando números.
usar números é outro método que lhe permite editar as permissões para todos os três proprietários, grupos e outros ao mesmo tempo, bem como os bits setuid, setgid e sticky. Essa estrutura básica do código é esse:
$ chmod xxx filename
, Onde xxx
é um número de 3 dígitos, onde cada dígito pode ser de 0 a 7., O primeiro dígito se aplica a permissões para o proprietário, o segundo dígito se aplica a permissões para o grupo, e o terceiro dígito se aplica a permissões para todos os outros.
este número de notação, os valores de r
w
e x
ter o seu próprio número, valor:
r=4w=2x=1
Para vir acima com um número de 3 dígitos que você precisa considerar de que permissões você deseja proprietário, grupo, e todos os outros têm, e, em seguida, o total de seus valores., você deseja que o grupo e a todos os demais têm apenas permissões de leitura e execução, você subiria com os valores numéricos, como por exemplo:
- Proprietário:
rwx
=4+2+1=7 - Grupo:
r-x
=4+0+1=5 - Outros:
r-x
=4+0+1=5
$ chmod 755 filename
Este é o equivalente a usar o seguinte:
$ chmod u=rwx filename$ chmod go=rx filename
Para visualizar o existente permissões de um arquivo ou diretório em formato numérico, use o stat(1) comando:
$ stat -c %a filename
, Onde o %de uma opção especifica de saída no formato numérico.,
a Maioria das pastas e pastas / diretórios estejam definidas para 755
permitir a leitura, escrita e execução para o dono, mas negar escrita para todos os outros, e arquivos são normalmente 644
permitir a leitura e escrita para o dono, mas apenas a leitura para todos; consulte a última observação sobre a falta de x
permissões não arquivos executáveis: é a mesma coisa aqui.,
Para ver isso em ação, com exemplos, considere o exemplo anterior que foi usado, mas com esse método numérico aplicado em vez disso:
Antes: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod 664 foobar
Depois: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
Se esse fosse um executável seria o número 774
se você queria conceder permissão de executável para o proprietário e grupo. Alternatively if you wanted everyone to only have read permission the number would be 444
., Tratamento de r
4, w
2 e x
1 é provavelmente a maneira mais fácil de trabalhar os valores numéricos para o uso de chmod xxx filename
, mas há também um método binário, onde cada uma delas tem um número binário e, em seguida, que por sua vez é convertido em um número. É um pouco mais complicado, mas aqui incluído para a completude.,
Considerar este conjunto de permissões:
-rwxr-xr--
Se você colocar um 1 em cada permissão outorgada, e 0 para cada um não é concedida, o resultado seria algo como:
-rwxrwxr-x 111111101
em seguida, Você pode converter esses números binários:
000=0 100=4001=1 101=5010=2 110=6011=3 111=7
O valor do acima seria, portanto, 775.
Considere a possibilidade de nós queria remover a permissão escrita do grupo:
-rwxr-xr-x 111101101
O valor seria, portanto, 755 e você deve usar chmod 755 filename
para remover a permissão escrita., Você vai notar que você tem o mesmo número de três dígitos, não importa qual o método que você usa. Se você usar texto ou números dependerá da preferência pessoal e velocidade de Digitação. Quando você deseja restaurar uma pasta ou um arquivo para as permissões por omissão, por exemplo, a permissão de leitura e escrita (e execução) para o dono, mas negar a permissão de escrita para todos os outros, pode ser mais rápido usar . No entanto, se você está mudando as permissões para algo fora da norma, pode ser mais simples e mais rápido usar o método de texto, em vez de tentar convertê-lo em números, o que pode levar a um erro., Pode argumentar-se que não existe qualquer diferença significativa real na velocidade de qualquer dos métodos para um utilizador que só precisa de utilizar chmod ocasionalmente.
Você também pode usar o método numérico para definir o setuid
setgid
e sticky
bits utilizando quatro dígitos.
setuid=4setgid=2sticky=1
Por exemplo, chmod 2777 filename
irá definir de leitura/gravação/executável bits para todos e também permitir que o setgid
bits.
chmod a granel
geralmente as pastas e os ficheiros não devem ter as mesmas permissões., Se for necessário modificar a granel uma árvore de diretórios, use find para modificar seletivamente uma ou outra.
chmod apenas os diretórios para 755:
$ find directory -type d -exec chmod 755 {} +
chmod apenas arquivos para 644:
$ find directory -type f -exec chmod 644 {} +
Alterando a propriedade
chown altera o proprietário de um arquivo ou diretório, que é mais rápido e mais fácil do que alterar as permissões em alguns casos.
considere o seguinte exemplo, fazendo uma nova partição com GParted para os dados de backup. O Gparted faz tudo isto como root, de modo que tudo pertence ao root por padrão., Tudo isso é bom e bom, mas quando se trata de escrever dados para a partição montada, a permissão é negada para usuários regulares.
brw-rw---- 1 root disk 8, 9 Jul 6 16:02 sda9drwxr-xr-x 5 root root 4096 Jul 6 16:01 Backup
As you can see the device in/dev
is owned by root, as is the mount location (/media/Backup
)., Para alterar o proprietário do local de montagem pode-se fazer o seguinte:
Antes: drwxr-xr-x 5 root root 4096 Jul 6 16:01 Backup
# chown archie /media/Backup
Depois: drwxr-xr-x 5 archie root 4096 Jul 6 16:01 Backup
Agora, a partição pode ter dados gravados pelo novo proprietário, archie, sem alterar as permissões (como o proprietário da tríade já tinha rwx
permissões).
-
chown
limpa sempre os bits setuid e setgid. - não-root usuários não podem usar
chown
para “dar” arquivos que possuem para outro usuário.,
Listas de Controle de Acesso
Listas de Controle de Acesso fornece um adicional de, mais flexível permissão mecanismo de sistemas de arquivos, permitindo definir permissões para um usuário ou grupo para qualquer arquivo.
Umask
o utilitário umask é usado para controlar a máscara de modo de criação de ficheiros, que determina o valor inicial dos bits de permissão de ficheiros para os ficheiros recentemente criados.,
atributos de Ficheiros
para além dos bits de modo de ficheiro que controlam as permissões de leitura, escrita e execução do utilizador e do grupo, vários sistemas de ficheiros suportam atributos de ficheiros que permitem uma maior personalização das operações de ficheiros admissíveis. Esta seção descreve alguns desses atributos e como trabalhar com eles.
chattr e lsattr
para sistemas de arquivos ext2 e ext3, o pacote e2fsprogs contém os programas lsattr e chattr que lista e altera os atributos de um arquivo, respectivamente.,/li>
u
: undeletableA
: não atime actualizaçõesC
: não gravação de cópiaD
: síncrono atualizações de diretórioS
: atualizações síncronasT
: topo da hierarquia de diretórioPor exemplo, se você deseja definir o imutável pouco sobre algum arquivo, use o seguinte comando:
# chattr +i /path/to/file
Para remover um atributo em um arquivo que acabou de alterar +
-
.,
atributos extendidos
de xattr (7):”atributos extendidos São nome: pares de valores associados permanentemente a ficheiros e directórios”. Existem quatro classes de atributos estendidos: segurança, sistema, confiável e usuário.
atributos extendidos também são usados para definir capacidades.
atributos extendidos pelo Utilizador
atributos extendidos pelo Utilizador podem ser usados para armazenar informações arbitrárias sobre um ficheiro., To create one:
$ setfattr -n user.checksum -v "3baf9ebce4c664ca8d9e5f6314fb47fb" foo.txt
Use getfattr to display extended attributes:
$ getfattr -d foo.txt
# file: foo.txtuser.,3de557528">
--preserve=mode,ownership,timestamps,xattr
mv
tar
--xattrs
for creation and extractionbsdtar
-p
for extraction--xattrs
- mv silently discards extended attributes when the target file system does not support them.,
para preservar os atributos extendidos com editores de texto, é necessário configurá-los para truncar os ficheiros ao gravar em vez de usar o novo nome(2).
Dicas e truques
Preserve a raiz
Use --preserve-root
sinalizador para evitar o chmod
de atuar de forma recursiva em /
. Isto pode, por exemplo, impedir que alguém remova o executável bit systemwide e assim quebrar o sistema. Para usar esta bandeira todas as vezes, coloque-a dentro de um pseudónimo. Ver .,
Ver também
- wikipedia:Chattr
- Linux File Permission Confusion
- wikipedia:Extended file attributes#Linux
- Extended attributes: the good, the not so good, the bad.
- Backup e restauração de permissões de arquivos no Linux
- Porque é” chmod-R 777 / ” destrutivo?
Linux File Permission Confusion Part 2