• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

User Datenbank

Psyn

Newbie
Hey, wollte mal wissen wie ich mir ne liste aller shell user anzeigen lassen kann o_O die müssen ja in irgend einer datei drinne sein... in welcher?
 
OP
P

Psyn

Newbie
b3ll3roph0n schrieb:
User:
/etc/passwd
/etc/shadow

Gruppen:
/etc/group

kk ^^ schonmal thx...
haste auch ne ahnung.. wie ich das in bash script mache das er die auflistet? o_O weil da sind ja noch viele ander überflüssige informationen bei.. wie ich sozusagen sage... dass das bash script sich die names raussucht und in einer extra datei anlegt?
 
OP
P

Psyn

Newbie
b3ll3roph0n schrieb:
Code:
awk -F ":" '{print $1}' /etc/passwd > user-liste.txt

Ich möchte nicht audringlich sein ^^ abe rmagste mir erklären was das so im klaren bedeutet? ^^" (abschreiben kann jeder ;) verstehen ist wichtig)

:)
 
Also allgemein gilt manpages lesen :wink:
=>
Code:
man <program>

In diesem Fall:
Code:
man awk
awk ist eine Scriptsprache um Textdateien zu verarbeiten.
Code:
-F ":"
definiert den Doppelpunkt als Trennzeichen,
Code:
'{print $1}'
gibt die erste abgetrennte Zeichenfolge aus,
Code:
/etc/passwd
die einzulesende Datei
Code:
> liste.txt
Umleitung der Ausgabe in eine Datei.
 
OP
P

Psyn

Newbie
Kuhl o_O
Kannste mir auch sagen.. zB das die trennung der ":" ist aber nur leute reinkommen die mit "/home" aufhören? (also nur shel user) und denn .. wie ich die datein in einer datei ablege aber jeder ... ja wie soll ich das sagen.
ich hab vor ein script zu basteln womit ich die pws alle user gleichzeitig ändern kann. Ne idee?
(interssant wäre wie er sich ganz bestimmte zeilen aus einer datei rausgreift)
 
Nee, jetzt bist du erstmal dran :p 8)
Zum Auslesen [einer,mehrerer] Zeile[n] benutzt man grep.
Um die Ausgabe eines Programmes weiter zu verarbeiten, gibt es Pipes (|)
=>
Code:
grep ... | awk ... > datei
Mit grep die Zeile[n] auslesen mit awk die Ausgabe zurechtstutzen und in eine Datei schreiben.

Btw: Zum ändern der Passwörter benutzt man
Code:
passwd
(aktueller User), bzw:
Code:
passwd <user>

[edit]Links:
http://www.linux-club.de/viewtopic.php?t=12545
http://www.linux-ag.de/linux/LHB/node26.html
http://www.linuxfibel.de/kapitel2.htm
http://www.selflinux.org/selflinux/html/bash_basic.html
 
OP
P

Psyn

Newbie
Ok, das bringt mich schonmal weiter ^^ big thx - ich meld mich wieder ;))
Moment, was die Aufgabe leichter machen würde, zu wissen wie du jeden user in einer einzelnen datei ablegen kann und wie man die zeilen aus einer datei auslesen kann. Also das man weiß wie viele zeilen die datei hat ^^
 
Für die Anzahl der Zeilen:
Code:
wc
Jeder User in eine Datei:
Code:
awk -F ":" '{print $1}' /etc/passwd | while read i; do echo "$i" > "$i".txt; done;
 
OP
P

Psyn

