script de création de user

script de création de user - Linux et OS Alternatifs

Marsh Posté le 12-08-2002 à 18:44:56    

b'jour les gens...
j'suis une grosse tanche en scripts et je dois faire rapidement (pour mercredi) un script qui va :  
prendre login + mot de passe en parametres
va créer le user correspondant et lui attribuer le mot de passe
et tout ceci a partir d'un compte non privilégié (apache --> nobody)
 
pour l'instant je m'en foos de la sécurité --> serveur de developpement, j'aurais le temps, + tard, de chercher une meilleure solution.
 
si qqul pouvait m'aider  :cry:  
 
 
merci d'avance  :hello:

Reply

Marsh Posté le 12-08-2002 à 18:44:56   

Reply

Marsh Posté le 12-08-2002 à 18:57:29    

dans un meme groupe ?  
avec ou sans shell ?

Reply

Marsh Posté le 12-08-2002 à 19:01:43    

tous les utilisateurs iront ds le groupe maildrop
sans shell

Reply

Marsh Posté le 12-08-2002 à 19:02:42    

on va supposer qu'ils sont dans le groupe groupie  
 
# $1 sera le nom et $2 le pass
 
adduser -g groupie -s /bin/false -p `perl -e 'crypt($2,'AB';)'`  $1
 
par contre c'est pas une super idée de faire un script qui va ajouter des entrées dans /etc/password. Il faudrait le setuid (chmod +s  `which useradd` ) et n'importe quel user pourra creer d'autres users :/   ou alors avec sudo mais je connais pas bien la facon de le configurer


Message édité par superX le 12-08-2002 à 19:03:00
Reply

Marsh Posté le 12-08-2002 à 19:04:10    

perl -e tralala car il faut fournir un pass crypté . Je me suis inspiré de ce topic :  
http://forum.hardware.fr/forum2.ph [...] h=&subcat=
 
 

Reply

Marsh Posté le 12-08-2002 à 19:04:32    

superX a écrit a écrit :

on va supposer qu'ils sont dans le groupe groupie  
 
# $1 sera le nom et $2 le pass
 
adduser -g groupie -s /bin/false -p `perl -e 'crypt($2,'AB';)'`  $1
 
par contre c'est pas une super idée de faire un script qui va ajouter des entrées dans /etc/password. Il faudrait le setuid (chmod +s  `which useradd` ) et n'importe quel user pourra creer d'autres users :/   ou alors avec sudo mais je connais pas bien la facon de le configurer




 
 
ouais mais la mon user apache non privilégié aura pas le droit de l'executer ce script nan ? (adduser --> faut etre en root nan ? )

Reply

Marsh Posté le 12-08-2002 à 19:05:25    

relis ma derniere phrase

Reply

Marsh Posté le 12-08-2002 à 19:05:59    

ou tu setuid useradd , ou t'utilises sudo. je vois pas d'autres solutions

Reply

Marsh Posté le 12-08-2002 à 19:06:35    

superX a écrit a écrit :

relis ma derniere phrase




 
ouip...je vais explorer la voie de sudo
 
merci:)
 
si d'autres ont des idées ?
 
(j'ai installé sudo mais y me demande un mot de passe pour l'utiliser et c'est pas le mdp root )

Reply

Marsh Posté le 12-08-2002 à 19:07:09    

superX a écrit a écrit :

ou tu setuid useradd , ou t'utilises sudo. je vois pas d'autres solutions




 
ca me tente bien setuid useradd
ca marche comment ?
 
je rentre chez moi, je check les réponses ds 20 minutes ;)

Reply

Marsh Posté le 12-08-2002 à 19:07:09   

Reply

Marsh Posté le 12-08-2002 à 19:09:44    

