Obliger pour certaines commandes de les executer en "sudo"

Bonjour à tous,

J’ai un VPS sous Debian 11 pour faire tourner quelques services.
Depuis hier, certaines commandes m’obligent à ajouter « sudo » tels que « ifconfig » / « reboot » / « shutdown » / « cron ».
Si je ne fais pas « sudo su » puis mes commandes ou "sudo ", il m’informe que la commande est introuvable.
Je souhaite enlever cette règle, car certaines actions ne peuvent plus se faire automatiquement.

Les actions que j’ai faites récemment qui aurait pu provoquer le problème (ce ne sont que des suppositions) :

  • Interdiction de se connecter en « root » en SSH
  • Ajout d’un user dans le groupe « sudo »

J’ai désinstallé/réinstallé le paquet « sudo » sans changement.

Merci d’avance.

@+

Quelle règle ? Si bash te dit « commande introuvable », c’est parce que le $PATH est incomplet et ne contient pas /sbin et /usr/sbin. Comment passes-tu root si tu n’utilises ni sudo ni le login root ? Si c’est avec « su » tout court, essaie plutôt « su - ».

PS: « sudo su » est une absurdité sans nom. Pour obternir un shell root avec sudo, utilise plutôt l’option -s ou -i (voir la page de manuel pour les différences).

Merci de ta réponse.

Effectivement, je passe en faisant simplement « su », en passant par « su - », je n’ai pas le souci.
Ce qui est assez « drôle » c’est qu’en me remettant sur mon utilisateur classique (après su -), je n’ai pas non plus le souci, il ne me dit pas commande introuvable.

Lorsque je parlais de règle, avant même avec un utilisateur lambda, je pouvais faire la commande, maintenant ce n’est plus possible.

En faites le but serait que depuis mon utilisateur classique, je puisse faire la commande « cron » sans passer par root ni sudo.

Je ne sais pas si je m’exprime avec les bons termes :sweat_smile:

Je me permets de mettre une info.
J’ai fait quelques recherches avec les infos que tu m’as données.

En faisant la commande « echo $PATH », il devrait me sortir ça "

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin"

Sauf que j’ai ça :

valentin@valentin:/$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
valentin@valentin:/$ 

Je ne sais pas si ça peut + illustrer mon problème.
Merci d’avance.


EDIT (modération) :
Remplacement de la capture d’écran au format image par son contenu en texte brut.

En vertu de quoi ?

C’est le $PATH standard.
PS: évite les copies d’écran pour du texte simple, c’est lourd et moins pratique.

J’ai lu ça sur un forum, il a indiqué qu’on devait normalement avoir la liste que j’ai donnée.

Est-il possible passer sous un $PATH « amélioré » par groupe par exemple ?
Il faudrait qu’un de mes groupes puisse lancer « cron » sans sudo (si c’est possible).

Pourquoi avoir besoin de lancer cron en utilisateur normal ? C’est un démon système lancé au démarrage.

# which ifconfig reboot shutdown cron
/usr/sbin/ifconfig
/usr/sbin/reboot
/usr/sbin/shutdown
/usr/sbin/cron

on voit que ces commandes sont dans le dossier /usr/sbin/ qui doit donc être dans $PATH

en fait PATH est créé via /etc/profile et ~/.profile


Peut-être veux-tu dire que les utilisateurs normaux doivent pouvoir mettre des commande en cron?

Exactement !

Si c’est possible d’autoriser que le user www-data a utiliser cron

J’en ai besoin car mon nextcloud a besoin d’utiliser cette commande avec ce user là

:face_with_raised_eyebrow: il doit faire quoi exactement ?

Mettre une cron en place pour que l’utilisateur www-data ou autre fasse quelque chose c’est normalement suffisant, tu a la possibilité de soit rajouter le path adéquat au PATH de l’utilisateur ou de lui faire un petit fichier sudoers.d/nextcloud avec la ou les permissions adéquat.

Au passage tu devrais pour faire plus propre et sécurisé utiliser un utilisateur propre à Nextcloud avec les permissions adéquate, il y a déjà eu sur ce forum des discussions là-dessus.

Pourquoi nextcloud aurait-il besoin d’exécuter cron ? Cron est le démon qui exécute les tâches périodiques, il est lancé au démarrage et il n’y a pas lieu de le relancer. Si c’est pour gérer des tâches cron, pas besoin de lancer cron lui-même, cela se fait avec crontab.