tecka ve jmenu uzivatele

Slavek Banko slavek.banko na axis.cz
Neděle Srpen 3 23:08:46 CEST 2003


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Poslední verze RedHat Linux, který používám je 7.3 (novější již nepoužívám 
a nemám v úmyslu používat, neboť přecházím na Debiana), a tak jsem na 
otázku nereagoval. Protože jsem byl autorem domněnky o redhatí záplatě, 
rozhodl jsem se věnovat trochu času (který nemám) zkoumání, abych místo 
domněnky mohl uvést konkrétní poznatky. Tu jsou.

Dříve RedHat používal stejnou verzi shadow-utils, jako například Debian 
3.0 == shadow-utils-20000902. RedHat 9 používá verzi shadow-utils-4.0.3. 
Při porovnání zdrojových kódů jsem našel následující rozdíl:

- --- redhat-7.3/libmisc/chkname.c        Thu Apr 16 21:57:43 1998
+++ redhat-9/libmisc/chkname.c  Thu Jan 10 14:04:34 2002
@@ -6,7 +6,7 @@
 #include <config.h>

 #include "rcsid.h"
- -RCSID("$Id: chkname.c,v 1.4 1998/04/16 19:57:43 marekm Exp $")
+RCSID("$Id: chkname.c,v 1.6 2002/01/10 13:04:34 kloczek Exp $")

 #include <ctype.h>
 #include "defines.h"
@@ -22,19 +22,17 @@
 good_name(const char *name)
 {
        /*
- -        * User/group names must start with a letter, and may not
- -        * contain colons, commas, newlines (used in passwd/group
- -        * files...) or any non-printable characters.
+        * User/group names must match [a-z_][a-z0-9_-]*
         */
- -       if (!*name || !isalpha(*name))
+       if (!*name || !((*name >= 'a' && *name <= 'z') || *name == '_'))
                return 0;

- -       while (*name) {
- -               if (*name == ':' || *name == ',' ||
- -                   *name == '\n' || !isprint(*name))
+       while (*++name) {
+               if (!((*name >= 'a' && *name <= 'z') ||
+                   (*name >= '0' && *name <= '9') ||
+                   *name == '_' || *name == '-' ||
+                   (*name == '$' && *(name+1) == NULL)))
                        return 0;
- -
- -               name++;
        }

        return 1;

Bohužel informace z ChangeLogu jež je součástí zdrojových kódů mi 
nestačily, a tak jsem se podíval na CVS, kde jsem k provedené úpravě 
našel následující informace:

Revision 1.5 / (download) - annotate - [select for diffs] , Sat Nov 17 
01:24:57 2001 UTC (20 months, 2 weeks ago) by kloczek 
Branch: MAIN 
CVS Tags: ver-4_0_1 
Changes since 1.4: +7 -10 lines
Diff to previous 1.4 
next merge from Solar patches (shadow-4.0.0-owl-check_names.diff) but only
part this patch with checking login name matching; checking is login
string isn't longer than possible probably it will be good prepare using
_POSIX_LOGIN_NAME_MAX from <bits/posix1_lim.h>

Z uvedeného vyplývá, že autorem záplaty není RedHat, proto se omlouvám z 
mylného nařčení. V unstable i testing větvi Debiana trpí shadow-utils 
stejným omezením. Nicméně mi nadále není jasné, proč je tečka mezi 
zakázanými znaky... Další výzkum přenechám někomu dalšímu.

Slávek.

Dne ne 3. srpen 2003 19:39 volesak na aristia.cz napsal(a):
> Jde mi o to, porozumnet tomu, proc je balicek patchovan aby se nemohl
> vytvorit user s teckou ve jmene. Vyrozumnel jsem to z nize uvedeneho
> mailu. Mozna jste necetl tento thread dukladne? Snad neni prohreskem
> optat se na neco, co souvisi s prave resenym problemem? Mozna jsem se
> jen spatne vyjadril.
> Tak tedy znovu, snad srozumitelneji:
> Jaka je pricina toho, ze se implementovala uprava pro zamezeni
> vytvoreni usera s teckou ve jmene?
> Je mozno jmeno s teckou nejak zneuzit?
> Honza Volesak
>
> from:
> slavek.banko na axis.cz
> -----------
> Jistě, to je také možnost. Ale připadá mi účinnější jednou věnovat
> trochu času odstranění patche a kompilaci balíčku, než při každém
> přidání uživatele věnovat další a další čas úpravám (a pokaždé
> vzpomínat a kontrolovat, zda jsem nezapomněl něco upravit ;-).
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)

iD8DBQE/LXniBqd9Bu0fSIQRAtP8AJ0VtBg75b3Mf61C3NaPtS6903UsAgCfURRa
Mh9AzCpZGJ/p9nLmWdSDtzc=
=lTR9
-----END PGP SIGNATURE-----



Další informace o konferenci Sendmail