'chmod u + x' versus 'chmod + x'

112

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.

Nathan Schwermann
fonte

Respostas:

149

A página de manual chmodcobre isso.

  • você significa usuário.
  • g significa grupo.
  • o representa os outros.
  • um representa para todos.

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.

Damiean Otaviano
fonte
Eu tenho uma pequena pergunta, qual é a diferença entre a + x e digamos 111. Faz tanto executável
TheBro21
Isso ocorre porque 1 é a notação octal que representa a permissão de execução. 111 significa executável para usuário, grupo e outros.
Octavian Damiean
Grande limpo resposta
m4heshd
O efeito umask é importante, tornando chmod +x filediferente de chmod a+x file- consulte a resposta da Ravexina para obter detalhes.
Cinnam
19

Apenas fazer +xaplicará a todas as bandeiras: [u] ser, [g] roup, [o] thers.

Digite man chmodpara mais informações.

matpie
fonte
Prometo que verifiquei o manual primeiro, mas não o vi, pois pulei a descrição e pulei para as opções. Eu vê-los agora, porém :-)
Nathan Schwermann
14

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 a chmod ugo+x(com base no umaskvalor)
  • chmod a+xé igual a chmod ugo+x(sem considerar o umaskvalor)

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 +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.


Questão de tempo!

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).


Bônus

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
Ravexina
fonte
7

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.

belacqua
fonte
desculpe, mas essa coisa também não funcionou para mim. Eu tentei com o sudo e não funcionou no meu computador. askubuntu.com/questions/178231/how-to-set-permission-in-ubuntu
Anirudha Gupta
@AnkitGupta Não sei ao certo o que você está dizendo. Meu comentário não pretendia corrigir um problema em uma sessão de perguntas e respostas diferente. Tente pedir esclarecimentos para as respostas lá. Edite sua pergunta para dizer o que você tentou. Mostra a saída.
belacqua 20/08/2012
1
  • 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.

Ravexina
fonte