2014-05-25 7 views
0

lorsque vous essayez d'afficher le fichier suivantFiltrage/etc/passwd pour afficher uniquement les utilisateurs réguliers

etc/passwd

Est-il possible de simplement montrer aux utilisateurs réguliers qui se connecter et avoir un répertoire personnel à la place de tous ces pseudo-utilisateurs qui semblent faire partie des processus du système.

root:x:0:0:root:/root:/bin/bash 
daemon:x:1:1:daemon:/usr/sbin:/bin/sh 
bin:x:2:2:bin:/bin:/bin/sh 
sys:x:3:3:sys:/dev:/bin/sh 
sync:x:4:65534:sync:/bin:/bin/sync 
games:x:5:60:games:/usr/games:/bin/sh 
man:x:6:12:man:/var/cache/man:/bin/sh 
lp:x:7:7:lp:/var/spool/lpd:/bin/sh 
mike:x:1000:1000:mike,,,:/home/mike:/bin/bash <-- THIS ONE HAS A HOME DIRECTORY 

Merci

Aiden

Répondre

1

Eh bien, vous pouvez demander à tous les comptes qui ont des répertoires personnels dans /home:

awk -F: '$6 ~ /\/home/ {print}' /etc/passwd 

Certains systèmes gardent les comptes du système ci-dessous un ID utilisateur spécifique, vous pouvez donc demander tous les comptes avec des UID supérieurs à une certaine limite:

awk -F: '$3 >= 1000 {print}' /etc/passwd 
+0

Wicked. J'utilise ubuntu et seulement l'intention d'utiliser ubuntu gardent-ils des comptes système de plus de 1000? Merci pour votre réponse – Aiden

+0

Je ne suis pas vraiment sûr de ce que les politiques UID d'Ubuntu sont. C'est assez typique, cependant. – larsks

+0

Deuxième méthode est vraiment bonne, juste une question rapide quel est le but de la variable $ 3 comment pourriez-vous dire que c'est le 3ème paramètre dans une ligne? – Aiden

0

Je ne pense pas qu'il existe un moyen fiable de le faire.

Les comptes pour les utilisateurs ordinaires ont généralement des uids supérieurs ou égaux à 1000, mais ce n'est qu'une convention. J'ai vu beaucoup de systèmes qui ne respectent pas cette convention, et beaucoup de comptes qui la violent, même sur des systèmes qui tentent de la suivre. Et le compte système nobody a généralement un UID comme 65534.

De même, les comptes d'utilisateur ont généralement passé les répertoires sous /home, mais il existe des violations de cette convention dans les deux sens.

Les systèmes UNIX et de type UNIX n'établissent aucune distinction entre les comptes utilisateur et système (autres que root).

Le mieux que vous pouvez faire est d'examiner attentivement le fichier /etc/passwdsur le système qui vous intéresse, et/ou de parler à la personne responsable de la création de comptes sur ce système, et essayer de tirer quelque ad hoc règles - et ne soyez pas surpris si un nouveau compte créé demain viole ces règles. Quelqu'un un compte non-utilisateur est créé qui agit délibérément comme un compte d'utilisateur, à des fins de test.

Vous pourriez envisager de reformuler vos exigences. Exactement quel problème essayez-vous de résoudre?

Encore une chose: les informations de compte ne sont pas toujours stockées dans /etc/passwd. Certains systèmes utilisent d'autres mécanismes tels que NIS ou LDAP. La commande getent passwd (si votre système l'a) devrait permettre cela.

Questions connexes