Ett "script" för att skapa en stor mängd användare sammtidigt i linux?

Permalänk
Medlem

Ett "script" för att skapa en stor mängd användare sammtidigt i linux?

Hej!

Sitter här och har lite funderingar!

I skolan så kommer vi att ha ett litet projekt där varje elev får ett eget användarnamn och lösenord, dom ska komma åt webrooten via vsftpd!

Så nu är mina fråga, hur ska man gå tillväga för att skapa, låt oss säga, 50 användare (typ, elev1, elev2, elev3) med ett random password?

Skulle vara smidigt om alla dessa användarnamn printades ut i en fil för lätt översikt!

Kom att tänka på en annan sak, skolan kör en domän och varje elev har ett eget användarnamn och password baserat på olika initsialer, kan man på något sätt få dessa användarnamn att synka emot vsftpd?

Skulle vara underbart om ni hade någon smidig lösning!

MVH

Pita

Visa signatur

Folding@Home: 1x8800GTS | 1xQ6600 | 10xE2210 | 1xXeon E5120 |
SweClockers hjälper Stanford University att finna lösningen till svåra sjukdomar. Häng med oss nu!
#foldingatsweclockers

Permalänk
Medlem

echo '#define _XOPEN_SOURCE #include <unistd.h> #include <stdio.h> int main(int argc,char*argv[]){char*p=crypt(argv[1],"xx");printf("%s\n",p);return 0; }'|gcc -x c -s -o crypt -Wall -Werror -lcrypt - for i in $(seq 50) do USERNAME=$(printf "elev%02i" $i) PASSWORD=$(mcookie|cut -b -6) CRYPTPWD=$(./crypt `echo -n $PASSWORD`) echo $USERNAME $PASSWORD >> elevlista.txt useradd -s /bin/bash -p $CRYPTPWD $USERNAME done

Permalänk
Medlem

e5150:

Det där såg avancerat och bra ut:)

Skulle du kunna förklara lite mer vad det innebär?

Skulle vara prima!

MVH

Visa signatur

Folding@Home: 1x8800GTS | 1xQ6600 | 10xE2210 | 1xXeon E5120 |
SweClockers hjälper Stanford University att finna lösningen till svåra sjukdomar. Häng med oss nu!
#foldingatsweclockers

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av pita
e5150:

Det där såg avancerat och bra ut:)

Skulle du kunna förklara lite mer vad det innebär?

Skulle vara prima!

MVH

Detta skapar ett c-program för att kryptera lösenord
(användning: "./crypt mitt_lösen" så svarar programmet med den krypterade versionen av "mitt_lösen", för att inte spara lösenord i klartext)

echo '#define _XOPEN_SOURCE #include <unistd.h> #include <stdio.h> int main(int argc,char*argv[]){char*p=crypt(argv[1],"xx");printf("%s\n",p);return 0; }'|gcc -x c -s -o crypt -Wall -Werror -lcrypt -

for i in $(seq 50) # loopar igenom talen 1 till 50 do USERNAME=$(printf "elev%02i" $i) # konstruera användarnamn (ex. "elev03", "elev50") PASSWORD=$(mcookie|cut -b -6) # slumpar fram ett sex tecken långt lösenord CRYPTPWD=$(./crypt `echo -n $PASSWORD`) # krypterar lösenordet echo $USERNAME $PASSWORD >> elevlista.txt # sparar användare + lösenord i textfilen "elevlista.txt" # skapar en användare i systemet, # som borde kunna logga in på vsftpd med # sitt användarnamn (ex. "elev03") och lösen (ex. "79ca8a") useradd -s /bin/bash -p $CRYPTPWD $USERNAME done

"useradd -s /bin/bash -p $CRYPTPWD -d /sökväg/till/webroot $USERNAME"
vore nog bättre att använda dock, så att användarna har webrooten som sin hem-mapp och by default hamnar där när de loggar in på ftp-servern.

notera dock att lösenorden sparas i klartext i filen "elevlista.txt" så att man har möjlighet att dela ut lösenorden till de olika användarna

Permalänk
Medlem

Är det inte väldigt dumt att ge useradd det krypterade lösenordet?

Permalänk
Medlem

e5150:

Tack för förklaringen:) Och allt detta lägger jag i en batch fil ?

En annan sak, hur skulle HELA scriptet se ut om tex jag vill skapa en public_html i /home/elev01 med rätta behörigheter för att lägga upp sitt webbmaterial där ?

MVH

Visa signatur

Folding@Home: 1x8800GTS | 1xQ6600 | 10xE2210 | 1xXeon E5120 |
SweClockers hjälper Stanford University att finna lösningen till svåra sjukdomar. Häng med oss nu!
#foldingatsweclockers

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av pita
e5150:

Tack för förklaringen:) Och allt detta lägger jag i en batch fil ?

En annan sak, hur skulle HELA scriptet se ut om tex jag vill skapa en public_html i /home/elev01 med rätta behörigheter för att lägga upp sitt webbmaterial där ?

MVH

public_html skapar du lättast genom /etc/skel

