Qual é a diferença entre chmod u+xe just chmod +x? Eu já vi vários tutoriais que dizem usar u+xpara tornar scripts executáveis. No entanto, omitir o unão parece ter nenhum efeito.
Qual é a diferença entre chmod u+xe just chmod +x? Eu já vi vários tutoriais que dizem usar u+xpara tornar scripts executáveis. No entanto, omitir o unão parece ter nenhum efeito.
Respostas:
A página de manual chmodcobre isso.
Isso significa que chmod u+x somefileconcederá 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 filediferente de chmod a+x file- consulte a resposta da Ravexina para obter detalhes.
Apenas fazer +xaplicará a todas as bandeiras: [u] ser, [g] roup, [o] thers.
Digite man chmodpara mais informações.
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.
chmod +xé igual a chmod ugo+x(com base no umaskvalor)chmod a+xé igual a chmod ugo+x(sem considerar o umaskvalor)O resultado chmod a+xé definir o bit executável para todos (Proprietário, Grupo, Outros), fácil, certo?
No entanto, com chmod +xisso é um pouco complicado, ele diz que usa umaskvalor e, com base nesse valor, adiciona a xtodos os que são permitidos.
Portanto, se o umaskmeu ambiente é 0002:
$ umask
0002
$ umask -S
u=rwx,g=rwx,o=rx
Ele será adicionado xao usuário (proprietário), grupo e outros. Nesta situação (que é a situação padrão para a maioria dos sistemas), é exatamente chmod ugo+xigual ou igual a chmod a+x, ou de uma forma mais detalhada:
chmod u+x,g+x,o+x
Você consegue identificar a conexão entre chmod u+x,g+x,o+xe a saída de umask -S?
Agora vamos mudar o umaskshell atual para 0003:
$ umask 0003
$ umask
0003
$ umask -S
u=rwx,g=rwx,o=r
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 +xagora é igual a chmod u+x,g+xou chmod ug+x.
O que acontece se eu for executado chmod +wem um arquivo após definir umaskcomo 0003?
O mesmo que antes, afeta apenas usere groupdo arquivo porque 3 também remove a permissão de gravação (2).
Tem o mesmo efeito quando você está removendo um pouco como chmod -w:
$ mkdir test
$ stat -c %A test
drwxrwxr-x
$ umask
0002
$ chmod +w test
$ stat -c %A test
drwxrwxr-x
$ chmod a+w test
$ stat -c %A test
drwxrwxrwx
$ chmod -w test
chmod: test/: new permissions are r-xr-xrwx, not r-xr-xr-x
$ stat -c %A test
dr-xr-xrwx
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 +xou chmod 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.
chmod u+x filesignifica adicionar o bit executável ao proprietário do arquivo enquanto ignora o umask(seu mod será configurado, sem dúvida).
chmod +x filesignifica adicionar o bit executável ao proprietário, grupo e outros enquanto considera o umask(Primeiro verifique com, em umaskseguida, aplique os mods, ele pode ter efeitos diferentes com base no valor do umask).
vamos criar dois arquivos:
$ touch file1 file2
$ ls -l file1 file2
-rw-rw-rw- 1 ravexina ravexina 0 Aug 5 01:45 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug 5 01:45 file2
Agora eu definir o umaskque "111" para remover bits executáveis: umask 111.
$ chmod u+x file1
$ chmod +x file2
$ ls -l file1 file2
-rwxrw-rw- 1 ravexina ravexina 0 Aug 5 01:47 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug 5 01:47 file2
Como você pode ver, o bit chmodignorado umaske o file1 foram executáveis para o proprietário, mas o segundo não fez nada porque está considerando o valor do umask.