Utilisateurs système et utilisateurs de service distincts

8

Nous savons tous que nous avons des utilisateurs du système et des utilisateurs de services. Je cherche un moyen de les séparer en tant qu'utilisateurs système et liste d'utilisateurs de service.

Y a-t-il un moyen?

rɑːdʒɑ
la source

Réponses:

7

En fonction de gid, les utilisateurs du système et les utilisateurs des services peuvent être séparés comme suit,

/etc/passwdcontient une liste pour tous les utilisateurs ainsi que d'autres informations. Les utilisateurs de service ou les utilisateurs réels ont un nombre gidsupérieur ou égal à 1000. Ainsi, une liste d'utilisateurs réels peut être obtenue en tant que,

awk -F: '($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd

Une liste d'utilisateurs du système ( gid<1000) peut également être extraite en tant que,

awk -F: '($3<1000){print $1}' /etc/passwd

Comment ça fonctionne

Le contenu de /etc/passwdest comme,

    root:x:0:0:root:/root:/bin/bash
    ...
    souravc:x:1001:1001:Souravc:/home/souravc:/bin/bash

Lors de l'utilisation awkavec -F:elle, le contenu d'une ligne est divisé en plusieurs champs, traités :comme séparateurs de champs. Le premier champ contient le nom d'utilisateur et le troisième champ contient le gid.

Par conséquent, pour extraire des utilisateurs réels, il awksuffit de vérifier que la valeur du troisième champ est supérieure à 1000 et qu'il ne s'agit pas de personne et imprime le premier champ, c'est-à-dire le nom d'utilisateur.

Pour répertorier tous les utilisateurs du système, il vérifie simplement qu'il gidest inférieur à 1 000 et imprime le nom d'utilisateur.

Éditer

Comme vous voulez le lister root(gid = 0) dans la vraie liste d'utilisateurs. Obtenez de vrais utilisateurs en tant que,

awk -F: '($3==0)||($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd

Obtenez les utilisateurs du système en tant que,

awk -F: '($3<1000)&&($1!="root"){print $1}' /etc/passwd

Remarque J'ignore toujours l' nobodyutilisateur.

souravc
la source
Comment peut-il prendre en charge l'utilisateur root?
rɑːdʒɑ
n'a pas compris votre point? vous obtiendrez root en tant qu'utilisateur système. souhaitez-vous inclure root dans la vraie liste d'utilisateurs?
souravc
oui car il est aussi utilisateur.
rɑːdʒɑ
@rajagenupula est-ce que ça va maintenant?
souravc
Je voudrais avoir l'utilisateur root dans la vraie liste d'utilisateurs @S
rɑːdʒɑ
2

Pour répertorier les utilisateurs locaux (utilisateurs du système) qui peuvent se connecter et avoir homedir et GID moins de 1000

 cat /etc/passwd | cut -d: -f 1,3,6 | grep "[1-9][0-9][0-9][0-9]" | grep "/home" | cut -d: -f1

Pour répertorier tous les autres utilisateurs: (principalement les utilisateurs du système et ayant un GID inférieur à 1000):

cat /etc/passwd | cut -d: -f 1,3,6 | grep -v "[1-9][0-9][0-9][0-9]"  | cut -d: -f1
kamil
la source
1
L'ID de groupe de l'utilisateur racine et l'ID de l'utilisateur sont inférieurs à 1000.Merci pour la réponse
rɑːdʒɑ
@rajagenupula oui pour sûr. seul root est l'exception. et dans ubuntu en général, root ne peut pas se connecter par défaut.
kamil