Les commandes qui ne fonctionnent pas sans être root ont probablement besoin d'être root.
Je ne connais pas magento, donc je ne peux pas être sûr. Mais à vue de net, un truc qui continent "setup:upgrade" est probablement quelque chose qui installe de nouveaux logiciels, donc typiquement quelque chose qui doit être fait en root.
Ce qui serait une faute grave, c'est d'être root pour créer les fichiers eux mêmes (les fichiers php, etc, par exemple). Car s'ils appartiennent au root, ça veut dire soit qu'il faut leur donner une visibilité universelle (ce qui n'est pas terrible), soit, pire, qu'il faut que le serveur tourne lui même avec les droits root.
Auquel cas, la première injection de code venue pourra avoir des conséquences bien plus catastrophiques que la normale (la différence entre le hacker qui arrive à entrer des valeurs bidons, et le hacker qui arrive à voler les mots de passe, ou effacer toute la machine, voire à utiliser votre serveur comme base arrière pour d'autres actions plus graves. Pour prendre une analogie "yahoo q/r" : la différence entre le hacker qui arrive à s'autoattribuer 12 peh, et le hacker qui efface tout yahoo, après avoir piqué les mots de passe de tout l emonde).
Mais bon, habituellement, les actions d'administrations sont faites comme root. Il en faut bien. Si on pouvait tout faire sans être root, cela serait grave aussi (si ne pas être root protège contre les bêtises, c'est bien parce qu'il y a des actions qui ne peuvent être faites que en étant root)
EDIT: ok, dans le cas précis de magento, il semble quand même que toutes les commandes "bin/magento" ne font que modifier des fichiers applicatifs (et pas installer du logiciel au niveau système). Donc en théorie, il ne devrait pas y avoir besoin d'être root pour taper les commandes. On est même dans le cas que je citais : si on est root pour taper le "upgrade", ça veut dire soit que les fichiers magento sont publics, soit que le serveur tourne en tant que root. Aucun des deux n'est génial (et le deuxième est vraiment une mauvaise idée).
Donc il serait mieux d'essayer de comprendre pourquoi ça ne marche pas sans être root
Etes-vous sur que votre compte utilisateur est le bon compte ?
Bien souvent il y a un compte ad-hoc créé pour. Il faut alors exécuter les commandes ni en tant que root ni en tant que vous, mais en tant que ce compte ad-hoc
genre
sudo -u magento php bin/magento etc
(sudo -u magento signifiant "exécuter en tant que magento")
Si c'est pas un problème de compte, êtes vous sur que l'ensemble du repertoire appartient bien à l'utilisateur en question ?
C'est un des inconvénients d'exécuter ces commandes comme root : il suffit de l'avoir fait une fois pour que certains et fichiers et répertoires appartiennent à root, et ne puissent donc plus être modifiés par personne d'autre que root.
Donc ça a un côté irreversible : faites-le une fois comme root, et ensuite vous êtes obligés de le faire tout le temps comme root.
Bon, pas si irréversible que ça. Si le problème est celui-là, un "chown" bien senti devrait régler définitivement le problème (à condition de ne pas recommencer ensuite)
En d'autres termes : quand une commande telle que celle que vous avez donnée ne fonctionne pas, quel est le message d'erreur ?