Newbie
wow ^^ ich meld mich gleich wieder ^^
(wenn ich die user alle in einer datei ablege, dann tut er die alle in einer zeile, wie kann ich zwischen jedem user ein Enter machen? o_O

(und Big thx für alles ^^ )
 
Wie legst du die User denn in die Datei?
Code:
awk -F ":" '{print $1}' /etc/passwd > user-liste.txt
sollte jeden User in eine separate Zeile schreiben.
 
OP
P

Psyn

Newbie
b3ll3roph0n schrieb:
Wie legst du die User denn in die Datei?
Code:
awk -F ":" '{print $1}' /etc/passwd > user-liste.txt
sollte jeden User in eine separate Zeile schreiben.

(ok funzt ^^" )

Aber irgendwie klapt das noch nicht so wie ich will xD
das wenn un der user-list.txt die ganzen user auf gezählt werden dort einzelne leute rauszusuchen..
wie sehe das aus wenn ich ... zeile 4 in zeile4.txt reinhaben will? o_O

(bzw wenn ich zweile 4 als eine variable haben will o_O )
Ich muss ja irgendwie dazu kommen dass das pw von allen usern geändert wird xD
Bin gerade auf eine weiter frage gestoßen xDD ... das ändern des pws über ein bash script? also so, das er nicht mehr nachfragt "wie soll das pw lauten?"
 
Einzelne Zeilen auslesen geht (wie schon erwähnt) mit 'grep'.
Mit Variable:
Code:
VAR=`grep root /etc/passwd | awk -F ":" '{print $1}'`; echo "$VAR";

Aber vielleicht solltest du erstmal erklären was du genau vor hast.
Bisher war das ganze eher spielen-mit-bash. :)

Die Passwörter werden in der /etc/shadow mit md5-Verschlüsselung gespeichert.

Könnte nützlich sein (vor allem der Beitrag von TeXpert):
http://www.linux-club.de/viewtopic.php?t=26163
 
OP
P

Psyn

Newbie
Mein genaues vorhaben war das ich alle pws aller user mit hilfe eines scripts verändere...

sozusagen.. script ausführen - alle pws aller user sind geändert ^^

Ich werd jetzt erstmal bischen lesen was du mir geschickt hast ^^
 

abgdf

Guru
Hallo Psyn,

hab Dir das, was Du wolltest, also User aus /etc/passwd raussuchen und alle Passwörter auf einmal ändern, mal in Python gebaut (letztlich doch shell (os.system)).

Anleitung: Speichere das Skript als "pwdscript.py", mache es mit "chmod +x pwdscript.py" ausführbar und führe es als root mit "./pwdscript.py" aus.

Die Einrückungen des Codes sind (wie immer in Python) von Bedeutung und müssen so in den Text-Editor übernommen werden, sonst läuft es nicht.

Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from os import system

f=file(r"/etc/passwd","r")
a=f.readlines()
f.close()

b=[]

for i in a:
  if r"/home" in i:
    e=i.split(":")
    b.append(e[0])

print "\nBenutzer mit /home-Eintrag in /etc/passwd:\n"

for i in b:
  print i

print "\nBitte geben Sie das neue Passwort für alle oben genannten Benutzer ein\n(Achtung: Nach Eingabe von RETURN werden alle Passwörter für diese Benutzer ohne weitere Nachfrage geändert !):\n"

pwd=raw_input()

print

for i in b:
  system("echo "+pwd+" | "+"passwd "+i+" --stdin")

print

Ansonsten fände ich es schön, wenn Du Deine Postings sprachlich etwas verständlicher formulieren könntest.

@b3ll3roph0n: Deine Antworten waren wirklich gut. Entschuldige bitte, wenn ich hier einen anderen (Python-) Ansatz genommen habe. Ich bin sicher, mit awk, grep und sed geht das auch.

Beste Wünsche
 
abgdf schrieb:
[...]
@b3ll3roph0n: Deine Antworten waren wirklich gut. Entschuldige bitte, wenn ich hier einen anderen (Python-) Ansatz genommen habe. Ich bin sicher, mit awk, grep und sed geht das auch.
Danke. Aber damit hab ich kein Problem - ist ein klasse Script. 8)
 
OP
P

Psyn

Newbie
Ja, das script ist wierklich toll ^^

nur ist halt die sache, das ich es ja auch verstehen muss o_O .. (bzw, ist das wierklich bash? xD ) wenn ich es nicht verstehe.. kann ich damit nicht weiter arbeiten!?! ^^
das ist so.. als würde ich was fressen und nicht wissen was ich fresse (ich könnte ja auch scheiße fresse würde mir nun nichts bringen xD ) ...

^^ aber ist toll das script ^^
 
Oben