Como o meu navegador da Internet consegue gravar arquivos no meu arquivo "Downloads" se as permissões padrão não permitem "gravar"?

14

No terminal, usei este comando:

stat Downloads

Ele afirmou que as permissões para a minha pasta de downloads eram "drwxr-xr-x"

Isso não significa que apenas o administrador e o proprietário poderão editar a pasta? Como o navegador faria o download de algo e o colocaria na pasta se não tiver permissão ou o Ubuntu detecta que você permitiu que o navegador o fizesse?

Raffat
fonte
4
Eu suspeito que, se você entrar ls -ld Downloads , descobrirá que é, de fato, o proprietário da sua pasta Downloads. Portanto, quando você executa o navegador, é você, como proprietário do diretório, quem está tentando colocar algo nesse diretório.
Charles

Respostas:

20

Os programas são executados com os privilégios do usuário que os invocou.
Portanto, quando você inicia o navegador, o processo do navegador tem os direitos que você tem para ler, modificar e executar arquivos.

E como você é o dono de seu pasta de downloads, a sua conta de usuário tem (geralmente por padrão) completos rEAD / writo / e xecute direitos. Portanto, seu navegador também os possui.

Para esclarecer a saída do stat(d rwx r-x r-x) :

  • A primeira letra (aqui d:) descreve o tipo do objeto do sistema de arquivos que você está examinando. dsignifica que você está mostrando as permissões de um diretório. Se você estiver examinando um arquivo, receberá um -. Existem outras possibilidades também, como lpara um link. Além disso, existem (de acordo com o comentário de @ Atsby) bpara dispositivos de bloco, dispositivos cde caracteres, ptubos e provavelmente ainda mais ...
    Veja * para obter informações sobre permissões de diretório!
  • As três primeiras letras rwxrepresentam as permissões do proprietário . Uma letra significa que o respectivo tipo de acesso é concedido, um "-" significa negado. -> acesso completo
  • As segundas três letras r-xrepresentam as permissões que os usuários têm e que são membros do grupo do proprietário . É o mesmo formato "rwx" como acima. -> apenas permissões de leitura e execução, sem gravação
  • As últimas três letras r-xrepresentam as permissões de outros usuários que não são o proprietário e não são membros do grupo de proprietários. Ainda o mesmo formato "rwx". -> também apenas lê e executa permissões, sem gravação

* Permissões de diretório:
observe que permissões de diretório têm significados diferentes das permissões de arquivo. Para diretórios ... o
acesso de leitura (r) significa listar os arquivos ( lscomando) , o
acesso de gravação (w) significa alterar o conteúdo do diretório (criar, excluir, renomear arquivos) e
executar o acesso (x) significa entrar no diretório ( cdcomando ou abertura com o gerenciador de arquivos)


Permissões de execução avançadas:

Às vezes você encontra um S, s, Tou tonde você seria de esperar uma x.

Existem permissões SUID (Definir ID do Usuário) e SGID (Definir ID do Grupo) que substituem o normal xse o arquivo sempre deve ser executado com as permissões do seu proprietário (SUID) ou do seu grupo proprietário (SGID). Para SUID, as xpermissões de usuário (primeiro bloco) são substituídas; para SGID, as xpermissões de grupo (segundo bloco) são substituídas. Uma letra maiúscula Srepresenta a -(permissão negada) enquanto uma pequena sé igual a x(permissão concedida).

Se o xterceiro bloco (permissões de outras pessoas) for substituído por T/ t, isso significa que o "Sticky Bit" está definido. Atualmente, é usado principalmente para impedir a exclusão do arquivo por usuários não proprietários que possuem permissões de gravação. Novamente, uma letra maiúscula Té igual a -(sem permissão de execução para outras pessoas) sem "Sticky Bit", enquanto uma pequena tsignifica acesso de execução concedido ( x) para outras pessoas.


Notação octal:

As permissões também podem ser representadas por 3-4 dígitos (valores de 0 a 8), chamados de notação octal.
Normalmente você tem 3 ou 4 dígitos com o primeiro dígito definido como 0 (por exemplo, 755ou 0755).

  • O primeiro dígito (que pode ser omitido se for 0) representa os sinalizadores de permissão avançados. Valores de sinalização: SUID = 4, SGID = 2, Pegajoso = 1.
  • O segundo dígito representa o estado dos sinalizadores de permissão do proprietário (rwx; primeiro bloco de permissão na formatação de string). Valores de sinalização: r = 4, w = 2, x = 1.
  • O terceiro dígito representa o estado dos sinalizadores de permissão do grupo proprietário (rwx; segundo bloco de permissão na formatação de string). Valores de sinalização: r = 4, w = 2, x = 1.
  • O quarto dígito representa o estado de todos os outros sinalizadores de permissão (rwx; terceiro bloco de permissões na formatação de cadeias). Valores de sinalização: r = 4, w = 2, x = 1.

Para calcular o valor do dígito, basta somar os valores dos sinalizadores de todos os sinalizadores definidos. Exemplos: rwx = 4 + 2 + 1 = 7, rx = 4 + 0 + 1 = 5


Fonte e referências adicionais:
http://www.zzee.com/solutions/linux-permissions.shtml
http://www.informit.com/articles/article.aspx?p=1822622&seqNum=6
Visite esses links para obter mais detalhes , especialmente sobre permissões avançadas.

Byte Commander
fonte
1
+1, drepresenta directorypelo caminho!
kos
@kos Obrigado, vou adicionar isso. Quais seriam as outras possibilidades em vez de um "d" neste local?
Byte Commander
Nenhum, se não é um diretório que é na verdade um arquivo, assim você sempre quer ter dou-
kos
3
@kos existem outras possibilidades, por exemplo, lpara um soft link, bpara um dispositivo de bloco, cpara um dispositivo de caractere, ppara uma tubulação ... esses são apenas os que eu conheço, há provavelmente mais
Atsby
@Atsby você está certo, eu estava falando ls, quando na verdade OP usadostat
kos