logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Ceci est une ancienne révision du document !


su

Fonction

La commande su dans un terminal2) ou une console3) permet de devenir un autre utilisateur pour la durée d'une session ou, si on n'indique aucun user4) de prendre les privilèges root (voir le tuto du : superutilisateur).

La commande su utilise alors les privilèges du compte root à la place du vôtre.

En effet, le symbole # apparaît à la fin de l'invite à la place du symbole $, ce qui signifie que les commandes suivantes seront exécutées en tant que super-utilisateur.

La commande su - ouvre la session administrateur qui permet passer des commandes de n'importe quel chemin, c'est l'intérêt de la variable $PATH.
  • Pour l'utiliser, entrez su - dans un terminal puis entrez le mot de passe root.
  • Pour quitter, tapez exit ou utilisez la combinaisons de 2 touches : Ctrl d.
    Vous verrez alors le symbole $ et non plus # , ce qui signifie que vous utilisez de nouveau le système en tant qu'utilisateur normal.

su sous buster

Sur Debian 95), un simple

su

mettait /sbin dans cette variable, mais plus sous Debian 10 où il faut faire :

su -

ou

su -l

-, -l, –login

            Appelle le shell sous forme de shell de  connexion.
            Voici  ce  que cela signifie : Invalider toutes les
            variables d'environnement sauf `TERM',  `HOME',  et
            `SHELL'  (qui  sont  renseignées  comme  décrit ci-
            dessus), ainsi que `USER' et  `LOGNAME'  (qui  sont
            alors  remplies  même  pour  le Super-Utilisateur).
            Remplir `PATH' avec une valeur  par  défaut  donnée
            lors de la compilation.  Se déplacer dans le réper­
            toire HOME de l'utilisateur. Ajouter "-" au nom  du
            shell,  pour  que celui-ci lise son ou ses fichiers
            de démarrage.

Source: man su

seb95 :
Et pourquoi ça ne posait pas de soucis avant et sur buster c'est plus le cas ?

enicar :
Parce qu'avant le « su » seul n'aurait jamais du se comporter comme « su -l », mais c'était le cas.
En quelque sorte le « su » d'avant ne respectait pas la norme posix, alors que maintenant, il la respecte.

Syntaxe

su -
Vous noterez le tiret après la commande, il est important depuis Buster afin d'avoir des variables d'environnement correctement initialisées, la variable PATH notamment.

Utilisation

Pour débuter une session sous un login utilisateur particulier, utilisé lorsqu'il y a plusieurs user de disponibles enregistrés sur le même pc, tapez et validez :

su - le_login

ou encore

su -l le_login

le_login est à remplacer totalement par le nom user tout simplement.

Pour débuter une session root utilisez simplement :

su -
ATTENTION ! root se doit de ne lancer que des logiciels très sûrs, afin de ne pas risquer de causer de faille de sécurité. En particulier, n'utilisez pas votre client IRC, un plugin Flash, ou tout autre faille de sécurité sur pattes, depuis votre session root.

Exemple

Connexion root

su -
commande interactive
Mot de passe :[passwd_root]

Lorsque vous tapez votre mot de passe pour la première fois vous avez l'impression qu'il y a quelque chose qui cloche avec votre système. En effet, vous tapez les caractères le composant et le curseur semble bloqué, il ne bouge pas et rien n'apparaît à l'écran.

Pour les débutants, un tel comportement est pour le moins déroutant.
Rassurez-vous, tout est correct, le système est conçu comme cela : c'est une mesure de sécurité.

Rien ne bouge à l'écran mais tout ce que vous tapez au clavier est pris en compte. En le validant6) cela permet d'ouvrir la session indiquée.

Remarquez aussi que la ligne de commande en session user se termine par un $ qui devient un # en session root.

C'est une indication couramment employée dans les tutos linux pour indiquer la session sous laquelle opérer la commande qui suit ce signe7).
Le signe # est devant la ligne de commande si la commande s'opère en root exclusivement :
 # [commande_linux]

Le signe $ est devant la ligne de commande s'opérant en user.

 $ [commande_linux]
ATTENTION ! Toujours privilégier l'usage d'un terminal user sur celui d'un terminal root… On vous aura prévenu !

Session root option (-)

Passer en session root en allant directement dans le répertoire personnel du compte root et (non depuis le répertoire d'où vous vous trouvez) ainsi :

su -
commande interactive
Mot de passe:[passwd_root]
Une intervention sous session root peut être dévastatrice.
Voir pour exemple une précaution à prendre avec la commande rm ici : Commande rm, vigilance !

Session user

Par exemple, pour un user se nommant toto, on tape :

su - toto

ou

su -l toto
commande interactive
Mot de passe :[passwd_toto]

Session root temporaire option (-c) :

Par mesure de sécurité, on peut choisir de ne passer qu'une seule ligne de commande par exemple la commande d'administration fdisk réservée à root et que le terminal demeure en session_user après son exécution avec l'option -c ainsi :

su - -c 'fdisk -l'

ou

su -lc 'fdisk -l'
commande interactive
Mot de passe :[passwd_root]

Donnera la réponse ci-dessous (par exemple pour mon pc…) :

retour de la commande
Disk /dev/sda: 160.0 GB, 160041885696 bytes
    255 heads, 63 sectors/track, 19457 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x00095bb2
 
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1               1          36      289138+  83  Linux
    /dev/sda2              37       19457   155999182+   5  Extended
    /dev/sda5            6689       19457   102566961   83  Linux
    /dev/sda6              37         607     4586494+  83  Linux
    /dev/sda7             608        1823     9767488+  83  Linux
    /dev/sda8            1824        4255    19535008+  83  Linux
    /dev/sda9            4256        4863     4883728+  83  Linux
    /dev/sda10           4864        6079     9767488+  83  Linux
    /dev/sda11           6080        6688     4891761   82  Linux swap / Solaris
   .../...

Et nous restons en user après cette commande validée en root.

N'omettez pas les quotes simples (') encadrant la commande fdisk.

Et voilà aussi simple que ça, pas possible. ^_^

Droits utilisateurs

Voici un aspect des droits des utilisateurs.

- merlin :
Les comptes sont enregistrés dans le fichier /etc/passwd dans l’ordre chronologique de leur création.

- captnfab :
Il est important de savoir qui utilise la machine.
On peut donc distinguer les utilisateurs de type humain et les utilisateurs de type programme.

En fait, le « type » d'utilisateur est plus une convention. =)

Les utilisateurs système ont un ID <8) 1000, n'autorisent pas de connexion par mot de passe, ils ont souvent :

  • un répertoire HOME personnalisé (voire pas de HOME),
  • un shell personnalisé (voire un shell désactivé),
  • et peuvent appartenir à un groupe spécial comme nogroup.

De plus, les utilisateurs humains appartiennent par défaut à certains groupes (cdrom, …).
Ceci dit, il est tout à fait possible de se loguer en tant qu'un de ces utilisateurs système, par exemple avec :

su - daemon -s/bin/bash

Ou de lancer un programme en tant qu'utilisateur humain (par exemple, c'est ce qui arrive à chaque fois qu'on lance firefox).

Certains utilisateurs sont déjà présents par convention (root, bin, daemon, …),

  • d'autres sont introduits par la distribution (groupe adm),
  • et d'autres sont amenés par l'installation de paquets (sshd, …).

merlin a écrit :
Je pense qu’une application qui utilise la connection réseau Internet, y compris une connexion frauduleuse, doit obligatoirement avoir un compte (avec les privilèges nécessaires) dans le registre /etc/passwd , afin de pouvoir passer le pare-feu.

Un programme est tout le temps attribué à un utilisateur.
Tous les utilisateurs ont le droit d'accéder au réseau s'il est en place.
Mais pas tous ont le droit d'établir une connexion et de configurer le réseau car ceci nécessite des privilèges, qui peuvent être délégués, ou actionnés via dbus !

* Un daemon tourne avec ces privilèges et écoute sur le dbus, * un programme utilisateur envoie une requête dbus au premier…

La notion de compte « humain » n'est qu'un ensemble de paramètres par défaut, une fois le compte créé, c'est un compte, et puis c'est tout.

root est le nom d'utilisateur du super-utilisateur, c'est à dire de l'utilisateur d' ID 0 .

Il n'y a qu'un seul super-utilisateur, c'est root. Il est possible mais très fortement déconseillé, d'ajouter d'autres utilisateurs au groupe root. Cela ne fera pas d'eux des super-utilisateurs, ils pourront simplement modifier/lire/exécuter les fichiers qui n'étaient modifiable/lisible/exécutable seulement par le groupe root.

Cependant, root peut déléguer ses droits en utilisant l'utilitaire sudo.

  • sudo permet à des utilisateurs vérifiant un certain nombre de règles personnalisables de lancer avec des droits personnalisés des commandes parmi un ensemble de commandes personnalisés.
  • La délégation la plus fréquente est d'autoriser les utilisateurs appartenant au groupe « sudo » de lancer avec les droits root n'importe quelle commande sur le système avec leur propre mot de passe.
  • On peut aussi déléguer à l'utilisateur tartempion le droit d'exécuter en tant que geronimo la commande
    /bin/false

    sans saisir aucun mot de passe.

  • Voir le manuel de sudo pour plus de détails (bien qu'il ne soit pas forcément très simple à lire).
    man sudo

merlin a écrit :

  Définitions des comptes utilisateurs (version 3)
  *compte administrateur root=compte système : possède tous les privilèges. Administrateur de type root. Super-utilisateur par défaut, appartient au groupe root.
  *compte super-utilisateur non-root : utilisateur inscrit au groupe root ?
  *compte administrateur sudo : utilisateur inscrit au groupe sudo, ce qui lui permet d’accéder au compte root via son mdp personnel. Administrateur de type sudo ;
  *compte utilisateur  NP (Non Privilégié): Utilisateur standard ou simple. Ne peut pas administrer le système, car il ne connaît pas le mdp root et n’est pas inscrit au groupe sudo ni au groupe root.
Il ne faut pas mélanger les appelations sémantiques à géométrie variable et les termes techniques.

Ainsi, « administrateurs » est un terme sémantique qui désigne une personne gérant la machine.
Il peut y avoir différents niveaux d' « administrateur ». Si on parle du compte super-utilisateur, utilisons de préférence la terminologie « compte root » ou « compte super-utilisateur ».
En effet, il existe par exemple le groupe « adm » qui permet aux personnes « administrant la machine » de, sans être root, accéder aux logs système.

En ce qui concerne les privilèges, il faut distinguer les privilèges que sont les droits du super-utilisateur, et les privilèges qui peuvent être « délégués » par sudo, su, ou d'autres programmes.

Donc, pour résumer, il y a deux types de comptes utilisateurs réellement distincts :

  1. le compte utilisateur root
  2. les comptes utilisateurs non-root

Un compte utilisateur peut se voir déléguer des privilèges via sudo, en fonction de son nom d'utilisateur ou de son groupe.

La dénomination « compte utilisateur principal » vient de ce que l'installateur, lorsque le mot de passe root est désactivé, ajoute automatiquement le premier utilisateur créé lors de l'installation dans le groupe sudo, ce qui, via la délégation sudo, lui permet de « passer root » et exécuter n'importe quelle application en tant que root.

su permet de se logguer temporairement en tant qu'un utilisateur lambda, notamment root, et demande pour se faire le mot de passe de l'utilisateur

sauf si l'utilisateur lançant su est root.

La seule « délégation » est de donner à la personne connaissant le nom d'utilisateur et le mot de passe d'un utilisateur, les droits de cet utilisateur.
Par exemple : les droits root si l'utilisateur connaît le mdp root.

sudo est un mécanisme de délégation plus fin, comme indiqué plus haut.

Il ne faut pas confondre l'application sudo et le groupe sudo.

Le groupe sudo n'est créé par défaut avec la délégation associée que par convention, et ils peuvent être supprimés/renommés/etc. …

Lien de ces précisions sur le forum :

Merci à merlin et captnfab d'avoir ensemble suscités avec brio ces informations sur l'utilisation de su et la particularité des comptes utilisateurs.

Nota : Si certains termes vous échappent, vous pouvez consulter le tuto concernant le système debian dans son ensemble :

Nota de geek

Quittez la session ou le terminal en tapant la combinaison des touches clavier : Ctrl+D ça l'fait grave…
De tetrix sur le forum là :

Liens

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
4)
session utilisateur
5)
stretch
6)
appuyer sur la touche [Entrée]
7)
Le signe $ ou # n'est donc pas à recopier dans l'énoncé de la commande indiquée
8)
le signe < signifie un nombre supérieur à…
doc/systeme/su.1569224943.txt.gz · Dernière modification: 23/09/2019 09:49 par smolski

Pied de page des forums

Propulsé par FluxBB