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

Viele Benutzer auf einmal anlegen

A

Anonymous

Gast
Hi,
ich habe in unserem Karriereinstitut die Aufgabe ca 700 Benutzer für Linux und für Samba anzulegen.
Die Eingaben:
Code:
useradd user_x 
smbpasswd -a user_x
useradd user_y 
smbpasswd -a user_y
.....
kann ich zwar im Prinzip in ein Skript legen, aber in dem Skript möchte ich auch für jeden neuen User ein individuelles Passwort haben.
Ich kann das zwar mit
Code:
passwd user_x
smbpasswd user_x
passwd user_y 
smbpasswd user_y
hinterher ändern, aber für 700 User ist das doch sehr mühselig.
Kann ich das eleganter in einem Rutsch mir einem Script o.ä. lösen?

cu
 

rolle

Guru
hallo ernst!

gibt es die nutzer schon? oder anders gefragt, steigt ihr von einem nt-server um?
wenn ja, dann können per vampire-befehl einfach alle nutzer uebernommen werden.
(im samba-forum waere deine frage auch gut aufgehoben)

roland
 
OP
A

Anonymous

Gast
Nein, die Benutzer existieren noch nicht. Wir steigen auch nicht von einem NT oder sonstigem Server um.
Es ist eine Neuinstallation für 2 Computerräume, einem mit Win-XP und einem mit einem LTSP (Linux Terminal Server Netz).
Auf der Linuxseite fungiert der Server als PDC für die Win-Rechner. Alle User sollen unabhängig vom System immer über ihre individuellen Daten verfügen können.

cu
 

stka

Guru
Willst du 700 Benutzer auf einem SAMBA Server ohne eine BDC verwalten? Was wenn der Server ausfällt? Du solltest dir Überlegen, einen zweiten Server als BDC einzurichten. Das ganze dann mit LDAP koppeln.
Zusammen mit den smbldap-tools kannst du dann über Skripte ein Menge erledigen. Dann hast du auch eine Backuplösung ;-)

Gruß

Stefan
 

TeXpert

Guru
ich habe an der Uni mir mal so ein kleines Script gebastelt, dass mir das Anlegen von ganzen Usergruppen mit individuellen Passwörtern ermöglicht hat. Das war um Übungsgruppen mit individuellen Shell-Logins zu versorgen (achtung so nur für max 99 User)

run as root :) and read before you do!
Code:
#!/bin/bash

if [ $# -lt 4 ]
then
  echo "usage addclass comment prefix count gid"
  exit 1
fi

# mktempdir 
TEMPDIR=`mktemp -d`
USERLIST=

# anlegen
for i in $(seq 1 $3)
do
  NAME="$2`printf "%2.2d" $i`"
  PWD=`mktemp ${TEMPDIR}/XXXXXXXX`
  PWD=`basename $PWD`
  useradd -c "$1" -g $4 -m $NAME
  ./changepwd $NAME $PWD
  USERLIST=`echo -e "$USERLIST\n $NAME / $PWD"`
done

clear
echo "USERLISTE: $1"
echo "---------------"
echo "$USERLIST"
echo "---------------"

# remove tempdir
rm -rf $TMPDIR

das entscheidende ist changepwd, das lag im gleichen Ordner und sieht so aus:
Code:
#!/usr/bin/expect -f

set USER [lindex $argv 0]
set PASSWD [lindex $argv 1]

stty -echo
spawn -noecho passwd $USER

expect {
    "New password: " {
        sleep 0.5
        send "$PASSWD\r"
        exp_continue
    }
    "Re-enter new password: " {
        sleep 0.5
        send "$PASSWD\r"
        exp_continue
    }
    "Das Passwort wurde geändert." {
        exit 0
    }
}
 
OP
A

Anonymous

Gast
Hi ,
Danke an TeXpert :D .
Das war im Prinzip genau das, was ich gesucht habe.
Eine kleine Anpassung an changepwd gemacht:
Code:
expect {
     "New SMB password:" {
         sleep 0.5
         send "$PASSWD\r"
         exp_continue
     }
     "Retype new SMB password:" {
         sleep 0.5
         send "$PASSWD\r"
         exp_continue
     }
Und schon läuft es auch für Samba.

cu ernst
 

TeXpert

Guru
einen kleinen Sicherheitshinweis, mktemp legt die Daten im /tmp an! hier sollte für root normalerweise die Umask passend sein, aber sicherstellen, dass nur root das zuerst angelegte temp-Dir lesen kann, sonst kannst Du die Passwörter auslesen.
 
Oben