Montei várias unidades de dados e usei noexec
parâ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.
exec
O parâmetro in tem /etc/fstab
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 por meio de compartilhamentos de 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 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.cifs
que será usada para montar quaisquer compartilhamentos listados, /etc/fstab
há uma nota que menciona noexec
.
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.cifs
uso 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
Observar a fstab
página de manual explica a finalidade pretendida para exec/noexec, mas não especifica se é para todos os executáveis ou apenas para Unix.
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 UnixVocê pode testar isso mount.cifs
diretamente 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 .exe
arquivos por meio desta configuração de montagem.
OBSERVAÇÃO:Usei o \\vboxsrv
mecanismo 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.