Can a parent component set the attributes of a child component

You cannot directly modify a child components attribute in parent.It provides that extra layer of security when each component can only modify its own attributes.

You can do it in 3 ways

  1. Pass an attribute by reference to child component from parent and whenever its changes the child component can handle it appropriately

  2. Use Application events to communicate with Child components

  3. Expose a method from the child component using aura:method and call it from the parent by using component.find("aura:id").methodname();

Check out this link from salesforce where they have explained this in detail.