Como o parâmetro noxec do exec do Fstab afeta os compartilhamentos do samba

2

Montei várias unidades de dados e usei o parâmetro noexec . Pensando que, como são apenas dados, eu não precisaria de exec . Agora estou tendo alguns problemas de permissão e gostaria de descartar isso como a causa, bem como entender melhor a opção.

O parâmetro exec em /etc/fstab tem o mesmo efeito que conceder permissões de execução a todos os diretórios e arquivos no sistema montado?

Como isso afeta os executáveis do Windows ( .exe ) acessados via compartilhamentos samba ou outros protocolos de rede?

As unidades montadas serão agrupadas com aufs ou mhddfs e acessadas por meio de um ponto de montagem central em /mnt/virtual . Ele será acessado via rede (samba agora). Haverá algum acesso local também ( xbmc ). Não tenho certeza se devo fornecer um link direto ou link de samba para os arquivos?

Qual é a melhor prática neste caso?

    
por DominicM 14.10.2014 / 12:23

1 resposta

1

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 .

excerto - página de manual do mount.cifs

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.

excerto - uso mount.cifs
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.

trecho da página man do fstab

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.

    
por 14.10.2014 / 13:22

Tags