Вы можете создать обработчик событий , который нарушит наследование прав доступа к файлу и изменит требуемые разрешения.
Другой вариант - переместить файл в папку (или даже в отдельную библиотеку документов).), который предварительно настроен с необходимыми разрешениями.
Первый вариант проще реализовать, но управление безопасностью может стать ... грязным.
Здесь некоторый код, который поможет вам взломать и установить права доступа к документу.
public string ItemPermission(string SitePath)
{
string ReturnVal = "";
try
{
SPSite WebApp = new SPSite(SitePath);
SPWeb Site = WebApp.OpenWeb();
SPList list = Site.Lists["TestDocLib"];
SPListItem item = list.Items[0];
SPRoleDefinition RoleDefinition = Site.RoleDefinitions.GetByType(SPRoleType.Contributor);
SPRoleAssignment RoleAssignment = new SPRoleAssignment("<domain>\\<user>", "email", "name", "notes");
RoleAssignment.RoleDefinitionBindings.Add(RoleDefinition);
if(!item.HasUniqueRoleAssignments)
{
item.BreakRoleInheritance(true);
}
item.RoleAssignments.Add(RoleAssignment);
item.Update();
}
catch (Exception ex)
{
ReturnVal += "Permission not set, reason: " + ex.Message;
}
return ReturnVal;
}