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