du skapar 2 filer, en c-fil med det övre (som du kompilerar) och en "batch-fil" med det nedre.

Visa signatur

Kör väl en klassisk signatur:
9900K @ 5GHz/128GB 3200MHz DDR4/3x1TB NVME/6800XT på Aorus Z390 Elite
Samsung C34F791, Svive 34C801, Xiaomi 34", Logitech MX Master 3 + G512...
Behöver för jobb, ej gamer.

Permalänk
Medlem

Humms, nu förvirrade du mig ganska rejält bogg!
haha, hur går jag tillväga för att skapa c-fil osv?

Visa signatur

Folding@Home: 1x8800GTS | 1xQ6600 | 10xE2210 | 1xXeon E5120 |
SweClockers hjälper Stanford University att finna lösningen till svåra sjukdomar. Häng med oss nu!
#foldingatsweclockers

Permalänk
Medlem

#!/bin/sh mkdir /etc/skel/public_html echo '#define _XOPEN_SOURCE #include <unistd.h> #include <stdio.h> int main(int argc,char*argv[]){char*p=crypt(argv[1],"xx");printf("%s\n",p);return 0; }'|gcc -x c -s -o crypt -Wall -Werror -lcrypt - for i in $(seq 50) do USERNAME=$(printf "elev%02i" $i) PASSWORD=$(mcookie|cut -b -6) CRYPTPWD=$(./crypt `echo -n $PASSWORD`) echo $USERNAME $PASSWORD >> elevlista.txt useradd -mk -s /bin/bash -p $CRYPTPWD $USERNAME done

där har du hela scriptet, så behöver du inte skapa någon c-fil eller kompilera något för hand

--

Citat:

Ursprungligen skrivet av nystan
Är det inte väldigt dumt att ge useradd det krypterade lösenordet?

Det är även dumt att spara lösenorden i klartext, men i det här fallet är det ju bra mycket smidigare än att köra en `for user in elev{00..50};do passwd $user;done` och ange alla 50 lösenord för hand.

Permalänk
Medlem

Tackar för all hjälp! Jag återkommer

Det spelar ingen roll om det är klartext eller inte.. Det är inga viktiga grejjer iaf!;)

En annan liten sak, vilka rättigheter (chmod) behövs för att public_html ska fungera?

MVH

Visa signatur

Folding@Home: 1x8800GTS | 1xQ6600 | 10xE2210 | 1xXeon E5120 |
SweClockers hjälper Stanford University att finna lösningen till svåra sjukdomar. Häng med oss nu!
#foldingatsweclockers

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av pita
Tackar för all hjälp! Jag återkommer

Det spelar ingen roll om det är klartext eller inte.. Det är inga viktiga grejjer iaf!;)

En annan liten sak, vilka rättigheter (chmod) behövs för att public_html ska fungera?

MVH

755 borde duga, så att dummy-användaren som förmodligen kör själva webservern har rätt att läsa filerna, och umask 022 är väl "standard" i de flesta sammanhang så det är nog inget du behöver oroa dig för.
Ifall det inte fungerar från början så kan du köra:
chmod 755 /home/elev*/public_html /home
chmod 751 /home/elev*

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av e5150

#!/bin/sh mkdir /etc/skel/public_html echo '#define _XOPEN_SOURCE #include <unistd.h> #include <stdio.h> int main(int argc,char*argv[]){char*p=crypt(argv[1],"xx");printf("%s\n",p);return 0; }'|gcc -x c -s -o crypt -Wall -Werror -lcrypt - for i in $(seq 50) do USERNAME=$(printf "elev%02i" $i) PASSWORD=$(mcookie|cut -b -6) CRYPTPWD=$(./crypt `echo -n $PASSWORD`) echo $USERNAME $PASSWORD >> elevlista.txt useradd -mk -s /bin/bash -p $CRYPTPWD $USERNAME done

där har du hela scriptet, så behöver du inte skapa någon c-fil eller kompilera något för hand

Aaah, du gjorde så...det såg jag inte ens

Lite onödigt att sitta och kompilera något varenda gång han ev. ska köra det förstås, men perfekt om han bara ska köra det en enda gång.

Visa signatur

Kör väl en klassisk signatur:
9900K @ 5GHz/128GB 3200MHz DDR4/3x1TB NVME/6800XT på Aorus Z390 Elite
Samsung C34F791, Svive 34C801, Xiaomi 34", Logitech MX Master 3 + G512...
Behöver för jobb, ej gamer.

Permalänk
Medlem

Varför inte använda en FTP server med databasmodul? Ganska mycket smidigare då när man har alla användarna i en databas. Blir även lätt att bygga ett administreringsverktyg över användarna om man nu skulle vilja ha det.

Permalänk
Medlem

Sunnis? Okej, skulle du kunna gå in lite mer på ditt alternativ?

Visa signatur

Folding@Home: 1x8800GTS | 1xQ6600 | 10xE2210 | 1xXeon E5120 |
SweClockers hjälper Stanford University att finna lösningen till svåra sjukdomar. Häng med oss nu!
#foldingatsweclockers

