Is it possible to provide a user with a symbolic temporary link to a file on a server?
Example: I want to give my music album to a user. If he paid me, I generate on the fly a temporary symbolic link to an actual link on server side and send him. Is this a common practice?
Yes. This is very much common practice.
These are similar to the URLs used for password reset, or password recovery.
Essentially a long random string, which is stored in your db, with an expiry of say 1hr, 1day or 1 week as is your policy.
In the db, the random string is mapped to the user, file, etc.
If the URL is accessed, the db is looked up, updated with access time, and the file transferred over. By storing the access time, and success status of transfer, you can even prevent it being downloaded multiple times with the same URL.
If you use AWS for your files, you would use url_for on the music album object, generate the url with an expiry time, and give it to the user – http://docs.amazonwebservices.com/AWSRubySDK/latest/AWS/S3/S3Object.html#url_for-instance_method