• Cédric Montagne
    Cédric Montagne
    2018-05-01

    Bonjour,

    Démarche toujours intéressante, merci.

    Attention cependant par rapport aux utilisateurs qui auraient un shell différent de bash (comme /bin/sh par exemple). Là ça ne fonctionne plus.

    Je te propose donc ceci à la place :

    grep -Ev "bin/false|bin/nologin|bin/sync" /etc/passwd | cut -d : -f 1 | sort

    Cette commande recherche dans le fichier /etc/passwd, via une syntaxe d’expression régulière étendue (option -E de grep), toutes les lignes qui ne correspondent pas (option -v de grep) au pattern fourni.
    Autrement dit, cela élimine les lignes des utilisateurs dont le shell est positionné sur /bin/false, /usr/sbin/nologin ou /bin/sync, ceci tout en évitant la problématique d’un utilisateur dont le nom ou le champ de contact contiendrait lui-même la mention “false”, “nologin” ou “sync”… Ensuite, comme tu l’avais fait, on ne conserve que le premier champ (nom d’utilisateur) avec la commande cut puis on trie avec sort.

    Ne restent donc plus en principe que les utilisateurs avec un vrai shell (par exemple /bin/bash mais aussi /bin/sh, /usr/bin/ksh, /usr/bin/tcsh, /usr/bin/zsh, etc.) ou un shell limité (comme /usr/bin/lshell).

    0