Premessa
Ho riflettuto un po' sul tuo problema, prima di darti quella che penso essere una temporanea soluzione, dove "temporanea" va inteso nel senso che la devi riapplicare ogni volta (eccetto una parte espressamente indicata come non temporanea) e che va comunque poi discussa insieme (nell'ipotesi che ti risolva "temporaneamente" il problema).
Il motivo per cui ti suggerisco una soluzione temporanea è il seguente
Tu stai usando una partizione di tipo NTFS. Questo tipo di partizioni generalmente sono usate per condividere i
dati con un sistema di casa Microsoft.
Non è del tutto "sensato" condividere anche degli eseguibili su questo genere di partizioni, dal mio punto di vista (maturato durante la lettura di alcune documentazioni per risolverti il problema, in quanto non uso sistemi di casa Microsoft).
Non è del tutto "sensato", per via della gestione dei permessi su questo tipo di partizione.
Quando usi questo filesystem proprietario su Linux, visto che a quanto ho capito la Microsoft a suo tempo ha deciso di non supportare la gestione dei permessi "a la Linux", puoi sì gestire i permessi, ma solo complessivamente al momento del mount.
Non puoi pertanto avere alcuni file non eseguibili. Da qui nasce un ben ovvio problema di sicurezza: se vuoi poter eseguire un singolo "programma" devi dare l'eseguibilità a tutto quello che c'è dentro la partizione.
Detto questo, veniamo al dunque.
Ho formattato una pendrive in NTFS con Gparted (che non è una buona prassi, in quanto è meglio farlo da un sistema Microsoft, ma non ne ho uno).
Ho inserito la pendrive e mi viene montata come viene montata a te (vedi i parametri tra parentesi):
Codice: Seleziona tutto
/dev/sdb1 on /media/vaevictis/foo type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
Le differenze sono:
-) nel nome del device, che per me è
/dev/sdb1 mentre per te è
/dev/sda4,
-) ovviamente nel nome utente che per me è
vaevictis, mentre per te è
michele
-) e infine nel nome della directory di mount (vedi sotto il punto 1) ).
Da qui in poi do per scontata questa differenza e lascio a te le dovute modifiche.
Nella pendrive ho compilato
Codice: Seleziona tutto
vaevictis@vaevictis-HAL:/media/vaevictis/foo$ g++ -Wall -pedantic -o prova prova.cpp
il sorgente di un programma in C++ (Hello world)
Codice: Seleziona tutto
vaevictis@vaevictis-HAL:/media/vaevictis/foo$ cat prova.cpp
#include <iostream>
using namespace std;
int main() {
cout << "Hello world" << endl;
}
Provo ad eseguire e ho il tuo stesso "errore"
Codice: Seleziona tutto
vaevictis@vaevictis-HAL:/media/vaevictis/foo$ ./prova
bash: ./prova: Permesso negato
in quanto, appunto, non ho i permessi
Codice: Seleziona tutto
vaevictis@vaevictis-HAL:/media/vaevictis/foo$ ls
totale 13K
-rw------- 1 vaevictis vaevictis 9,0K mar 29 14:40 prova
-rw------- 1 vaevictis vaevictis 90 mar 29 02:51 prova.cpp
La più "semplice" ma non per questo "innoqua" soluzione è la seguente (in cui dovrai tenere conto delle differente, come indicato sopra).
La parte che devi fare una sola volta è:
1) crei un punto di mount
in cui $USER viene espanso da bash al tuo nome utente, mentre PuntoDiMount è il nome che ho scelto io e che ovviamente puoi cambiare.
La parte che devi fare ogni volta (a meno di non rendere la procedura "automatica" tramite la modifica del file /etc/fstab) è la seguente:
2) smonti la partizione se è montata:
Codice: Seleziona tutto
vaevictis@vaevictis-HAL:/media/vaevictis$ sudo umount /dev/sdb1
3) monti la partizione da terminale direttamente nella directory che hai creato al punto 1)
Codice: Seleziona tutto
sudo mount -t ntfs-3g -o defaults,auto,uid=1000,gid=1000,umask=022 /dev/sdb1 /media/vaevictis/puntoDiMount/
In questa riga di comando ho dato per scontato che il tuo l'id del tuo utente e del suo gruppo sia 1000.
Lo puoi controllare con il comando:
per uid e il comando
Codice: Seleziona tutto
vaevictis@vaevictis-HAL:~$ grep "^$USER" /etc/group
vaevictis:x:1000:
per il gid.
Al che... il file risulta eseguibile:
Codice: Seleziona tutto
vaevictis@vaevictis-HAL:/media/vaevictis/puntoDiMount$ ./prova
Hello world
A mene che non sia richiesto esplicitamente da te, continuando a sottolinearne le "pericolosità", non ti dico come rendere il mount automatico

Il motivo è che in questo modo
il tuo utente può eseguire tutto quello che c'è in quella partizione
Infatti
Codice: Seleziona tutto
vaevictis@vaevictis-HAL:/media/vaevictis$ ls /media/vaevictis/puntoDiMount/
totale 13K
-rwxr-xr-x 1 vaevictis vaevictis 9,0K mar 29 14:40 prova
-rwxr-xr-x 1 vaevictis vaevictis 90 mar 29 02:51 prova.cpp
Se vuoi rendere questa modifica automatica all'avvio (contrariamente al mio punto di vista, ma in modo legittimo perché in fin dei conti è il tuo sistema

) dobbiamo fare alcune modifiche.
Fammi sapere se ti risolve temporaneamente il problema e come vuoi procedere.
A margine, non ho ben capito in che senso a te abbia sempre funzionato...
p.s.:
Gentilmente, a beneficio degli utenti che avessero il tuo stesso problema e facessero una ricerca in questo forum (e a beneficio di chi fornisce supporto che quindi non si vedrebbe costretto a ripetere tutto da capo), ti chiedo di cambiare il titolo della discussione (cambiando il titolo del primo messaggio della stessa) in (una cosa del tipo):
Esecuzione file su NTFS permesso negato