Aller au contenu principal
Sujet: Remplacer root par sudo ? (Lu 8943 fois) sujet précédent - sujet suivant

Remplacer root par sudo ?

Bonjour tout le monde,

Je suis en train de tester openSUSE Leap 15.4 dans une machine virtuelle. J'utilise depuis quelques années Debian et je teste openSUSE pour voir si je vais migrer vers cet OS qui me semble très complet. J'ai installé Debian sur mon ordinateur de travail et sur l'ordinateur de mes parents. Sur ces deux ordinateurs, j'ai l'habitude d'utiliser sudo avec le mot de passe utilisateur pour effectuer toutes les commandes ,ou de lancer les programmes, qui nécessitent des droits superutilisateur. Sur l'ordinateur de mes parents, chaque utilisateur dispose du droit sudo dans les mêmes conditions.

J'essaie de reproduire ce fonctionnement sur openSUSE (dites moi si j'ai tort du point de vue de la sécurité). J'ai donc suivi ce tutoriel pour autoriser tous les membres du groupe wheel à pouvoir utiliser sudo avec le mot de passe utilisateur.

Voici mon fichier /etc/sudoers

## sudoers file.
##
## This file MUST be edited with the 'visudo' command as root.
## Failure to use 'visudo' may result in syntax or file permission errors
## that prevent sudo from running.
##
## See the sudoers man page for the details on how to write a sudoers file.
##

##
## Host alias specification
##
## Groups of machines. These may include host names (optionally with wildcards),
## IP addresses, network numbers or netgroups.
# Host_Alias WEBSERVERS = www1, www2, www3

##
## User alias specification
##
## Groups of users.  These may consist of user names, uids, Unix groups,
## or netgroups.
# User_Alias ADMINS = millert, dowdy, mikef

##
## Cmnd alias specification
##
## Groups of commands.  Often used to group related commands together.
# Cmnd_Alias PROCESSES = /usr/bin/nice, /bin/kill, /usr/bin/renice, \
#     /usr/bin/pkill, /usr/bin/top
# Cmnd_Alias REBOOT = /sbin/halt, /sbin/reboot, /sbin/poweroff

##
## Defaults specification
##
## Prevent environment variables from influencing programs in an
## unexpected or harmful way (CVE-2005-2959, CVE-2005-4158, CVE-2006-0151)
Defaults always_set_home
## Path that will be used for every command run from sudo
Defaults secure_path="/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin:/usr/local/sbin"
Defaults env_reset
## Change env_reset to !env_reset in previous line to keep all environment variables
## Following list will no longer be necessary after this change
Defaults env_keep = "LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE"
## Comment out the preceding line and uncomment the following one if you need
## to use special input methods. This may allow users to compromise the root
## account if they are allowed to run commands without authentication.
#Defaults env_keep = "LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE XMODIFIERS GTK_IM_MODULE QT_IM_MODULE QT_IM_SWITCHER"

## Do not insult users when they enter an incorrect password.
Defaults !insults

## Uncomment to use a hard-coded PATH instead of the user's to find commands
# Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
##
## Uncomment to send mail if the user does not enter the correct password.
# Defaults mail_badpass
##
## Uncomment to enable logging of a command's output, except for
## sudoreplay and reboot.  Use sudoreplay to play back logged sessions.
# Defaults log_output
# Defaults!/usr/bin/sudoreplay !log_output
# Defaults!REBOOT !log_output

## In the default (unconfigured) configuration, sudo asks for the root password.
## This allows use of an ordinary user account for administration of a freshly
## installed system. When configuring sudo, delete the two
## following lines:
#Defaults targetpw   # ask for the password of the target user i.e. root
#ALL   ALL=(ALL) ALL   # WARNING! Only use this together with 'Defaults targetpw'!

##
## Runas alias specification
##

##
## User privilege specification
##
root ALL=(ALL:ALL) ALL

## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL:ALL) ALL

## Same thing without a password
#%wheel ALL=(ALL:ALL) NOPASSWD: ALL

## Read drop-in files from /etc/sudoers.d
@includedir /etc/sudoers.d

Il me semble avoir correctement suivi les instructions mais il reste un "problème". Lorsque je veux lancer le partitionneur openSUSE (ou les autres outils Yast), une boîte de dialogue me demande le mot de passe superutilisateur et non celui de l'utilisateur. Pour les commandes comme "sudo zypper refresh" c'est bien le mot de passe utlisateur qui est demandé. Pourquoi cette "incohérence" ?

Je me dis que soit j'essaie de reproduire ce que j'avais l'habitude de faire sur Debian, soit j'autorise sudo mais avec un mot de passe superutilisateur bidon comme "admin" pour que mes parents n'aient pas de difficulté à s'en souvenir.

Merci de votre aide !

Re : Remplacer root par sudo ?

Répondre #1
Bonsoir,

