I am working on an idea of uploading a file on IPFS. But the requirement is, the uploaded file should be available for view only to the intended group of people. The code to upload the file is in JS. Now my question is, is it possible to upload a file in IPFS with limited permissions. The other question is , is it required to have IPFS installed at the end user to view the file in IPFS. If you can assist me by directing to proper documentation then that would also be great.
Once you upload a file to
ipfs, it is theoretically available to anyone who knows its hash. So, it's not possible to restrict the access to the file.
What is possible, is to encrypt the file in some way and only give the decryption key/password to the group of people you want to be able to access it.
Have a look at this awesome ipfs resources.
The projects that seem to best suit your requirements are:
ipfs-add-from-encrypted: This script takes a file or directroy as input, uses tar if a directory and GPG AES256 symmetric encryption with the password you provide and adds it to IPFS and returns the IPFS hash.
ipfsecret: Encrypt and decrypt IPFS files with a secret passphrase.
For your second question: it would be best to have a locally running ipfs node, but fortunately that's not required. Recently, cloudflare launched a set of hosted ipfs gateways which anybody can use.