Use shadow versions of password functions. Index: ext/etc/etc.c --- ext/etc/etc.c.orig +++ ext/etc/etc.c @@ -223,7 +223,7 @@ etc_getpwuid(int argc, VALUE *argv, VALUE obj) else { uid = getuid(); } - pwd = getpwuid(uid); + pwd = getpwuid_shadow(uid); if (pwd == 0) rb_raise(rb_eArgError, "can't find user for %d", (int)uid); return setup_passwd(pwd); #else @@ -253,7 +253,7 @@ etc_getpwnam(VALUE obj, VALUE nam) struct passwd *pwd; const char *p = StringValueCStr(nam); - pwd = getpwnam(p); + pwd = getpwnam_shadow(p); if (pwd == 0) rb_raise(rb_eArgError, "can't find user for %"PRIsVALUE, nam); return setup_passwd(pwd); #else