Мне кажется, проблема в том, что вы цитируете команду для явного запуска: QProcess
идет на несколько значений, чтобы гарантировать, что параметры передаются как есть, а не делятся дальше.
Вместо этого попробуйте ...
QProcess::execute("/bin/su", {"-", "user", "-c", "/bin/tar xpf /tmp/smt.tbz2 -C /tmp"});