for anonymous user, webform not submitted because of private file
First and foremost, you've got an error in how you set up your private files path. It should be located outside of your web root, not as a subfolder of your public files. The way it is now, your private files are actually public. That is the reason why you can acces the file at '/sites/default/files/private/webform/abc.jpg', you shouldn't be able to do that.

Now as to why you get an error uploading it is probably an issue with how your permissions are configured for private files. The anonymous user can upload to the private files, but does not have sufficient permissions to access the uploaded file.