chmod +s `which useradd`   (c'est des backquotes , pas des guillemets)

Reply

Marsh Posté le 12-08-2002 à 19:28:09    

avec sudo , dans /etc/sudoers , tu met ça

Code :
  1. nobody <ton hostname>=NOPASSWD: /usr/sbin/useradd,/usr/sbin/userdel


nobody , de la machine <ton hostname> , peut executer en root useradd et userdel et uniquement eux et sans demander de mot de passe
 
mais pourquoi tu veux lancer ça depuis nobody (ce qui est une tres mauvaise idée) ?


Message édité par superX le 12-08-2002 à 19:37:16
Reply

Marsh Posté le 12-08-2002 à 19:35:16    

ensuite tu lances un  
 
sudo /usr/sbin/useradd -g etc...etc.....

Reply

Marsh Posté le 12-08-2002 à 20:02:23    

bon , tu me tiendras au courant  
 
la solution a tes exigences serait :
 
- modifier /etc/sudoers comme expliqué plus haut
- le script :  
 
useradd.sh
 
 
#!/bin/sh
 
sudo /usr/sbin/useradd -g maildrop -s /bin/false -p `perl -e 'crypt($2,'AB';)' ` $1
 
et tu l'appelles comme suit :  
./useradd.sh toto lepassatoto
 
attention aux backquotes (`) et aux apostrophes (';) . Perl est encadré par des backquotes mais le crypt par des guillemets.  
La dessus , ca devrait tourner comme sur des roulettes

Reply

Marsh Posté le 12-08-2002 à 20:02:30    

mirci beaucoup ;)
je tente tout ca demain  :hello:

Reply

Marsh Posté le 12-08-2002 à 20:03:12    

oops , à 7 secondes près ;)

Reply

Marsh Posté le 13-08-2002 à 12:42:43    

superX a écrit a écrit :

avec sudo , dans /etc/sudoers , tu met ça

Code :
  1. nobody <ton hostname>=NOPASSWD: /usr/sbin/useradd,/usr/sbin/userdel


nobody , de la machine <ton hostname> , peut executer en root useradd et userdel et uniquement eux et sans demander de mot de passe
 
mais pourquoi tu veux lancer ça depuis nobody (ce qui est une tres mauvaise idée) ?




 
 
beh parce que apache est membre du groupe nobody...et quand un gars s'inscrit sur le site, je lui crée son carnet d'adresses, son planning etc...et sa mailbox...et pour ca j'ai besoin, pour que ca tourne avec postfix, de l'ajouter ds le groupe maildrop.
je sais que c'est pas une bonne idée mais j'aurai le temps, plus tard, de trouver une meilleure solution ;)

Reply

Marsh Posté le 13-08-2002 à 17:53:24    

superX a écrit a écrit :

bon , tu me tiendras au courant  
 
la solution a tes exigences serait :
 
- modifier /etc/sudoers comme expliqué plus haut
- le script :  
 
useradd.sh
 
 
#!/bin/sh
 
sudo /usr/sbin/useradd -g maildrop -s /bin/false -p `perl -e 'crypt($2,'AB';)' ` $1
 
et tu l'appelles comme suit :  
./useradd.sh toto lepassatoto
 
attention aux backquotes (`) et aux apostrophes (';) . Perl est encadré par des backquotes mais le crypt par des guillemets.  
La dessus , ca devrait tourner comme sur des roulettes  




 
 
mon user houga membre du groupe nobody ne peut pas executer le script (permission denied) alors que nobody est le proprietaire du repertoire :(
comment que j'fais ?

Reply

Marsh Posté le 13-08-2002 à 18:07:56    

j'capte plus la
 
 
mon script :  
 
 

Code :
  1. #!/bin/sh
  2. /usr/sbin/adduser -group maildrop -home /home/$1 -shell /bin/false -p `perl -e 'crypt($2,'AB')' ` $1


 
si qqun capte...
 

Code :
  1. %su
  2. Password:
  3. You have mail.
  4. www# ls -la
  5. total 4
  6. drwxr-xr-x   2 nobody  wheel  512 Aug 13 18:14 .
  7. drwxr-xr-x  13 root    wheel  512 Aug 13 17:35 ..
  8. -rwxr--r--   1 root    wheel  129 Aug 13 16:07 creer_user.sh
  9. -rwxr--r--   1 nobody  wheel   76 Aug 13 15:49 test.php
  10. www# /www/Nomadesk/modules/users/ ./creer_user.sh
  11. /www/Nomadesk/modules/users/: Permission denied.
  12. www#

Reply

Marsh Posté le 13-08-2002 à 18:31:33    

ah oui.....j'ai pas la commande useradd
par contre j'ai adduser
mais je peux visiblement pas lui passer de mot de passe

Reply

Marsh Posté le 13-08-2002 à 18:59:50    

adduser , useradd , c'est kifkif pareil.
 
t'as mis quoi dans ton /etc/sudoers ?  

Reply

Marsh Posté le 13-08-2002 à 19:02:02    

et t'as pas utilisé sudo ?  
 
et root.wheel n'a surement pas les meme privileges que root.root  
 
 

Reply

Marsh Posté le 13-08-2002 à 20:27:35    

pourkoi tu gere pas t user qui utilise le mail avec un annuaire de style ldap  
et avec courrier-imap qui gere le ldap
 
ce qui te permettrais d ajouter des user facilement via php ;)

Reply

Marsh Posté le 14-08-2002 à 09:27:17    

asphro a écrit a écrit :

pourkoi tu gere pas t user qui utilise le mail avec un annuaire de style ldap  
et avec courrier-imap qui gere le ldap
 
ce qui te permettrais d ajouter des user facilement via php ;)




 
j'peux installer un Ldap avec uw-imapd ?

Reply

Marsh Posté le 14-08-2002 à 10:24:58    

bon l'execution de scripts marche toot nikel
meme sous nobody
et le systeme essaie d'ajouter le user
 

Code :
  1. ./script.sh
  2. usage: adduser
  3.     [-check_only]
  4.     [-class login_class]
  5.     [-config_create]
  6.     [-dotdir dotdir]
  7.     [-group login_group]
  8.     [-h|-help]
  9.     [-home home]
  10.     [-message message_file]
  11.     [-noconfig]
  12.     [-shell shell]
  13.     [-s|-silent|-q|-quiet]
  14.     [-uid uid_start]
  15.     [-v|-verbose]
  16. home=/home/ shell=/bin/false dotdir=/usr/share/skel login_group=maildrop
  17. login_class= message_file=no uid_start=1000


 
grosso modo ma commande ne veut pas de parametre password....ptain...comment que je peux faire soit pour qu'elle en prenne un (de password - quitte a changer la commande) soit pour pouvoir en rajouter un ultérieurement (méthode que je préfère puisque ca me permettra plus tard de mettre en place pour les users la possibilité de changer leur mot de passe (mdp boite mail y compris))
une idée ?
 
edit : la commande adduser me demande un mot de passe...je peux faire un script qui va lui passer quand y va detecter le prompt de demande de passsword ?


Message édité par ZuL le 14-08-2002 à 10:26:58
Reply

Marsh Posté le 14-08-2002 à 13:01:03    

zul a écrit a écrit :

 
 
j'peux installer un Ldap avec uw-imapd ?




 
rien vu a propos de ldap avec uw-imapd
 
mais avec modules pam et ldap ca doit etre possible

Reply

Marsh Posté le 14-08-2002 à 14:54:30    

bon j'ai résolu le problemme...meme si foncierement c'est pas sécurisé au niveau du script, si le serveur l'est correctement et que je fais les checks necessaires en php ca devrait pas poser de probleme :
 
 

Code :
  1. #!/bin/sh
  2. sudo pw useradd $1 -g maildrop -d /home/$1
  3. sudo chpass -p `perl -e 'print(crypt($2,'Az'))'` $1


Message édité par ZuL le 14-08-2002 à 14:54:40
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed