Grammar for $\{a^n b^n c^m d^m \mid n \geq 1, m \geq 0\}$
You can always write a grammar without $\lambda$, unless the language itself includes $\lambda$. In that case, you will need the single production $S\to\lambda$ (where $S$ is the start symbol).
There's a simple algorithm for removing $\lambda$ from grammars. First, figure out which non-terminals might produce $\lambda$. (These non-terminals are called &quot;nullable non-terminals&quot;.) Then, for each nullable non-terminal and for each production in which it occurs, add a new production which is the same but without the non-terminal. (If the non-terminal appears more than once in the same production, do this for each occurrence of the non-terminal.) Keep doing this until no more additions are possible. Then remove all of the productions with empty right-hand sides, except the empty production for the start symbol (if there is one).
Applying this algorithm to your example, we first find that $Y$ and $Z$ are nullable, while $S$ and $X$ are not. So then we need to add additional productions:

From $X\to a Z b$, add $X\to a b$.
From $Y\to c Y d$, add $Y\to c d$.
From $S\to X Y$, add $S\to X$.

That gives us:
$$S\to X Y, S\to X\\
X\to a Z b, 
X\to a b \\
Z\to X,
Z\to \lambda \\
Y\to c Y d,
Y\to c d,
Y\to \lambda
$$
We then delete the two empty productions, leaving:
$$S\to X Y, S\to X\\
X\to a Z b, 
X\to a b \\
Z\to X \\
Y\to c Y d,
Y\to c d
$$
At this point, we might note that $Z$ is totally redundant. We can simplify the grammar by just substituting its right-hand side in the only place where it is used:
$$S\to X Y, S\to X\\
X\to a X b, 
X\to a b \\
Y\to c Y d,
Y\to c d
$$