The method for this varies depending on the version of Blender, but yes it can be done. For version 2.8 and more recent, the recommended approach is:
The Library file is the file that you will be linking from. In it, create a collection containing both the armature and the mesh. When you link, link the collection, not the contents.
Once you have linked, you need to configure the setup for posing. In theory, you could use a library override in all instances, but in 2.8x, proxies are less buggy and I recommend a proxy for 2.8x and a library override for 2.9 and later.
To make a proxy, as soon as you link the collection, select the object and then from the Object menu select Relations -> Make Proxy. From the drop down that appears select the armature.
To make a library override, ass soon as you link the collection, go to the Object Menu in the 3D Viewport and select Relations -> Make Library Override.
The Blender manual describes proxies thusly
Proxies are the historical way in Blender to allow some local editing of linked data-blocks. This is mostly aimed at character animation.
The manual describes library overrides so:
Library Overrides is a system designed to replace and supersede Proxies. Most types of linked data-blocks can be overridden, and the properties of those overrides can then be edited. When the library data changes, unmodified properties of the overridden one will be updated accordingly.
The transition from proxy to library override has been a bumpy road. Library overrides were very buggy in 2.8, became better in 2.9, and are slated to completely replace proxies in 3.1.
In either event, for armatures, "limited editing" includes posing, so if you want to pose an armature that you linked from a library you have to use this approach.