Ce dont j'ai besoin, c'est quelque chose comme:
$ who-has-uid 1000
cyrus
Je connais le dossier /etc/passwd
contient de telles informations, je ne demande pas à un script de l’analyser.
linux
debian
user-accounts
cYrus
la source
la source
id -u cyrus
faites juste le contraire.who-has-uid 100
correspondra aussi100
,1001
, ... J'utiliseraisgetent passwd 100 | cut -f1 -d:
au lieu.Réponses:
Si vous avez un accès root, c'est aussi simple que:
la source
Tu pourrais essayer getent ( page de manuel de getent ):
Vous pouvez analyser uniquement le nom d'utilisateur avec sed.
la source
Notez que cela fonctionnera (en supposant que Perl soit configuré correctement) même si les informations proviennent d’un autre
/etc/passwd
fichier.Il n'y a pas de véritable erreur de vérification;
who-has-uid 999
affiche une ligne vide s'il n'y a pas d'ID utilisateur de ce type sur le système.Si vous n'insistez pas pour une ligne, vous pouvez le placer quelque part dans votre
$PATH
:la source
getpwuid()
ougetent
, qui est disponible pour tous les utilisateurs, est beaucoup moins compliqué d’exécuter un programme en tant qu’utilisateur cible via un outil privilégié.Utilisez awk, (généralement installé GNU awk, gawk) Dites-lui d'utiliser les deux points comme séparateur, voyez si le champ 3 (l'UID) est égal à 1000, puis imprimez le premier champ (nom d'utilisateur)
C’est le cas si l’information se trouve dans / etc / passwd, si vous avez des informations de connexion au réseau (par exemple sur NIS ou LDAP), cela fonctionne mieux
Vous faire besoin de guillemets simples: si vous utilisez des guillemets doubles, bash essaiera de comprendre ce que $ 1 signifie pour le shell et ne le transmettra pas à gawk.
la source