SHRINK FILE works with SA but not as a normal user
The last thing you want is allowing a normal user to run DBCC SHRINKxxx

This should be reserved for highly privileged users to run in a few rare circumstances. This should not be a regular or normal operation.

Permissions for both DBCC SHRINKDATABASE and DBCC SHRINKFILE are


  Requires membership in the sysadmin fixed server role or the db_owner fixed database role.


If you really want to run this because you know better, then use a stored proc with EXECUTE AS

CREATE PROC dbo.IKnowBetter
WITH EXECUTE AS OWNER -- escalates to db_owner in dbo schema
AS
DBCC SHRINKFILE (1);
DBCC SHRINKFILE (2);
GO
GRANT EXECUTE ON dbo.IKnowBetter TO OikUser;