How can I provide
sudo access for a user, but restrict them to only editing of files, and only files that are under a nominated directory. For example, I would like the user
abc to be able to edit all files in
/var/www/vhosts/hostabc/ and its children.
It looks like there's no straightforward way. An old mailing list post implies that such a feature was discussed a few years ago, but a look at the current changelog shows that the post's pessimism is right, and nothing ever came of it.
Can you change the group ownership of those files? If you can, you can use
chmod g+S /var/www/vhosts/hostabc, and then new files will also get that group. Alternately, and perhaps better although less transparent, you could use ACLs. These approaches would let you avoid using
sudo at all.
Or, to extend mattdm's suggestion, don't forget that sudo can be used to grant access to users other than root. You could create a custom user just for this purpose,
chown -R customuser:customgroup /var/www/vhosts/hostabc, then give userabc sudo privileges to the customuser user. The user isn't used for anything else, so it's reasonably safe to do.
You also don't have to worry about using chmod +S to ensure inheritance, since the edits will be being done as the customuser user.