Quando se trata de fazer um arquivo executável que é a diferença entre chmod 755
e chmod +x
e quando que eu iria usar o que? Até agora, apenas usei chmod +x
e acabei de ler algo e ele usou chmod 755
e não sabia dizer se era melhor usar chmod 755
ou chmod +x
.
command-line
permissions
chmod
Darth4212
fonte
fonte
chmod +x
define todos os sinalizadores executáveis sem alterar outras permissões.chmod 755
define rwxr-xr-xRespostas:
Versão curta:
Para poder compará-los, devemos analisá-los da mesma perspectiva, portanto:
chmod +x
é igual achmod ugo+x
(com base noumask
valor)chmod 755
é igual achmod u=rwx,go=rx
Explicação:
Em primeiro lugar você deve saber que:
+
significa adicionar essa permissão às outras permissões que o arquivo já possui.=
significa ignorar todas as permissões, defini-las exatamente como eu forneço.read = 4, write = 2, execute = 1
Aqui está a lógica binária por trás disso (se você estiver interessado):
Usando
+x
você está dizendo para adicionar (+
) o bit executável (x
) ao proprietário, grupo e outros.ugo+x
ouu+x,g+x,o+x
x
ele considerar todos eles. E como o @Rinzwind apontou, é baseado emumask
valor, adiciona o bit aoumask
permitido. lembre-se se você especificar o alvo comoo+r
entãoumask
não terá mais nenhum efeito.u+x
para adicionar apenas bits executáveis ao proprietário.Usando
755
você está especificando:u=rwx
(4 + 2 + 1 para o proprietário)g=rx
(4 + 1 para o grupo)o=rx
(4 + 1 para outros)Assim
chmod 755
é como:chmod u=rwx,g=rx,o=rx
ouchmod u=rwx,go=rx
.fonte
chmod 755
você define esses bits E também limpa todos os bits suid / sgid / sticky (que podem estar lá) (por exemplo: NUNCAchmod 755 /tmp
). 755 deve ser sempre pensado como 0755, ou seja, o primeiro conjunto octal de bits também é definido como 0.chmod +x
adiciona a permissão de execução para todos os usuários às permissões existentes.chmod 755
define a755
permissão para um arquivo.755
significa permissões totais para o proprietário e permissão de leitura e execução para outras pessoas.fonte
Outra maneira de ver isso (que acho mais fácil de entender)
chmod +x
é definir as permissões relativamente , enquanto aschmod 755
define absolutamente .Após a
chmod 755
execução em um arquivo, suas permissões serão 755 ourwxr-xr-x
.chmod +x
apenas aceita as permissões existentes e adiciona permissões de execução ao arquivo.fonte
Eu recomendo revisar a página de manual do chmod para obter detalhes completos. Você está apenas vendo dois modos de operação diferentes disponíveis com o comando chmod para realizar a mesma tarefa de alterar permissões.
O modo octal está usando números e define todas as permissões do arquivo. O modo de caractere está usando as letras e geralmente é usado apenas para modificar as permissões existentes.
chmod 755
definerwxr-xr-x
enquantochmod +x
ajusta permissões para que proprietário, grupo e mundo tenham permissões executáveis adicionadas. Assumir uma permissão de arquivo padrãorwxr--r--
ajustaria-a às mesmas permissões que 755 derwxr-xr-x
.fonte
A diferença é que permissões são definidas e qual modo você usa para defini-las.
Com
chmod +x
você define o bit executável para todos - o proprietário, o grupo de proprietários e os outros usuários. Isso é conhecido como modo simbólico. Para citarman chmod
:Com
chmod 755
o uso de números octais, cuja representação binária é usada para definir bits específicos de permissões. Os primeiros 3 bits (à esquerda) correspondem às permissões do proprietário, os 3 do meio às permissões do grupo e os últimos (à direita) correspondem às permissões de todos os outros usuários. A ordem dos bits é sempre a mesmaread,write,execute
ou ,rwx
portanto, exatamente porque a ordem é a mesma, o número individual, quando convertido em representação binária, definirá os bits de permissão para os quais o bit posicional correspondente no número é 1 e desmarca o que é 0 Especificamente:7
é 111 no binário, então você está configurando todos os bits de leitura, gravação e execução para o proprietário;rwx
está definido.5
é 101 no binário, então você está configurando a leitura e a execução, mas desativa os bits de gravação, e como é 5 para o grupo e outros usuários, essas duas categorias terão as mesmas permissões. Assimr-x
está definido.Aqui está a pequena demonstração:
fonte
Uma diferença importante é que o chmod + está sujeito a restrições umask e o chmod <octal> não.
Considere o seguinte exemplo:
Portanto, se você quiser fazer uma alteração delta nas permissões de maneira apropriada às suas configurações umask, use a sintaxe '+'. Mas se você deseja defini-lo absolutamente sem considerar o umask, use o formato <octal> e saiba que é necessário especificar todos os bits e não apenas um delta.
fonte
Além dessas respostas bonitas, quero mencionar uma diferença pequena, mas provavelmente importante. O comando
chmod 755 file
é equivalente achmod 0755 file
. Se executarmos este comando em um arquivo que tenha o bit SETUID ou SETGID definido, ele removerá o bit SETUID / SETGID.chmod +x file
deixará o SETUID / SETGID-bit intocado. Podemos ver isso no seguinte exemplo:fonte