Permalänk
Medlem

Finns ganska många trevliga howtos på howtoforge hur man sätter upp en sådan i olika distributioner.

ex.
http://www.howtoforge.com/vsftpd_mysql_debian_etch

Howto för debian etch men det finns howtos för andra distributioner.

Sök på virtual hosting på howtoforge eller googla på det

Permalänk
Medlem

Har för mig att GNU versionen av passwd(1) har växlen --stdin som gör att passwd läser från stdin. Sen kan man använda

%openssl passwd password

i stället för e5150 c-kod (som funkar typ på alla *NIX utan extra program(, kan dock kanske vara en anan c-kompilator än gcc, cc))

Permalänk
Medlem

Jag körde filen adduser.sh och körde chmod +x adduser.sh..

Sedan kör jag filen med ./adduser.sh men får följade felkod?

Horan:~# ./adduser.sh
./adduser.sh: line 1: !/bin/sh: Filen eller katalogen finns inte
Usage: useradd [options] LOGIN

vad kan det bero på ?

Visa signatur

Folding@Home: 1x8800GTS | 1xQ6600 | 10xE2210 | 1xXeon E5120 |
SweClockers hjälper Stanford University att finna lösningen till svåra sjukdomar. Häng med oss nu!
#foldingatsweclockers

Permalänk

Du har nog mest troligt glömt/missat #-tecknet före !/bin/sh. Det ska alltså se ut så här: "#!/bin/sh".
Hoppas det funkar.

Visa signatur

Macbook Vit | Macbook Unibody | D80 | iPod Touch | iPhone 3GS

Permalänk
Medlem

Jag hade glömmt #....

Men nu står det så här:

Horan:~# ./adduser.sh
Usage: useradd [options] LOGIN

Options:
-b, --base-dir BASE_DIR base directory for the new user account
home directory
-c, --comment COMMENT set the GECOS field for the new user account
-d, --home-dir HOME_DIR home directory for the new user account
-D, --defaults print or save modified default useradd
configuration
-e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE
-f, --inactive INACTIVE set password inactive after expiration
to INACTIVE
-g, --gid GROUP force use GROUP for the new user account
-G, --groups GROUPS list of supplementary groups for the new
user account
-h, --help display this help message and exit
-k, --skel SKEL_DIR specify an alternative skel directory
-K, --key KEY=VALUE overrides /etc/login.defs defaults
-m, --create-home create home directory for the new user
account
-o, --non-unique allow create user with duplicate
(non-unique) UID
-p, --password PASSWORD use encrypted password for the new user
account
-r, --system create a system account
-s, --shell SHELL the login shell for the new user account
-u, --uid UID force use the UID for the new user account

Usage: useradd [options] LOGIN

Options:
-b, --base-dir BASE_DIR base directory for the new user account
home directory
-c, --comment COMMENT set the GECOS field for the new user account
-d, --home-dir HOME_DIR home directory for the new user account
-D, --defaults print or save modified default useradd
configuration
-e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE
-f, --inactive INACTIVE set password inactive after expiration
to INACTIVE
-g, --gid GROUP force use GROUP for the new user account
-G, --groups GROUPS list of supplementary groups for the new
user account
-h, --help display this help message and exit
-k, --skel SKEL_DIR specify an alternative skel directory
-K, --key KEY=VALUE overrides /etc/login.defs defaults
-m, --create-home create home directory for the new user
account
-o, --non-unique allow create user with duplicate
(non-unique) UID
-p, --password PASSWORD use encrypted password for the new user
account
-r, --system create a system account
-s, --shell SHELL the login shell for the new user account
-u, --uid UID force use the UID for the new user account

Horan:~#

?

Visa signatur

Folding@Home: 1x8800GTS | 1xQ6600 | 10xE2210 | 1xXeon E5120 |
SweClockers hjälper Stanford University att finna lösningen till svåra sjukdomar. Häng med oss nu!
#foldingatsweclockers

Permalänk
Medlem

Det ska vara "useradd -m -s /bin/bash -p $CRYPTPWD $USERNAME"
alltså inte "-mk", utan bara "-m".

Permalänk
Medlem

Okej, ska kika på det efter helgen, en massa annat att göra just nu:)

Tack iaf!

MVH

Visa signatur

Folding@Home: 1x8800GTS | 1xQ6600 | 10xE2210 | 1xXeon E5120 |
SweClockers hjälper Stanford University att finna lösningen till svåra sjukdomar. Häng med oss nu!
#foldingatsweclockers

Permalänk
Medlem

Jag kan tipsa lite om LDAP om det är många användare det handlar om. Vi på Forsmarks Skola kör detta själva, fungerar mkt bra. Finns även vettiga plugins till te x webmin som gör administrationen enkel (Hurray!)

Jag skrev ett skript i perl för detta syfte, ligger dock på laptopen. Kanske återkommer

mvh Pajp

Visa signatur

Doubleint.com - Webben har aldrig varit enklare.

Timesharing.se - En liten tjänst som löser ett stort problem.