Alle user anzeigen

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Bany
Beiträge: 7
Registriert: 19.03.2006 21:53:51

Alle user anzeigen

Beitrag von Bany » 12.04.2006 15:18:15

Hallo,

habe mich grad schon durchs Forum gewühlt, aber leider nichts gefunden. Gibt es die Möglichkeit alle user, die am System existieren, anzuzeigen?

mfg bany

aspettl
Beiträge: 318
Registriert: 15.02.2006 22:05:37
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Beitrag von aspettl » 12.04.2006 15:26:58

Code: Alles auswählen

cat /etc/passwd
Ist das einzige was ich kenne ;-)

Gruß
Aaron

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 12.04.2006 15:28:08

In der Datei /etc/passwd stehen die lokalen User, die es auf dem System gibt. Mach mal "cat /etc/passwd", da siehst Du Username, User-ID, Group-ID, Home-Pfad, Shell etc. etc.!

Mit "who" siehst Du, wer aktuell auf dem System eingeloggt ist.

Gruss, mistersixt.
--
System: Debian Bookworm, 6.5.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 4.0 Ghz., Radeon RX 5700 XT, 16 GB Ram, XFCE

Bany
Beiträge: 7
Registriert: 19.03.2006 21:53:51

Beitrag von Bany » 12.04.2006 15:28:20

hm hilft mir schon nen bissel weiter danke ;)

nil
Beiträge: 989
Registriert: 08.06.2005 13:28:36

Beitrag von nil » 12.04.2006 16:02:11

Falls Du über /etc/nsswitch.conf z.B. LDAP oder so zusätzlich einbindest.

Code: Alles auswählen

getent passwd

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 12.04.2006 16:23:32

Code: Alles auswählen

 cat /etc/passwd | grep home | cut -d : -f1 &&  cat /etc/passwd | grep root  | cut -d : -f1
markus

Benutzeravatar
seep
Beiträge: 544
Registriert: 31.10.2004 14:21:08
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: HSK

Beitrag von seep » 12.04.2006 16:48:33

Code: Alles auswählen

grep "/bash$" /etc/passwd | cut -d ":" -f 1
Weder dieses noch das Statement von Markus erwischen sicher alle Benutzer. Das obige geht davon aus, daß interaktive User die Bash als Login-Shell verwenden (Pseudo-User verwenden /bin/sh unter Sarge), was aber nicht so sein muß. Markus Statement sucht alle User, die ein "home"-Verzeichnis haben was auch so heißt, und dann packt das Statement noch root dazu. :wink:

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 12.04.2006 16:52:55

seep hat geschrieben: Weder dieses noch das Statement von Markus erwischen sicher alle Benutzer.
:D
Gleich am Anfang die dicken Kanonen aus dem Schuppen ziehen ist zu viel - LOL

markus

Benutzeravatar
C_A
Beiträge: 1082
Registriert: 22.04.2004 14:51:01
Lizenz eigener Beiträge: GNU General Public License

Beitrag von C_A » 12.04.2006 20:46:03

Und hier noch meine Variante :) (basierent auf der UID)

Code: Alles auswählen

#!/bin/bash
#09.12.2005
#A small script to find real system - user.
 
UID_MIN=`grep UID_MIN /etc/login.defs |cut -d" " -f2`
all_users=`cut -d: -f1,3 /etc/passwd`
 
for user in $all_users
do
        if [ `echo "$user"|cut -d: -f2` -ge $UID_MIN ]
        then
                echo `echo "$user"|cut -d: -f1`
        fi
done

Methusalix

Beitrag von Methusalix » 13.04.2006 01:25:09

Hallo,

eine weitere Möglichkeit ohne Waffengewalt wäre:

Code: Alles auswählen

grep "bash$" /etc/passwd| awk -F ":" '{ print $1 }'
oder auch, wenn gewünscht (z.B. um als shell /bin/false weg zu filtern):

Code: Alles auswählen

grep -iw sh$ /etc/passwd| awk -F ":" '{ print $1 }'
Gruß
Matthias

HansD
Beiträge: 232
Registriert: 29.04.2013 15:47:29
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Re:

Beitrag von HansD » 25.01.2018 23:26:01

C_A hat geschrieben: ↑ zum Beitrag ↑
12.04.2006 20:46:03
Und hier noch meine Variante :) (basierent auf der UID)

Code: Alles auswählen

#!/bin/bash
#09.12.2005
#A small script to find real system - user.
 
UID_MIN=`grep UID_MIN /etc/login.defs |cut -d" " -f2`
all_users=`cut -d: -f1,3 /etc/passwd`
 
for user in $all_users
do
        if [ `echo "$user"|cut -d: -f2` -ge $UID_MIN ]
        then
                echo `echo "$user"|cut -d: -f1`
        fi
done

Code: Alles auswählen

#!/bin/bash
#
# findusers.sh
# 
# 2018-01-25
#
# Find normal users based on the values of UID_MIN and UID_MAX in "/etc/login.defs".
 
UID_MIN=$(grep -v "^#" /etc/login.defs | grep "^UID_MIN" | tr "\t" " " | tr -s " " | cut -d" " -f2)
UID_MAX=$(grep -v "^#" /etc/login.defs | grep "^UID_MAX" | tr "\t" " " | tr -s " " | cut -d" " -f2)
all_users=$(cut -d: -f1,3 /etc/passwd)

for user in $all_users
do
        userid=$(echo "$user" | cut -d: -f2)
        if [ "$userid" -ge "$UID_MIN" ] && [ "$userid" -le "$UID_MAX" ]
        then
                echo "$user" | cut -d: -f1
        fi
done

HansD
Beiträge: 232
Registriert: 29.04.2013 15:47:29
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Re: Alle user anzeigen

Beitrag von HansD » 26.01.2018 00:55:09

Oder so:

Code: Alles auswählen

#!/bin/bash
#
# findusers
# 
# 2018-01-26
#
# Find normal users based on the values of UID_MIN and UID_MAX in "/etc/login.defs".
 
if [ "$1" = "--help" ]; then
        progname=$(basename "$0")
        echo -e "\n  $progname\n"
        echo -e '\tWird ohne Parameter aufgerufen und antwortet mit einer Liste aller'
        echo -e '\tnormalen User-Accounts, einer Liste ohne System-Accounts.\n'
        echo -e '\tDas Skript gibt jene Account-Namen aus, deren User-ID zwischen den'
        echo -e '\tin der Datei "/etc/login.defs" definierten Werten für "UID_MIN" und'
        echo -e '\t"UID_MAX" liegt.\n'
        exit 0
fi

## Get UID_MIN and UID_MAX:  --------------------------------------------------------

matchlines=$(grep -v "^#" /etc/login.defs | grep -e "^UID_" | tr "\t" " " | tr -s " ")

UID_MIN=$(echo "$matchlines" | grep "^UID_MIN" | cut -d" " -f2)
UID_MAX=$(echo "$matchlines" | grep "^UID_MAX" | cut -d" " -f2)

unset -v matchlines

## ----------------------------------------------------------------------------------

all_users=$(cut -d: -f1,3 /etc/passwd)

for user in $all_users
do
        userid=$(echo "$user" | cut -d: -f2)
        if [ "$userid" -ge "$UID_MIN" ] && [ "$userid" -le "$UID_MAX" ]
        then
                echo "$user" | cut -d: -f1
        fi
done

Antworten