Das duas opções para alterar permissões:
chmod 777 file.txt
chmod a+rwx file.txt
Estou escrevendo um documento que detalha que os usuários precisam alterar as permissões de um determinado arquivo. Quero detalhá-lo como a maneira mais comum de alterar as permissões de arquivo.
Atualmente diz:
- Set permissions on file.txt as per the example below:
- chmod 777 /tmp/file.txt
Este é apenas um exemplo e não altera os arquivos para ter permissões totais para todos.
permissions
Kevdog777
fonte
fonte
775
ou apenas755
para arquivos executáveis.chmod 777
é comochmod a=rwx
, nãochmod a+rwx
.777
ou666
é simples e muito mais memorável do queugo+rwx
,a+rwx
ouugo+rw
que é muito confusoo
e ambíguo e pode significar para você, proprietário ou outras pessoas, a sua escolha. Então, ao invés de cometer o grande erro, você fica checandoman
para verificar qual é qual, ou apenas usa os números.Respostas:
O Google fornece:
chmod 777
é cerca de 3 vezes mais popular.Dito isso, eu prefiro usar opções longas na documentação e scripts, porque eles são auto-documentados. Se você estiver seguindo suas instruções com "Executar
ls -l | grep file.txt
e verificar permissões", convém usar,chmod a+rwx
porque é assim que o ls exibirá as permissões.fonte
7
média, etc.chmod 777
é mais popular (como conjetured antes de ver seus números) é simplesmente que você digite 2 caracteres menos :)chmod 777
seja um atalho útil para obter o mesmo efeito. Seus leitores apreciariam o elemento educacional em sua documentação. O 777 é mais popular porque é muito mais fácil e rápido atingir 7 três vezes, mas quando um novo usuário vê o 777 pela primeira vez, pode não saber exatamente o que isso significa. É por isso que é uma má escolha como documentação principal. Mas definitivamente vale a pena mencionar como uma dica.[Edito para adicionar as melhores práticas, seguindo a sugestão de Dotancohen em sua resposta. Espero que não fique menos claro e que o bom hábito seja adotado]
Informações adicionais importantes: elas não são equivalentes.
chmod a+rwx
: defina as 3 últimas octais para 777, para garantir que Proprietário, Grupo e Usuários tenham o "rwx" definido. Se houver bits adicionais no primeiro octal (setuid, setgid e / ou Sticky bit), eles os deixarão intocados. Pense nisso como um binário "ou 00777".chmod 777
: defina os direitos como 00777, para garantir que Proprietário, Grupo e Usuários tenham "rwx" definido, E NADA MAIS. Também garante que os bits adicionais (setuid, setgid e / ou Sticky bit) estejam definidos como 0.Portanto, use o primeiro formulário, se você quiser garantir o acesso a todos (e faça o dobro, o triplo de que isso é necessário ... isso abre a porta para todos os tipos de problemas de segurança, alguns inesperadamente amplos no que eles permitem que um usuário mal-intencionado o faça)
Use o formulário 777 se você também quiser redefinir qualquer bit setuid / setgid / sticky, ou seja, se os arquivos precisarem ser "00777", o que provavelmente é mais provável no seu caso (o direito do arquivo é conhecido e deve ser : 00777). Aqui também, triplique a certeza de que é realmente necessário ...
Geralmente, é melhor manter o acesso ao proprietário (e às vezes ao grupo): use os grupos para conceder acesso a alguns usuários específicos ao arquivo / diretório. a + rwx é fácil e geralmente a maneira errada de conceder acesso (é claro que existem casos muito raros em que é a única maneira ...)
http://en.wikipedia.org/wiki/Chmod é uma boa leitura, pois explica o que cada número ou letra representa (incluindo setuid / setgid / sticky)
fonte
others
permissão? Se você está conectado à máquina como usuário, certamente pode usar ausers
permissão?chmod 777
é comochmod a=rwx
.Normalmente, penso na diferença: definir as permissões como 0777 as define explicitamente como 0777. Como mencionado anteriormente, o 0 inicial será inferido se você digitar 777. Considerando que a + rwx adiciona leitura / gravação / execução, deixando o setuid / sticky um pouco intocado.
Suponha que você apenas queira ter certeza de que um arquivo é executável; você pode usar um + x para poder modificar o privilégio de execução sem se preocupar ou modificar as outras permissões. Se você usou a representação octal, seria necessário saber quais permissões estão definidas no momento para garantir que você não as modifique de outra maneira além da pretendida.
fonte
Eu diria que fornecer valores numéricos é muito mais comum em "guias simples de pessoas", como os produzidos para usuários de hospedagem na web com orçamento. No entanto, tenha cuidado para especificá-los como valores octais , e não decimais:
$ chmod 0777 some_dir
Note-se a líder
0
no0777
. Embora o Bash e outros ambientes CLI façam a coisa certa com o uso de computadores sem teclado777
, muitas linguagens de programação, como PHP e Perl, têm funções semelhantes que exigem a liderança0
. Então, eu recomendo o seu uso no Bash também, para lembrar que ele deveria estar lá.Nota para os que recusam: Como esclarecido nos comentários, o
chmod
comando de fato sabe passar a diretiva como octal, mesmo que a notação decimal seja especificada. No entanto, nem todos os ambientes suportam isso, portanto, é uma boa prática se acostumar a especificá-lo explicitamente.fonte
chmod
nunca trata o número como decimal.chmod 777 file
echmod 0777 file
são completamente equivalentes.chmod
comando shell; você pode pensar nos três dígitos como independentes um do outro, cada um informando um conjunto de permissões.chmod 77
é equivalente achmod 077
.chmod
comando interpreta seu argumento de modo em octal. Você precisa prestar atenção se estiver usando a maioria das linguagens de programação (C, Perl, ...), mas em um shell script é octalchmod
.