A central issue in practically deploying network coding in a shared network is adaptive and efficient allocation of network resources. This issue can be formulated as an optimization problem of maximizing net-utility - difference between a utility derived from attainable multicast throughput and total cost of resource provisioning. We develop a primal-subgradient type distributed algorithm to solve this utility maximization problem. effectiveness of algorithm hinges upon two key properties we discovered: (1) set of subgradients of multicast capacity is convex hull of indicator vectors for critical cuts, and (2) complexity of finding such critical cuts can be reduced by exploiting algebraic properties of linear network coding. extension to multiple multicast sessions is also carried out. effectiveness of proposed algorithm is confirmed by simulations on an Internet Service Providers topology.