Contexte
L'alternative d'OpenBSD à sudo
is doas
, bien qu'elle ne fonctionne pas de la même manière que sudo et nécessite une configuration. C'est un acronyme pour "sous-exécuteur d'application openbsd dédié". OpenBSD 5.8, sorti en 2015, a été le premier à inclure doas
. Il a été créé par Ted Unangst après avoir été insatisfait de la complexité de sudo et avoir eu des problèmes avec la configuration par défaut de sudo.
La doas
commande est simple par conception et ne contient pas de fonctionnalités avancées requises pour les infrastructures sysadmin élaborées. Pour la plupart des gens, c'est plus que suffisant. Si vous en avez besoin sudo
, installez-le avec en pkg_add sudo
tant que root.
Installation
OpenBSD version 5.8 et ultérieure est doas
préinstallé.
Configuration
Pour donner aux utilisateurs du groupe de roues un accès à doas
, ajoutez ce qui suit à /etc/doas.conf
. Vous aurez besoin d'un accès root pour modifier ce fichier.
permit :wheel
Cela donnera à tous les utilisateurs du groupe de roues l'autorisation d'exécuter des commandes comme n'importe quel utilisateur.
Si vous souhaitez que les utilisateurs puissent entrer leur mot de passe une fois, sans avoir à le saisir pendant un certain temps, utilisez l' persist
option. Voici un exemple qui n'accorde des autorisations qu'au groupe de roues:
permit persist :wheel
Vous pouvez à la place utiliser l' nopass
option si vous souhaitez qu'ils n'aient jamais à saisir leur mot de passe:
permit nopass :wheel
Si vous souhaitez que l'utilisateur "mynewuser" ait des droits d'administrateur, vous pouvez soit les ajouter au groupe de roues en exécutant en usermod -G wheel mynewuser
tant que root, soit ajouter une ligne à votre /etc/doas.conf
afin qu'il ressemble un peu à ce qui suit:
permit nopass :wheel
permit nopass mynewuser
Cet exemple suppose que vous n'avez pas besoin que vos utilisateurs saisissent un mot de passe lors de l'utilisation doas
. Si vous souhaitez le configurer de sorte que mynewuser ne soit autorisé à exécuter des commandes qu'en tant qu'utilisateur www, la configuration sera la suivante:
permit nopass :wheel
permit nopass mynewuser as www
Si vous souhaitez que mynewuser puisse utiliser uniquement la commande "vim" avec des doas, utilisez la configuration suivante:
permit nopass :wheel
permit nopass mynewuser as www cmd vim
Il existe d'autres options de configuration, mais celles décrites ici sont les plus courantes. Si vous souhaitez en savoir plus, vous pouvez utiliser la commande man doas.conf
pour lire la page de manuel doas.conf (5).
Test des fichiers de configuration
Pour tester un fichier de configuration, utilisez la doas -C /etc/doas.conf
commande. Si vous fournissez une commande par la suite, par exemple doas -C /etc/doas.conf vim
, il vous indiquera si vous avez l'autorisation d'exécuter une commande ou non sans essayer d'exécuter la commande.
Usage
Un utilisateur peut exécuter la commande en echo "test"
tant que root en utilisant la commande: doas echo "test"
Un utilisateur autorisé à utiliser des doas pour s'élever à l'utilisateur "www" peut exécuter la commande en vim /var/www/http/index.html
tant qu'utilisateur "www" en utilisant la commande: doas -u www vim index.html
Ceci est utile pour quelqu'un qui gère le serveur Web mais ne dispose pas des autorisations de superutilisateur.
Les meilleures pratiques
Il est fortement recommandé d'utiliser le permis au lieu de refuser dans la mesure du possible. Si vous refusez à un utilisateur d'utiliser une commande spécifique, il peut être en mesure d'utiliser un autre chemin ou nom de cette commande s'il existe. Ils peuvent également copier l'exécutable de la commande dans leur répertoire personnel, puis exécuter cet exécutable, défaisant ainsi votre système d'autorisations.
D'une manière générale, il est préférable d'utiliser des doas que d'utiliser su car personne n'a à partager le mot de passe root. Il n'y a aucune chance que quelqu'un le modifie, l'oublie et verrouille tout le monde hors du système si chacun utilise son propre mot de passe pour l'accès root. Les journaux sont conservés /var/log/secure
.
Trucs et astuces
Vous pouvez conserver toutes vos variables d'environnement avec keepenv, ce qui est utile si votre éditeur est défini sur quelque chose et que vous ne voulez pas qu'il change lorsque vous devenez un autre utilisateur. Voici un exemple avec mynewuser:
permit nopass keepenv mynewuser
Parfois, il existe des situations où l'écrasement de chaque variable d'environnement peut casser des choses, mais avec setenv, vous pouvez choisir celles que vous souhaitez reporter. Voici un exemple qui gardera votre éditeur défini sur tout ce que vous voulez utiliser avec git et d'autres choses.
permit nopass setenv { VISUAL EDITOR } mynewuser
Vous pouvez également utiliser setenv pour supprimer les variables d'environnement (en mettant un tiret avant chacune que vous souhaitez supprimer) ou les définir sur des choses spécifiques avec un signe égal. Par exemple, si vous vouliez qu'il supprime la variable d'environnement VISUAL et définisse EDITOR sur vim, vous utiliseriez cette ligne de configuration:
permit nopass setenv { -VISUAL EDITOR=vim } mynewuser
Si doas
vous vous souvenez de votre mot de passe, vous pouvez le faire doas -L
pour lui faire oublier le mot de passe.