How to prevent a user from deleting the folders and files on his own home directory? In my scenario user can create & modify the folders but user should not delete them. How could we achieve this?
Deleting a file requires write permissions to the file's parent directory. The same permissions you would need to have to be able to create files in the directory in the first place, so your requirements are conflicting: removing write permission to the user's homes to prevent deletion also prevents creation of files.
Note that file creation and file deletion are very similar: in both cases you are changing the entries in a directory, whether by adding or removing an entry.
If you really wanted to, I suppose you could manually make important existing files immutable with the following:
$ chattr +i filename
This will add the i attribute to the file, which would prevent anyone from modifying or deleting it in any way. You can check if a file is immutable as such:
$ lsattr filename ----i--------e-- filename
If the i tag is present, it is immutable. To remove it, use:
$ chattr -i filename
NOTE: you have to be root to add or remove the immutable tag to files.
The downside to this, of course, is that you'd have to go and do this manually for all the files you want to be protected from deletion. The upside is, it does not prevent a user from creating new files.