First of all, Name of an array is not the same as a pointer to the first element. In some cases, the array name decays to the pointer to the first element but in general, they are not the same.
Coming to your problem there, array names are not modifiable lvalues, so they cannot be assigned.
Quoting chapter §6.3.2.1 for C11, Lvalues, arrays, and function designators
[...] A modifiable lvalue is an lvalue that
does not have array type, does not have an incomplete type, does not have a const-qualified
type, and if it is a structure or union, does not have any member (including,
recursively, any member or element of all contained aggregates or unions) with a const-qualified
type.
For assignment operator, the LHS should be a modifiable lvalue.
Quoting C11, chapter §6.5.16,
An assignment operator shall have a modifiable lvalue as its left operand.
In your case,
str2=str1;
str2 is not a modifiable lvalue. Hence, you get the error.
FWIW, to copy the contents, you can use strcpy() from string.h header file.