La butto la, mi è venuto in mente al volo (sicuramente ci sono metodi migliori).
Crei una pagina PHP che prende in input (con GET) una stringa, e controlla che sia valida. Se è corretta, fa partire il download.
Esempio della pagina download.php:
[PHP]<?php
if (isset($_GET['id']) && $_GET['id'] == 'uCTVCU6c2PBhJDG7YWsd5z7r') {
//se la stringa esiste ed è quella che mi aspetto allora reindirizzo sul file da scaricare
header("Location: URL-DEL-FILE");
}
else{
//l'id è sbagliato o non è stato inserito, per cui non ti faccio scaricare il file
echo 'Download non autorizzato';
}
?>[/PHP]
L'url che gli utenti dovranno vedere per scaricare il file sarà sito.it/download.php?id=uCTVCU6c2PBhJDG7YWsd5z7r
Se vuoi far durare il download per qualche giorno, alla scadenza devi semplicemente cambiare la stringa nel tuo file download.php mettendone un'altra, così le persone in possesso del vecchio url (sito.it/download.php?id=uCTVCU6c2PBhJDG7YWsd5z7r) non potranno più scaricare il file dato che l'if() non verrà verificato.