
Version courte
La commande doas sous Debian n'ajoute pas à la variable PATH les chemins : /sbin:/usr/sbin
J'ai trouvé une solution qui fonctionne :
Ajouter à la fin de : /home/admin/.profile
Code : Tout sélectionner
PATH="$PATH:/usr/sbin:/sbin"

Version longue
CONTEXTE
Comme déjà discuter dans SÉCURITÉ : "doas" alternative à "sudo" (vos avis)
je teste l'usage de doas pour l'administration d'un serveur web.
Pour cela je dispose d'un utilisateur "ordinaire" nommé admin
ce compte sert aux tâches d'administration via connexion SSH avec une clé, évitant ainsi les connexions en "root" (interdites dans sshd.config).
Pour la configuration de doas l'ajout au fichier /etc/doas.confd'une ligne :
Code : Tout sélectionner
permit nopass admin
Mais malgré :
Code : Tout sélectionner
admin@server:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
admin@server:~$ doas env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
on a :
Code : Tout sélectionner
admin@server:~$ doas fdisk -l
doas: fdisk: command not found
alors que : admin@server:~$ doas /sbin/fdisk -l
fonctionne parfaitement !
La modification de /etc/doas.conf pour une des lignes suivantes :
Code : Tout sélectionner
permit nopass admin as root
permit nopass setenv { PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin } admin
permit nopass setenv { PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin } admin as root
Il semblerait que la cause soit qu'au moment où doas passe la commande,
la variable PATH ne soit pas encore modifiée (ce n'est pas très clair pour moi)
J'ai trouvé ce problème posé (à propos de Debian) dans une liste de diffusion d'OpenBSD : 'doas 101 question' - MARC
et
aussi dans :doas doesn't run a -usr-sbin binary | unix.stackexchange.com
La discussion sur OpenBSD se conclut par :
In order to use doas,
you already have to customize your system (it does nothing out-of-the-box).
You might as well take another step, and customize your login so that your PATH contains /usr/local/sbin and so on.
The details of how to do this are extremely specific to how you login,
but it should be pretty simple if you know what you're doing.
Traduction
Pour pouvoir utiliser doas,
vous devez d'abord personnaliser votre système (il ne fait rien par défaut).
Vous pouvez aussi aller pour loin, et personnaliser votre login pour que votre PATH contienne /usr/local/sbin et ainsi de suite.
Les détails de cette opération sont extrêmement spécifiques à votre mode de connexion,
mais cela devrait être assez simple si vous savez ce que vous faites.
Voilà, je pense que vous comprenez où je veux en venir :
... cela devrait être assez simple si vous savez ce que vous faites.
Avant de poster ici,
pensant que la question relevait d'avantage de doas + linux
que de Debian plus spécifiquement,
j'ai posé la question sur LQ : doas : setting root's PATH (/sbin) for admin user
LQ m'a permis de trouvé une solution qui fonctionne bien :
Ajouter à la fin de : /home/admin/.profile
Code : Tout sélectionner
PATH="$PATH:/usr/sbin:/sbin"
en remplaçant la ligne précédente par celle-ci :
Code : Tout sélectionner
export PATH="$PATH:/usr/sbin:/sbin"
ou je zappe un truc important ?
En tous cas, ça fonctionne !
Une autre méthode serait d'agir au niveau de pam
(c'est totalement nouveau pour moi)
Voici ce que j'ai testé et qui ne fonctionne pas :
J'ai crée ~/.pam_environment pour :
Code : Tout sélectionner
$ cat ~/.pam_environment
PATH DEFAULT=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/sbin:/sbin
puis, j'ai édité /etc/pam.d/doas pour :
Code : Tout sélectionner
$ cat /etc/pam.d/doas
#%PAM-1.0
@include common-auth
@include common-account
@include common-session-noninteractive
session required pam_env.so user_readenv=1
session required pam_env.so readenv=1 user_readenv=1
sans plus de succès.
Code : Tout sélectionner
admin@server:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
admin@server:~$ env | grep PATH
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
admin@server:~$ doas env | grep PATH
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
Mais je dois avouer que j'ai assez de mal à bien cerner ces histoires d'environnement "pam".
Petite question annexe :
Quelles différences entre ces 3 commandes :
$ echo $PATH
$ set | grep PATH
$ env | grep PATH
car elles renvoient la même sortie.
Voilà, j'espère ne pas avoir été trop long et confus,
et vous saurez me dire la façon la plus orthodoxe de résoudre ce type de problème sans créer de faille, ni effets de bord indésirables.
Merci de m'avoir lu.