Qual é a diferença entre chmod u+x
e just chmod +x
? Eu já vi vários tutoriais que dizem usar u+x
para tornar scripts executáveis. No entanto, omitir o u
não parece ter nenhum efeito.
fonte
Qual é a diferença entre chmod u+x
e just chmod +x
? Eu já vi vários tutoriais que dizem usar u+x
para tornar scripts executáveis. No entanto, omitir o u
não parece ter nenhum efeito.
A página de manual chmod
cobre isso.
Isso significa que chmod u+x somefile
concederá apenas ao proprietário das permissões de execução desse arquivo, enquanto chmod +x somefile
é o mesmo que chmod a+x somefile
.
A página de manual do chmod diz:
O formato de um modo simbólico é
[ugoa...][[+-=][rwxXstugo...]...][,...]
. Podem ser dadas várias operações simbólicas, separadas por vírgulas.Uma combinação das letras 'ugoa' controla quais acessos de usuários ao arquivo serão alterados: o usuário que possui (u), outros usuários no grupo de arquivos (g), outros usuários que não pertencem ao grupo de arquivos (o), ou todos os usuários (a). Se nada disso for dado, o efeito é como se 'a' fosse dado, mas os bits definidos no umask não serão afetados.
chmod +x file
diferente dechmod a+x file
- consulte a resposta da Ravexina para obter detalhes.Apenas fazer
+x
aplicará a todas as bandeiras: [u] ser, [g] roup, [o] thers.Digite
man chmod
para mais informações.fonte
Exigências
Antes de tudo, sugiro que você leia estas perguntas e as respostas abaixo:
Ajuda a entender todas as partes necessárias que você precisa conhecer.
Versão curta
chmod +x
é igual achmod ugo+x
(com base noumask
valor)chmod a+x
é igual achmod ugo+x
(sem considerar oumask
valor)Explicação
O resultado
chmod a+x
é definir o bit executável para todos (Proprietário, Grupo, Outros), fácil, certo?No entanto, com
chmod +x
isso é um pouco complicado, ele diz que usaumask
valor e, com base nesse valor, adiciona ax
todos os que são permitidos.Portanto, se o
umask
meu ambiente é0002
:Ele será adicionado
x
ao usuário (proprietário), grupo e outros. Nesta situação (que é a situação padrão para a maioria dos sistemas), é exatamentechmod ugo+x
igual ou igual achmod a+x
, ou de uma forma mais detalhada:Você consegue identificar a conexão entre
chmod u+x,g+x,o+x
e a saída deumask -S
?Agora vamos mudar o
umask
shell atual para0003
:Como você pode ver agora, apenas o proprietário e o grupo receberão o bit executável e não os outros. Isso significa que
chmod +x
agora é igual achmod u+x,g+x
ouchmod ug+x
.Questão de tempo!
O que acontece se eu for executado
chmod +w
em um arquivo após definirumask
como0003
?O mesmo que antes, afeta apenas
user
egroup
do arquivo porque 3 também remove a permissão de gravação (2).Bônus
Tem o mesmo efeito quando você está removendo um pouco como
chmod -w
:fonte
chmod u+x
tornará o arquivo executável para o seu usuário (ele será adicionado apenas ao seu usuário, embora já possa ser executável pelo proprietário do grupo ou "outro").chmod +x
ouchmod a+x
('all plus executable bit') torna o arquivo executável por todos.Se você fizer isso em um diretório, ele tornará o diretório pesquisável. Ou seja, você pode listar o conteúdo de um diretório no qual você tem permissão + x.
fonte
chmod u+x file
significa adicionar o bit executável ao proprietário do arquivo enquanto ignora oumask
(seu mod será configurado, sem dúvida).chmod +x file
significa adicionar o bit executável ao proprietário, grupo e outros enquanto considera oumask
(Primeiro verifique com, emumask
seguida, aplique os mods, ele pode ter efeitos diferentes com base no valor do umask).vamos criar dois arquivos:
Agora eu definir o
umask
que "111" para remover bits executáveis:umask 111
.Como você pode ver, o bit
chmod
ignoradoumask
e o file1 foram executáveis para o proprietário, mas o segundo não fez nada porque está considerando o valor do umask.fonte