このための独自のタスクを、かなり単純なコードで作成することになりました。
[TaskName("addusertodir")]
public class AddUserToDirectorySecurity : Task
{
    [TaskAttribute("dir", Required=true)]
    public string DirPath { get; set; }
    [TaskAttribute("user", Required=true)]
    public string UserName { get; set; }
    protected override void ExecuteTask()
    {
        FileSystemAccessRule theRule1 = new FileSystemAccessRule(UserName, FileSystemRights.ListDirectory, AccessControlType.Allow);
        FileSystemAccessRule theRule2 = new FileSystemAccessRule(UserName, FileSystemRights.ReadAndExecute, AccessControlType.Allow);
        FileSystemAccessRule theRule3 = new FileSystemAccessRule(UserName, FileSystemRights.Read, AccessControlType.Allow);
        DirectorySecurity theDirSecurity = new DirectorySecurity();
        theDirSecurity.AddAccessRule(theRule1);
        theDirSecurity.AddAccessRule(theRule2);
        theDirSecurity.AddAccessRule(theRule3);
        Directory.SetAccessControl(DirPath, theDirSecurity);
    }
}
次に、カスタム タスクをロードして実行する nant スクリプトを記述できます。
<loadtasks>
    <fileset>
        <include name="MyTask.dll"/>
    </fileset>
</loadtasks>
<addusertodir dir="MyDir" user="IIS_WPG"/>
明らかに、これは特定のルールに合わせて変更することも、必要に応じてタスクでこれをパラメーター化することもできます。適用されるパーミッションをより細かく制御できるため、exec タスクを使用するよりもこれを優先しました。