Il est possible d'installer yast2-sudo dans leap 15.4. Je ne l'ai jamais utilisé mais cela doit servir à configurer sudo.

Re : Remplacer root par sudo ?

Répondre #2
Bonjour,

Je pense comprendre le souci. Ce n'est pas sudo qui pose problème je crois mais ce que l'on pense obtenir en intégrant les utilisateurs au groupe "wheel" en ayant suivi le tuto indiqué par fred1917.

Un questionnement identique a été rapporté il y a longtemps sur le forum openSUSE officiel :

https://forums.opensuse.org/showthread.php/506694-YaST2-asks-for-root-password-even-for-administrative-user-(wheel-group-member)

@fred1917 Pour le moment, en l'état actuel des choses avec ton sudoers modifié, je pense que tes utilisateurs peuvent lancer Yast en mode texte sans le mot de passe root mais avec leur propre mot de passe :

sudo yast2

Ce qui devrait les conduire sur cette interface :



Tu confirmes?

Maintenant le problème reste entier et il peut aussi surgir ailleurs avec certains programmes qui font appel à polkit pour l'authentification (Gnome-Software alias Logiciels par exemple car j'ai dans l'idée que tu es sur Gnome).

J'ai peut-être une piste dont je ne suis pas sûr mais je n'ai pas trop le temps de développer maintenant.

Re : Remplacer root par sudo ?

Répondre #3
@fred1917 : La suite, à présent que je suis moins pressé ;)

Tu es sur une VM et je suis tranquille pour te faire tester ce qui suit. Je te laisse d'autre part apprécier toi-même au niveau sécurité ce qui découle de ce que tu veux faire. Dans l'absolu et schématiquement, ce niveau baisse alors... mais beaucoup plus qu'avec l'emploi que nous faisons généralement de sudo, n'ayant pas de vraies responsabilités d'administrateur système? Question de confiance avec tes parents pour un usage domestique de l'ordi commun dirais-je.

Inspiré de l'ArchWiki et de la communauté openSUSE sur Reddit (ramification officielle? je n'en sais rien) :

https://wiki.archlinux.org/title/Polkit_(Fran%C3%A7ais)#Identit%C3%A9s_d'administrateur
https://www.reddit.com/r/openSUSE/comments/htyp2w/sudo_and_authentication/

En root :

1/ Vérifier l'existence du fichier /etc/polkit-1/rules.d/50-default.rules
2/ et de son contenu :

/* -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- */

// DO NOT EDIT THIS FILE, it will be overwritten on update
//
// Default rules for polkit
//
// See the polkit(8) man page for more information
// about configuring polkit.

polkit.addAdminRule(function(action, subject) {
    return ["unix-user:0"];
});

3/ Copier le contenu de ce fichier dans un nouveau fichier /etc/polkit-1/rules.d/40-default.rules (le numéro 40 < 50, lui offre la priorité), le modifier et l'enregistrer comme suit :

polkit.addAdminRule(function(action, subject) {
    return ["unix-group:wheel"] ;
});

Et redémarrer bien sûr ;)

En espérant que cela fonctionne pour le résultat que tu souhaites obtenir globalement pour tes utilisateurs (sur Reddit il semblerait possible de tout faire en une seule commande mais ça n'a pas eu l'effet désiré chez moi, alors j'ai décomposé). Et sous toute réserve pour une installation en dur.

Enfin, je suis aller voir sur Debian, j'en ai une sous le coude un peu modifiée mais pas dans l'essentiel (c'est une stable classique en somme) mais je n'ai rien trouvé d'équivalent au niveau des fichiers concernant certaines règles de polkit.

Tiens-nous au courant surtout quelque soit le retour, bon ou mauvais.

Re : Remplacer root par sudo ?

Répondre #4
@Chumi

Effectivement, je peux lancer la commande '"sudo yast2" avec le mot de passe utilisateur. J'ai suivi les indications pour que cela fonctionne également avec une interface graphique mais ça ne fonctionne pas, c'est toujours le mot de passe superutilisateur qui est demandé. Ce n'est pas bien grave, sur un ordinateur avec de multiples utilisateurs de confiance je peux tout simplement créer un mot de passe root que tous les utilisateurs connaissent.

Merci tout de même !

Re : Remplacer root par sudo ?

Répondre #5
Bonjour,

quelle commande par exemple demande malgré tout le mot de passe root ?

Remarque: question sécurité, configuré comme ceci "%wheel ALL=(ALL:ALL) ALL", n'importe qui (curieux ou mal intentionné) appartenant au groupe wheel peut tout de même ouvrir un shell logué avec root (sans avoir le mot de passe root). En pratique, on n'est pas très loin de la configuration d'opensuse, même si "en apparence" c'est différent. Mais il est vrai que si on n'appartient pas au groupe wheel, c'est rappé.