Olhando pelas man pages
Se você olhar a página de manual para mount.cifs
, que é o que será usado para montar qualquer compartilhamento listado em /etc/fstab
, há uma observação que menciona noexec
.
This command may be used only by root, unless installed setuid, in which case the noeexec and nosuid mount flags are enabled. When installed as a setuid program, the program follows the conventions set forth by the mount program for user mounts, with the added restriction that users must be able to chdir() into the mountpoint prior to the mount in order to be able to mount onto it.
Some samba client tools like smbclient(8) honour client-side configuration parameters present in smb.conf. Unlike those client tools, mount.cifs ignores smb.conf completely.
Dado isso, eu esperaria que ele honrasse a opção exec / noexec se fosse incluída em qualquer tentativa de montagem. Além disso, observar o mount.cifs
usage mostra como essa opção seria usada.
Less commonly used options:
credentials=<filename>,guest,perm,noperm,setuids,nosetuids,rw,ro,
sep=<char>,iocharset=<codepage>,suid,nosuid,exec,noexec,serverino,
mapchars,nomapchars,nolock,servernetbiosname=<SRV_RFC1001NAME>
directio,nounix,cifsacl,sec=<authentication mechanism>,sign,fsc
Examinar a página fstab
man explica a finalidade pretendida para exec / noexec, mas não especifica se é para todos os executáveis ou apenas para Unix.
exec / noexec
exec lets you execute binaries that are on that partition, whereas noexec does not let you do that. noexec might be useful for a partition that contains no binaries, like /var, or contains binaries you do not want to execute on your system, or that cannot even be executed on your system, as might be the case of a Windows partition.
O exec / noexec torna tudo executável?
Nenhum atributo exec / noexec simplesmente bloqueia a permissão de itens que são marcados como executáveis por meio de seus bits de permissão. Isso não afeta diretamente as permissões.
E os binários do Windows?
No entanto, a configuração de exec / noexec não tem controle sobre os executáveis do Windows, somente os executáveis Unix que também podem residir nesses compartilhamentos.
Além disso, não sei ao certo como isso poderia entrar em jogo se você estiver montando um compartilhamento CIFS / Samba através de /etc/fstab
, quando um sistema operacional Windows entrará no cenário nesse cenário. O Windows poderia / poderia montar este compartilhamento diretamente e nem mesmo se incomodar com o Linux.
Testando
Exemplo do Unix Você pode testar isso usando mount.cifs
diretamente por meio da linha de comando. Supondo que tenhamos um arquivo no compartilhamento CIFS / Samba da seguinte forma:
$ cat cmd.bash
#!/bin/bash
echo "hi"
$ chmod +x cmd.bash
Agora montamos assim e tentamos executar o script, cmd.bash
:
$ mount.cifs //server/cifsshare /path/to/cifsmnt -o user=joeuser,noexec
$ cd /path/to/cifsmnt
$ ./cmd.bash
bash: ./cmd.bash: Permission denied
Se omitirmos essa opção, noexec
:
$ mount.cifs //server/cifsshare /path/to/cifsmnt -o user=joeuser
$ cd /path/to/cifsmnt
$ ./cmd.bash
hi
Do Windows
O único cenário que eu poderia conceber aqui seria se eu estivesse usando algo como o Virtualbox e eu montasse um compartilhamento CIFS / Samba dentro de um diretório que uma VM do Windows poderia utilizar.
Quando eu testei isso, consegui executar .exe
arquivos com êxito através dessa configuração de montagem.
OBSERVAÇÃO: usei o mecanismo de compartilhamento \vboxsrv
no Virtualbox para montar meu diretório pessoal local no meu sistema, /home/saml
. Em seguida, executei este comando, montando um compartilhamento CIFS / Samba como um diretório dentro de /home/saml
.
$ mkdir /home/saml/cifsmnt
$ mount //server/cifsshare cifsmount -o user=joeuser,noexec
Conclusões
Fazer o que precede parece indicar que exec / noexec não tem nada a ver com o acesso do Windows aos arquivos.