He montado varias unidades de datos y utilicé noexec
pará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.
¿ exec
El parámetro /etc/fstab
tiene 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 aufs
o mhddfs
y 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.cifs
saber qué se utilizará para montar las acciones enumeradas, /etc/fstab
hay una nota que lo menciona noexec
.
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.cifs
uso muestra cómo se usaría esa opción.
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 fstab
pá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.
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 UnixPuede probar esto mount.cifs
directamente 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 .exe
archivos con éxito a través de esta configuración de montaje.
NOTA:Utilicé el \\vboxsrv
mecanismo 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.