¿Cómo afecta el parámetro noexec de Fstab exec a los recursos compartidos de samba?

¿Cómo afecta el parámetro noexec de Fstab exec a los recursos compartidos de samba?

He montado varias unidades de datos y utilicé noexecparámetros. Pensando que, dado que son solo datos, no los necesitaría exec. Ahora tengo algunos problemas con los permisos y me gustaría descartar que esto sea la causa, así como comprender mejor la opción.

¿ execEl parámetro /etc/fstabtiene el mismo efecto que otorgar permisos de ejecución a todos los directorios y archivos en el sistema montado?

¿Cómo afecta a los ejecutables de Windows ( .exe) a los que se accede a través de recursos compartidos de Samba u otros protocolos de red?

Las unidades montadas se agruparán con aufso mhddfsy se accederá a ellas a través de un punto de montaje central en /mnt/virtual. Luego se accederá a través de la red (samba ahora mismo). También habrá algo de acceso local ( xbmc). No estoy seguro de si debo proporcionarle un enlace directo o un enlace samba a los archivos.

¿Cuál es la mejor práctica en este caso?

Respuesta1

Mirando las páginas del manual

Si observa la página de manual para mount.cifssaber qué se utilizará para montar las acciones enumeradas, /etc/fstabhay una nota que lo menciona noexec.

extracto - página de manual de mount.cifs

Este comando solo puede ser utilizado por root, a menos que esté instalado setuid, en cuyo caso los indicadores de montaje noeexec y nosuid están habilitados. Cuando se instala como un programa setuid, el programa sigue las convenciones establecidas por el programa de montaje para montajes de usuarios, con la restricción adicional de que los usuarios deben poder ingresar chdir() en el punto de montaje antes del montaje para poder montar en él.

Algunas herramientas de cliente de Samba como smbclient(8) respetan los parámetros de configuración del lado del cliente presentes en smb.conf. A diferencia de esas herramientas cliente, mount.cifs ignora smb.conf por completo.

Dado esto, esperaría que respete la opción exec/noexec si se incluye en cualquier intento de montaje. Además, observar el mount.cifsuso muestra cómo se usaría esa opción.

extracto: 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

Mirar la fstabpágina de manual explica el propósito previsto para exec/noexec, pero no especifica si es para todos los ejecutables o solo para los de Unix.

extracto de la página de manual de fstab

ejecutivo / noexec

exec le permite ejecutar archivos binarios que están en esa partición, mientras que noexec no le permite hacerlo. noexec puede ser útil para una partición que no contiene archivos binarios, como /var, o contiene archivos binarios que no desea ejecutar en su sistema, o que ni siquiera pueden ejecutarse en su sistema, como podría ser el caso de una partición de Windows.

¿Exec/noexec hace que todo sea ejecutable?

No, el atributo exec/noexec simplemente controla el permiso de cosas que están marcadas como ejecutables a través de sus bits de permisos, no afecta los permisos directamente.

¿Qué pasa con los binarios de Windows?

Sin embargo, la configuración de exec/noexec no tiene control sobre los ejecutables de Windows, solo los ejecutables de Unix que también pueden residir en estos recursos compartidos.

Además, ni siquiera estoy seguro de cómo entrarían en juego si está montando un recurso compartido CIFS/Samba a través de /etc/fstab, cuándo entraría en juego un sistema operativo Windows en este escenario. Windows podría/montaría este recurso compartido directamente y ni siquiera se molestaría en pasar por Linux.

Probandolo

Ejemplo de Unix

Puede probar esto mount.cifsdirectamente a través de la línea de comando de esta manera. Suponiendo que tuviéramos un archivo en el recurso compartido CIFS/Samba de la siguiente manera:

$ cat cmd.bash 
#!/bin/bash

echo "hi"

$ chmod +x cmd.bash

Ahora lo montamos así e intentamos ejecutar el 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

Si omitimos esa opción noexec:

$ mount.cifs //server/cifsshare /path/to/cifsmnt -o user=joeuser

$ cd /path/to/cifsmnt
$ ./cmd.bash
hi
Desde Windows

El único escenario que podría concebir aquí sería si estuviera usando algo como Virtualbox y montara un recurso compartido CIFS/Samba dentro de un directorio que una máquina virtual de Windows podría utilizar.

Cuando probé esto, pude ejecutar .exearchivos con éxito a través de esta configuración de montaje.

NOTA:Utilicé el \\vboxsrvmecanismo de compartir en Virtualbox para montar mi directorio de inicio que es local en mi sistema /home/saml. Luego ejecuté este comando, montando un recurso compartido CIFS/Samba como un directorio dentro de /home/saml.

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

Conclusiones

Hacer lo anterior parecería indicar que exec/noexec no tiene ningún control sobre el acceso de Windows a los archivos.

información relacionada