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

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

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

execO parâmetro in tem /etc/fstabo 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 ​​por meio de compartilhamentos de samba ou outros protocolos de rede?

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

Qual é a melhor prática neste caso?

Responder1

Olhando através das páginas de manual

Se você olhar a página de manual mount.cifsque será usada para montar quaisquer compartilhamentos listados, /etc/fstabhá uma nota que menciona noexec.

trecho - página de manual mount.cifs

Este comando pode ser usado apenas pelo root, a menos que o setuid esteja instalado, caso em que os flags de montagem noeexec e nosuid estão habilitados. Quando instalado como um programa setuid, o programa segue as convenções estabelecidas pelo programa de montagem para montagens de usuários, com a restrição adicional de que os usuários devem ser capazes de chdir() no ponto de montagem antes da montagem para poder montar isto.

Algumas ferramentas do cliente samba, como o smbclient(8), respeitam os parâmetros de configuração do lado do cliente presentes no smb.conf. Ao contrário dessas ferramentas cliente, o mount.cifs ignora completamente o smb.conf.

Diante disso, eu esperaria que ele honrasse a opção exec/noexec se ela estivesse incluída em qualquer tentativa de montagem. Além disso, observar o mount.cifsuso mostra como essa opção seria usada.

trecho - uso de 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

Observar a fstabpágina de manual 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 de manual do fstab

exec/noexec

exec permite executar binários que estão nessa partição, enquanto noexec não permite fazer isso. noexec pode ser útil para uma partição que não contém binários, como /var, ou contém binários que você não deseja executar em seu sistema, ou que nem mesmo podem ser executados em seu sistema, como pode ser o caso de uma partição do Windows.

exec/noexec torna tudo executável?

Não, o atributo exec/noexec simplesmente bloqueia a permissão de coisas marcadas como executáveis ​​por meio de seus bits de permissão, mas não afeta as permissões diretamente.

E os binários do Windows?

No entanto, a configuração exec/noexec não tem controle sobre os executáveis ​​do Windows, apenas os executáveis ​​Unix que também podem residir nesses compartilhamentos.

Além disso, não tenho certeza de como isso entraria em ação se você estivesse montando um compartilhamento CIFS/Samba por meio de /etc/fstab, quando um sistema operacional Windows entraria na mistura nesse cenário. O Windows montaria/poderia montar esse compartilhamento diretamente e nem se preocuparia em passar pelo Linux.

Testando

Exemplo do Unix

Você pode testar isso mount.cifsdiretamente através da linha de comando, assim. Supondo que tivéssemos 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 imaginar aqui seria se eu estivesse usando algo como o Virtualbox e montasse um compartilhamento CIFS/Samba dentro de um diretório que uma VM do Windows pudesse utilizar.

Quando testei isso, consegui executar .exearquivos por meio desta configuração de montagem.

OBSERVAÇÃO:Usei o \\vboxsrvmecanismo de compartilhamento no Virtualbox para montar meu diretório inicial local no meu sistema, /home/saml. Em seguida, executei este comando, montando um compartilhamento CIFS/Samba como um diretório dentro do arquivo /home/saml.

$ mkdir /home/saml/cifsmnt
$ mount //server/cifsshare cifsmount -o user=joeuser,noexec

Conclusões

Fazer o que foi dito acima parece indicar que exec/noexec não impede o acesso do Windows aos arquivos.

informação relacionada