Emil Sirbu wrote:
>Trebuie sa fac un script ce va fi executat de un user cu sudo (de fapt
>va fi apelat dintr-o interfata web).
>Scriptul ia ca prim argument username-ul si trebuie sa-l adauge in sistem
>(+setat parola si adaugat in samba dar nu am ajuns acolo).
>
>Problema este cu parametrul deoarece in script folosesc ceva de genul:
> useradd -g users -s /bin/false -d /home/$1 -m $1
>si un parametru de forma "vasile -s /bin/bash" ar putea strica jucaria, nu?
>
>
>
Imi cer scuze, cred ca de la "duminica" mi se trage. Varianta _corecta_
useradd -g users -s /bin/false -d /home/"$1" -m "$1"
^ ^ ^ ^
(acum, banuiesc, ca nu se mai poate "injecta" cod)
>Eu testez :
> case "$1" in
> '') error 'Username is not set';;
> _* | *_) error 'Username cannot start/end with _';;
> [0-9]*) error 'Username cannot start with 0-9';;
>...
>insa nu stiu sa verific daca $1 contine si spatiu. Am testat si cu
>*[:space:]* dar nu merge.
>
>
Desi tot nu am aflat cum pot testa (folosind case) daca un parametru
contine spatii,
in acest caz particular in care doresc sa accept doar litere si cifre
orice "tampenii"
(spatii, semne de punctuatie, ...) ar trebui sa fie respinse pe ramura asta
[^0-9a-zA-Z] ) error 'Username can contain only 0-9,a-z,A-Z';;
Inca o data scuze pentru zgomot (promit sa nu mai postez noaptea si mai
ales duminica)
---
Detalii despre listele noastre de mail: http://www.lug.ro/