Respostas:
Um arquivo com -rwx-wx-wx
permissões possui permissões de leitura / gravação / execução para o proprietário e permissões de gravação / execução (mas não leitura) para todos os outros.
Se for um script (geralmente um arquivo de texto com um #!
na primeira linha), não poderá ser executado por outras pessoas, porque a execução de um script realmente executa o intérprete, que deve ser capaz de ler o script. (O intérprete deve ser um binário, não outro script.) (Na verdade, isso não é verdade para todos os sistemas; o Ubuntu, com um kernel do Linux 3.2.0, permite que o próprio intérprete seja um script interpretado. Parece haver um limite de cerca de quatro níveis. Não é provável que seja relevante para esta pergunta.)
Se é um executável binário, pode ser executado diretamente, mas seu conteúdo não pode ser lido. Isso significa, por exemplo, que alguém que não seja o proprietário pode executá-lo como um comando, mas não pode pegar uma cópia do executável.
Obviamente, a execução requer leitura, mas é lida pelo kernel, não pelo usuário. Você pode obter algumas informações sobre o conteúdo do executável examinando a memória do processo enquanto ele está sendo executado, mas duvido que você possa reconstruir o arquivo executável binário. E se o executável estiver configurado, você não poderá examinar a memória do processo (a menos que tenha acesso à conta na qual está executando).
Aliás, -rwx-wx-wx
é um conjunto muito estranho de permissões; ele protege o arquivo de ser lido por qualquer pessoa que não seja o proprietário, mas permite que qualquer pessoa o modifique. Não consigo pensar em um caso em que isso faria sentido.
chmod 111 hello ; gdb ./hello
diz ./hello: Permission denied.
; r
dizNo executable file specified.
Com essas permissões, somente o proprietário do arquivo pode executá-lo.
Outros usuários podem gravar nele, mas não executá-lo (como a execução nesse caso implica em poder lê-lo), mas podem gravar nele como uma espécie de caixa preta:
user1:~$ cd /tmp
user1:/tmp$ echo "hostname" > testfile.sh
user1:/tmp$ chmod +x testfile.sh
user1:/tmp$ ./testfile.sh
server.example.com
user1:/tmp$ chmod 733 testfile.sh
user1:/tmp$ ls -l testfile.sh
-rwx-wx-wx 1 user1 user1 9 Jan 19 21:09 testfile.sh
user1:/tmp$ sudo su - user2
user2:~$ cd /tmp
user2:/tmp$ ./testfile.sh
./testfile.sh: Permission denied
user2:/tmp$ cat testfile.sh
cat: testfile.sh: Permission denied
user2:/tmp$ echo 'echo hello' >> testfile.sh
user2:/tmp$ ./testfile.sh
./testfile.sh: Permission denied
user2:/tmp$ logout
user1:/tmp$ ./testfile.sh
server.example.com
hello
Obviamente, qualquer arquivo pode ser lido pelo usuário root.
Além disso, o carregador do sistema, gerenciamento de memória, trocador, etc .... lerá um arquivo com permissão 'x', caso contrário, não poderá ser executado.
Os possíveis furos na divulgação de conteúdo executável podem ser o arquivo / proc para o processo, os arquivos principais ou o uso de um depurador.
chmod
| chown
foi executada