From dad5bd7c146a842e11da19c5715db117d62f5677 Mon Sep 17 00:00:00 2001 From: Thorsten Kukuk Date: Fri, 10 Oct 2008 06:53:45 +0000 Subject: Relevant BUGIDs: Purpose of commit: new feature Commit summary: --------------- 2008-10-10 Thorsten Kukuk * configure.in: add modules/pam_pwhistory/Makefile. * doc/sag/Linux-PAM_SAG.xml: Include pam_pwhistory.xml. * doc/sag/pam_pwhistory.xml: New. * libpam/pam_static_modules.h: Add pam_pwhistory data. * modules/Makefile.am: Add pam_pwhistory directory. * modules/pam_pwhistory/Makefile.am: New. * modules/pam_pwhistory/README.xml: New. * modules/pam_pwhistory/opasswd.c: New. * modules/pam_pwhistory/opasswd.h: New. * modules/pam_pwhistory/pam_pwhistory.8.xml: New. * modules/pam_pwhistory/pam_pwhistory.c: New. * modules/pam_pwhistory/tst-pam_pwhistory: New. * xtests/Makefile.am: New. * xtests/run-xtests.sh: New. * xtests/tst-pam_pwhistory1.c: New. * xtests/tst-pam_pwhistory1.pamd: New. * xtests/tst-pam_pwhistory1.sh: New. * po/POTFILES.in: Add modules/pam_pwhistory/. * po/de.po: Update translations. --- ChangeLog | 22 ++ NEWS | 6 + configure.in | 2 +- doc/sag/Linux-PAM_SAG.xml | 2 + doc/sag/pam_pwhistory.xml | 38 +++ libpam/pam_static_modules.h | 2 + modules/Makefile.am | 15 +- modules/pam_pwhistory/.cvsignore | 8 + modules/pam_pwhistory/Makefile.am | 35 +++ modules/pam_pwhistory/README.xml | 41 +++ modules/pam_pwhistory/opasswd.c | 473 ++++++++++++++++++++++++++++++ modules/pam_pwhistory/opasswd.h | 45 +++ modules/pam_pwhistory/pam_pwhistory.8.xml | 226 ++++++++++++++ modules/pam_pwhistory/pam_pwhistory.c | 319 ++++++++++++++++++++ modules/pam_pwhistory/tst-pam_pwhistory | 2 + po/Linux-PAM.pot | 20 +- po/POTFILES.in | 2 + po/ar.po | 25 +- po/as.po | 25 +- po/bn_IN.po | 25 +- po/ca.po | 25 +- po/cs.po | 25 +- po/da.po | 25 +- po/de.po | 35 ++- po/es.po | 25 +- po/fi.po | 25 +- po/fr.po | 25 +- po/gu.po | 25 +- po/hi.po | 25 +- po/hu.po | 25 +- po/it.po | 25 +- po/ja.po | 28 +- po/km.po | 25 +- po/kn.po | 25 +- po/ko.po | 25 +- po/ml.po | 25 +- po/nb.po | 25 +- po/nl.po | 25 +- po/or.po | 25 +- po/pa.po | 25 +- po/pl.po | 25 +- po/pt.po | 25 +- po/pt_BR.po | 25 +- po/ru.po | 26 +- po/si.po | 25 +- po/sr.po | 25 +- po/sr@latin.po | 25 +- po/sv.po | 25 +- po/ta.po | 25 +- po/tr.po | 25 +- po/uk.po | 25 +- po/zh_CN.po | 25 +- po/zh_TW.po | 25 +- po/zu.po | 25 +- xtests/.cvsignore | 1 + xtests/Makefile.am | 6 +- xtests/run-xtests.sh | 3 + xtests/tst-pam_pwhistory1.c | 169 +++++++++++ xtests/tst-pam_pwhistory1.pamd | 7 + xtests/tst-pam_pwhistory1.sh | 7 + 60 files changed, 2184 insertions(+), 206 deletions(-) create mode 100644 doc/sag/pam_pwhistory.xml create mode 100644 modules/pam_pwhistory/.cvsignore create mode 100644 modules/pam_pwhistory/Makefile.am create mode 100644 modules/pam_pwhistory/README.xml create mode 100644 modules/pam_pwhistory/opasswd.c create mode 100644 modules/pam_pwhistory/opasswd.h create mode 100644 modules/pam_pwhistory/pam_pwhistory.8.xml create mode 100644 modules/pam_pwhistory/pam_pwhistory.c create mode 100755 modules/pam_pwhistory/tst-pam_pwhistory create mode 100644 xtests/tst-pam_pwhistory1.c create mode 100644 xtests/tst-pam_pwhistory1.pamd create mode 100644 xtests/tst-pam_pwhistory1.sh diff --git a/ChangeLog b/ChangeLog index 4fafb565..383a2cf1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,25 @@ +2008-10-10 Thorsten Kukuk + + * configure.in: add modules/pam_pwhistory/Makefile. + * doc/sag/Linux-PAM_SAG.xml: Include pam_pwhistory.xml. + * doc/sag/pam_pwhistory.xml: New. + * libpam/pam_static_modules.h: Add pam_pwhistory data. + * modules/Makefile.am: Add pam_pwhistory directory. + * modules/pam_pwhistory/Makefile.am: New. + * modules/pam_pwhistory/README.xml: New. + * modules/pam_pwhistory/opasswd.c: New. + * modules/pam_pwhistory/opasswd.h: New. + * modules/pam_pwhistory/pam_pwhistory.8.xml: New. + * modules/pam_pwhistory/pam_pwhistory.c: New. + * modules/pam_pwhistory/tst-pam_pwhistory: New. + * xtests/Makefile.am: New. + * xtests/run-xtests.sh: New. + * xtests/tst-pam_pwhistory1.c: New. + * xtests/tst-pam_pwhistory1.pamd: New. + * xtests/tst-pam_pwhistory1.sh: New. + * po/POTFILES.in: Add modules/pam_pwhistory/. + * po/de.po: Update translations. + 2008-10-02 Thorsten Kukuk * po/de.po: Update translations. diff --git a/NEWS b/NEWS index d3e18f77..144757a0 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,12 @@ Release 1.0.90 * New password quality tests in pam_cracklib * New options for pam_lastlog to show last failed login attempt and to disable lastlog update +* New pam_pwhistory module to store last used passwords + +Release 1.0.2 + +* Regression fixed in pam_selinux +* Problem with big UIDs fixed in pam_loginuid Release 1.0.1 diff --git a/configure.in b/configure.in index 9461fd7d..63ba9ddd 100644 --- a/configure.in +++ b/configure.in @@ -542,7 +542,7 @@ AC_CONFIG_FILES([Makefile libpam/Makefile libpamc/Makefile libpamc/test/Makefile modules/pam_mkhomedir/Makefile modules/pam_motd/Makefile \ modules/pam_namespace/Makefile \ modules/pam_nologin/Makefile modules/pam_permit/Makefile \ - modules/pam_rhosts/Makefile \ + modules/pam_pwhistory/Makefile modules/pam_rhosts/Makefile \ modules/pam_rootok/Makefile modules/pam_exec/Makefile \ modules/pam_securetty/Makefile modules/pam_selinux/Makefile \ modules/pam_sepermit/Makefile \ diff --git a/doc/sag/Linux-PAM_SAG.xml b/doc/sag/Linux-PAM_SAG.xml index eef2b71f..b5a1781a 100644 --- a/doc/sag/Linux-PAM_SAG.xml +++ b/doc/sag/Linux-PAM_SAG.xml @@ -442,6 +442,8 @@ session required pam_warn.so href="pam_nologin.xml"/> + + +
+ pam_pwhistory - grant access using .pwhistory file + + + +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
diff --git a/libpam/pam_static_modules.h b/libpam/pam_static_modules.h index a66b486d..d45f2977 100644 --- a/libpam/pam_static_modules.h +++ b/libpam/pam_static_modules.h @@ -61,6 +61,7 @@ extern struct pam_module _pam_namespace_modstruct; #endif extern struct pam_module _pam_nologin_modstruct; extern struct pam_module _pam_permit_modstruct; +extern struct pam_module _pam_pwhistory_modstruct; extern struct pam_module _pam_rhosts_modstruct; extern struct pam_module _pam_rhosts_auth_modstruct; extern struct pam_module _pam_rootok_modstruct; @@ -119,6 +120,7 @@ static struct pam_module *static_modules[] = { #endif &_pam_nologin_modstruct, &_pam_permit_modstruct, + &_pam_pwhistory_modstruct, &_pam_rhosts_modstruct, &_pam_rhosts_auth_modstruct, &_pam_rootok_modstruct, diff --git a/modules/Makefile.am b/modules/Makefile.am index c79f5957..f21d52e8 100644 --- a/modules/Makefile.am +++ b/modules/Makefile.am @@ -1,15 +1,16 @@ # -# Copyright (c) 2005, 2006 Thorsten Kukuk +# Copyright (c) 2005, 2006, 2008 Thorsten Kukuk # SUBDIRS = pam_access pam_cracklib pam_debug pam_deny pam_echo \ - pam_env pam_filter pam_ftp pam_group pam_issue pam_keyinit \ - pam_lastlog pam_limits pam_listfile pam_localuser pam_mail \ - pam_mkhomedir pam_motd pam_nologin pam_permit pam_rhosts pam_rootok \ - pam_securetty pam_selinux pam_sepermit pam_shells pam_stress \ + pam_env pam_exec pam_faildelay pam_filter pam_ftp \ + pam_group pam_issue pam_keyinit pam_lastlog pam_limits \ + pam_listfile pam_localuser pam_loginuid pam_mail \ + pam_mkhomedir pam_motd pam_namespace pam_nologin \ + pam_permit pam_pwhistory pam_rhosts pam_rootok pam_securetty \ + pam_selinux pam_sepermit pam_shells pam_stress \ pam_succeed_if pam_tally pam_time pam_tty_audit pam_umask \ - pam_unix pam_userdb pam_warn pam_wheel pam_xauth pam_exec \ - pam_namespace pam_loginuid pam_faildelay + pam_unix pam_userdb pam_warn pam_wheel pam_xauth CLEANFILES = *~ diff --git a/modules/pam_pwhistory/.cvsignore b/modules/pam_pwhistory/.cvsignore new file mode 100644 index 00000000..c0d3c72c --- /dev/null +++ b/modules/pam_pwhistory/.cvsignore @@ -0,0 +1,8 @@ +*.la +*.lo +.deps +.libs +Makefile +Makefile.in +README +pam_pwhistory.8 diff --git a/modules/pam_pwhistory/Makefile.am b/modules/pam_pwhistory/Makefile.am new file mode 100644 index 00000000..018d0b52 --- /dev/null +++ b/modules/pam_pwhistory/Makefile.am @@ -0,0 +1,35 @@ +# +# Copyright (c) 2008 Thorsten Kukuk +# + +CLEANFILES = *~ + +EXTRA_DIST = README $(MANS) $(XMLS) tst-pam_pwhistory + +TESTS = tst-pam_pwhistory + +man_MANS = pam_pwhistory.8 + +XMLS = README.xml pam_pwhistory.8.xml + +securelibdir = $(SECUREDIR) +secureconfdir = $(SCONFIGDIR) + +AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include +AM_LDFLAGS = -no-undefined -avoid-version -module +if HAVE_VERSIONING + AM_LDFLAGS += -Wl,--version-script=$(srcdir)/../modules.map +endif + +noinst_HEADERS = opasswd.h + +securelib_LTLIBRARIES = pam_pwhistory.la +pam_pwhistory_la_LIBADD = -L$(top_builddir)/libpam -lpam @LIBCRYPT@ +pam_pwhistory_la_SOURCES = pam_pwhistory.c opasswd.c + +if ENABLE_REGENERATE_MAN +noinst_DATA = README +README: pam_pwhistory.8.xml +-include $(top_srcdir)/Make.xml.rules +endif + diff --git a/modules/pam_pwhistory/README.xml b/modules/pam_pwhistory/README.xml new file mode 100644 index 00000000..f048e321 --- /dev/null +++ b/modules/pam_pwhistory/README.xml @@ -0,0 +1,41 @@ + + +--> +]> + +
+ + + + + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" + href="pam_pwhistory.8.xml" xpointer='xpointer(//refnamediv[@id = "pam_pwhistory-name"]/*)'/> + + + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
diff --git a/modules/pam_pwhistory/opasswd.c b/modules/pam_pwhistory/opasswd.c new file mode 100644 index 00000000..89452d3f --- /dev/null +++ b/modules/pam_pwhistory/opasswd.c @@ -0,0 +1,473 @@ +/* + * Copyright (c) 2008 Thorsten Kukuk + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, and the entire permission notice in its entirety, + * including the disclaimer of warranties. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * ALTERNATIVELY, this product may be distributed under the terms of + * the GNU Public License, in which case the provisions of the GPL are + * required INSTEAD OF the above restrictions. (This clause is + * necessary due to a potential bad interaction between the GPL and + * the restrictions contained in a BSD-style copyright.) + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if defined(HAVE_CONFIG_H) +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined (HAVE_XCRYPT_H) +#include +#elif defined (HAVE_CRYPT_H) +#include +#endif + +#include +#include + +#include "opasswd.h" + +#ifndef RANDOM_DEVICE +#define RANDOM_DEVICE "/dev/urandom" +#endif + +#define OLD_PASSWORDS_FILE "/etc/security/opasswd" +#define TMP_PASSWORDS_FILE OLD_PASSWORDS_FILE".tmpXXXXXX" + +#define DEFAULT_BUFLEN 4096 + +typedef struct { + char *user; + char *uid; + int count; + char *old_passwords; +} opwd; + + +static int +parse_entry (char *line, opwd *data) +{ + const char delimiters[] = ":"; + char *endptr; + + data->user = strsep (&line, delimiters); + data->uid = strsep (&line, delimiters); + data->count = strtol (strsep (&line, delimiters), &endptr, 10); + if (endptr != NULL && *endptr != '\0') + return 1; + + data->old_passwords = strsep (&line, delimiters); + + return 0; +} + +/* Check, if the new password is already in the opasswd file. */ +int +check_old_password (pam_handle_t *pamh, const char *user, + const char *newpass, int debug) +{ + int retval = PAM_SUCCESS; + FILE *oldpf; + char *buf = NULL; + size_t buflen = 0; + opwd entry; + int found = 0; + + if ((oldpf = fopen (OLD_PASSWORDS_FILE, "r")) == NULL) + { + if (errno != ENOENT) + pam_syslog (pamh, LOG_ERR, "Cannot open %s: %m", OLD_PASSWORDS_FILE); + return PAM_SUCCESS; + } + + while (!feof (oldpf)) + { + char *cp, *tmp; +#if defined(HAVE_GETLINE) + ssize_t n = getline (&buf, &buflen, oldpf); +#elif defined (HAVE_GETDELIM) + ssize_t n = getdelim (&buf, &buflen, '\n', oldpf); +#else + ssize_t n; + + if (buf == NULL) + { + buflen = DEFAULT_BUFLEN; + buf = malloc (buflen); + if (buf == NULL) + return PAM_BUF_ERR; + } + buf[0] = '\0'; + fgets (buf, buflen - 1, oldpf); + n = strlen (buf); +#endif /* HAVE_GETLINE / HAVE_GETDELIM */ + cp = buf; + + if (n < 1) + break; + + tmp = strchr (cp, '#'); /* remove comments */ + if (tmp) + *tmp = '\0'; + while (isspace ((int)*cp)) /* remove spaces and tabs */ + ++cp; + if (*cp == '\0') /* ignore empty lines */ + continue; + + if (cp[strlen (cp) - 1] == '\n') + cp[strlen (cp) - 1] = '\0'; + + if (strncmp (cp, user, strlen (user)) == 0 && + cp[strlen (user)] == ':') + { + /* We found the line we needed */ + if (parse_entry (cp, &entry) == 0) + { + found = 1; + break; + } + } + } + + fclose (oldpf); + + if (found) + { + const char delimiters[] = ","; + struct crypt_data output; + char *running; + char *oldpass; + + memset (&output, 0, sizeof (output)); + + running = strdupa (entry.old_passwords); + if (running == NULL) + return PAM_BUF_ERR; + + do { + oldpass = strsep (&running, delimiters); + if (oldpass && strlen (oldpass) > 0 && + strcmp (crypt_r (newpass, oldpass, &output), oldpass) == 0) + { + if (debug) + pam_syslog (pamh, LOG_DEBUG, "New password already used"); + retval = PAM_AUTHTOK_ERR; + break; + } + } while (oldpass != NULL); + } + + if (buf) + free (buf); + + return retval; +} + +int +save_old_password (pam_handle_t *pamh, const char *user, uid_t uid, + const char *oldpass, int howmany, int debug UNUSED) +{ + char opasswd_tmp[] = TMP_PASSWORDS_FILE; + struct stat opasswd_stat; + FILE *oldpf, *newpf; + int newpf_fd; + int do_create = 0; + int retval = PAM_SUCCESS; + char *buf = NULL; + size_t buflen = 0; + int found = 0; + + if (howmany <= 0) + return PAM_SUCCESS; + + if (oldpass == NULL || *oldpass == '\0') + return PAM_SUCCESS; + + if ((oldpf = fopen (OLD_PASSWORDS_FILE, "r")) == NULL) + { + if (errno == ENOENT) + { + pam_syslog (pamh, LOG_NOTICE, "Creating %s", + OLD_PASSWORDS_FILE); + do_create = 1; + } + else + { + pam_syslog (pamh, LOG_ERR, "Cannot open %s: %m", + OLD_PASSWORDS_FILE); + return PAM_AUTHTOK_ERR; + } + } + else if (fstat (fileno (oldpf), &opasswd_stat) < 0) + { + pam_syslog (pamh, LOG_ERR, "Cannot stat %s: %m", OLD_PASSWORDS_FILE); + fclose (oldpf); + return PAM_AUTHTOK_ERR; + } + + /* Open a temp passwd file */ + newpf_fd = mkstemp (opasswd_tmp); + if (newpf_fd == -1) + { + pam_syslog (pamh, LOG_ERR, "Cannot create %s temp file: %m", + OLD_PASSWORDS_FILE); + fclose (oldpf); + return PAM_AUTHTOK_ERR; + } + if (do_create) + { + if (fchmod (newpf_fd, S_IRUSR|S_IWUSR) != 0) + pam_syslog (pamh, LOG_ERR, + "Cannot set permissions of %s temp file: %m", + OLD_PASSWORDS_FILE); + if (fchown (newpf_fd, 0, 0) != 0) + pam_syslog (pamh, LOG_ERR, + "Cannot set owner/group of %s temp file: %m", + OLD_PASSWORDS_FILE); + } + else + { + if (fchmod (newpf_fd, opasswd_stat.st_mode) != 0) + pam_syslog (pamh, LOG_ERR, + "Cannot set permissions of %s temp file: %m", + OLD_PASSWORDS_FILE); + if (fchown (newpf_fd, opasswd_stat.st_uid, opasswd_stat.st_gid) != 0) + pam_syslog (pamh, LOG_ERR, + "Cannot set owner/group of %s temp file: %m", + OLD_PASSWORDS_FILE); + } + newpf = fdopen (newpf_fd, "w+"); + if (newpf == NULL) + { + pam_syslog (pamh, LOG_ERR, "Cannot fdopen %s: %m", opasswd_tmp); + fclose (oldpf); + close (newpf_fd); + retval = PAM_AUTHTOK_ERR; + goto error_opasswd; + } + + if (!do_create) + while (!feof (oldpf)) + { + char *cp, *tmp, *save; +#if defined(HAVE_GETLINE) + ssize_t n = getline (&buf, &buflen, oldpf); +#elif defined (HAVE_GETDELIM) + ssize_t n = getdelim (&buf, &buflen, '\n', oldpf); +#else + ssize_t n; + + if (buf == NULL) + { + buflen = DEFAULT_BUFLEN; + buf = malloc (buflen); + if (buf == NULL) + return PAM_BUF_ERR; + + } + buf[0] = '\0'; + fgets (buf, buflen - 1, oldpf); + n = strlen (buf); +#endif /* HAVE_GETLINE / HAVE_GETDELIM */ + + cp = buf; + save = strdup (buf); /* Copy to write the original data back. */ + if (save == NULL) + return PAM_BUF_ERR; + + if (n < 1) + break; + + tmp = strchr (cp, '#'); /* remove comments */ + if (tmp) + *tmp = '\0'; + while (isspace ((int)*cp)) /* remove spaces and tabs */ + ++cp; + if (*cp == '\0') /* ignore empty lines */ + goto write_old_data; + + if (cp[strlen (cp) - 1] == '\n') + cp[strlen (cp) - 1] = '\0'; + + if (strncmp (cp, user, strlen (user)) == 0 && + cp[strlen (user)] == ':') + { + /* We found the line we needed */ + opwd entry; + + if (parse_entry (cp, &entry) == 0) + { + char *out = NULL; + + found = 1; + + /* Don't save the current password twice */ + if (entry.old_passwords) + { + /* there is only one password */ + if (strcmp (entry.old_passwords, oldpass) == 0) + goto write_old_data; + else + { + /* check last entry */ + cp = strstr (entry.old_passwords, oldpass); + + if (cp && strcmp (cp, oldpass) == 0) + { /* the end is the same, check that there + is a "," before. */ + --cp; + if (*cp == ',') + goto write_old_data; + } + } + } + + /* increase count. */ + entry.count++; + + /* check that we don't remember to many passwords. */ + while (entry.count > howmany) + { + char *p = strpbrk (entry.old_passwords, ","); + if (p != NULL) + entry.old_passwords = ++p; + entry.count--; + } + + if (entry.old_passwords == NULL) + { + if (asprintf (&out, "%s:%s:%d:%s\n", + entry.user, entry.uid, entry.count, + oldpass) < 0) + { + retval = PAM_AUTHTOK_ERR; + fclose (oldpf); + fclose (newpf); + goto error_opasswd; + } + } + else + { + if (asprintf (&out, "%s:%si%d:%s,%s\n", + entry.user, entry.uid, entry.count, + entry.old_passwords, oldpass) < 0) + { + retval = PAM_AUTHTOK_ERR; + fclose (oldpf); + fclose (newpf); + goto error_opasswd; + } + } + + if (fputs (out, newpf) < 0) + { + free (out); + free (save); + retval = PAM_AUTHTOK_ERR; + fclose (oldpf); + fclose (newpf); + goto error_opasswd; + } + free (out); + } + } + else + { + write_old_data: + if (fputs (save, newpf) < 0) + { + free (save); + retval = PAM_AUTHTOK_ERR; + fclose (oldpf); + fclose (newpf); + goto error_opasswd; + } + } + free (save); + } + + if (!found) + { + char *out; + + if (asprintf (&out, "%s:%d:1:%s\n", user, uid, oldpass) < 0) + { + retval = PAM_AUTHTOK_ERR; + if (oldpf) + fclose (oldpf); + fclose (newpf); + goto error_opasswd; + } + if (fputs (out, newpf) < 0) + { + free (out); + retval = PAM_AUTHTOK_ERR; + if (oldpf) + fclose (oldpf); + fclose (newpf); + goto error_opasswd; + } + free (out); + } + + if (oldpf) + if (fclose (oldpf) != 0) + { + pam_syslog (pamh, LOG_ERR, "Error while closing old opasswd file: %m"); + retval = PAM_AUTHTOK_ERR; + fclose (newpf); + goto error_opasswd; + } + + if (fclose (newpf) != 0) + { + pam_syslog (pamh, LOG_ERR, + "Error while closing temporary opasswd file: %m"); + retval = PAM_AUTHTOK_ERR; + goto error_opasswd; + } + + unlink (OLD_PASSWORDS_FILE".old"); + if (link (OLD_PASSWORDS_FILE, OLD_PASSWORDS_FILE".old") != 0 && + errno != ENOENT) + pam_syslog (pamh, LOG_ERR, "Cannot create backup file of %s: %m", + OLD_PASSWORDS_FILE); + rename (opasswd_tmp, OLD_PASSWORDS_FILE); + error_opasswd: + unlink (opasswd_tmp); + + return retval; +} diff --git a/modules/pam_pwhistory/opasswd.h b/modules/pam_pwhistory/opasswd.h new file mode 100644 index 00000000..e8a20139 --- /dev/null +++ b/modules/pam_pwhistory/opasswd.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2008 Thorsten Kukuk + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, and the entire permission notice in its entirety, + * including the disclaimer of warranties. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * ALTERNATIVELY, this product may be distributed under the terms of + * the GNU Public License, in which case the provisions of the GPL are + * required INSTEAD OF the above restrictions. (This clause is + * necessary due to a potential bad interaction between the GPL and + * the restrictions contained in a BSD-style copyright.) + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __OPASSWD_H__ +#define __OPASSWD_H__ + +extern int check_old_password (pam_handle_t *pamh, const char *user, + const char *newpass, int debug); +extern int save_old_password (pam_handle_t *pamh, const char *user, + uid_t uid, const char *oldpass, + int howmany, int debug); + +#endif /* __OPASSWD_H__ */ diff --git a/modules/pam_pwhistory/pam_pwhistory.8.xml b/modules/pam_pwhistory/pam_pwhistory.8.xml new file mode 100644 index 00000000..26d6bd15 --- /dev/null +++ b/modules/pam_pwhistory/pam_pwhistory.8.xml @@ -0,0 +1,226 @@ + + + + + + + pam_pwhistory + 8 + Linux-PAM Manual + + + + pam_pwhistory + PAM module to remember last passwords + + + + + pam_pwhistory.so + + debug + + + use_authtok + + + enforce_for_root + + + remember=N + + + retry=N + + + + + + + + DESCRIPTION + + + This module saves the last passwords for each user in order + to force password change history and keep the user from + alternating between the same password too frequently. + + + This module does not work togehter with kerberos. In general, + it does not make much sense to use this module in conjuction + with NIS or LDAP, since the old passwords are stored on the + local machine and are not available on another machine for + password history checking. + + + + + OPTIONS + + + + + + + + Turns on debugging via + + syslog3 + . + + + + + + + + + + When password changing enforce the module to use the new password + provided by a previously stacked + module (this is used in the example of the stacking of the + pam_cracklib module documented below). + + + + + + + + + + If this option is set, the check is enforced for root, too. + + + + + + + + + + The last N passwords for each + user are saved in /etc/security/opasswd. + The default is 10. + + + + + + + + + + Prompt user at most N times + before returning with error. The default is + 1. + + + + + + + + + MODULE TYPES PROVIDED + + Only the module type is provided. + + + + + RETURN VALUES + + + PAM_AUTHTOK_ERR + + + No new password was entered, the user aborted password + change or new password couldn't be set. + + + + + PAM_IGNORE + + + Password history was disabled. + + + + + PAM_MAXTRIES + + + Password was rejected too often. + + + + + PAM_USER_UNKNOWN + + + User is not known to system. + + + + + + + + EXAMPLES + + An example password section would be: + +#%PAM-1.0 +password required pam_pwhistory.so +password required pam_unix.so use_authtok + + + + In combination with pam_cracklib: + +#%PAM-1.0 +password required pam_cracklib.so retry=3 +password required pam_pwhistory.so use_authtok +password required pam_unix.so use_authtok + + + + + + FILES + + + /etc/security/opasswd + + File with password history + + + + + + + SEE ALSO + + + pam.conf5 + , + + pam.d5 + , + + pam8 + + + + + + AUTHOR + + pam_pwhistory was written by Thorsten Kukuk <kukuk@thkukuk.de> + + + + diff --git a/modules/pam_pwhistory/pam_pwhistory.c b/modules/pam_pwhistory/pam_pwhistory.c new file mode 100644 index 00000000..d3cce728 --- /dev/null +++ b/modules/pam_pwhistory/pam_pwhistory.c @@ -0,0 +1,319 @@ +/* + * Copyright (c) 2008 Thorsten Kukuk + * Author: Thorsten Kukuk + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, and the entire permission notice in its entirety, + * including the disclaimer of warranties. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * ALTERNATIVELY, this product may be distributed under the terms of + * the GNU Public License, in which case the provisions of the GPL are + * required INSTEAD OF the above restrictions. (This clause is + * necessary due to a potential bad interaction between the GPL and + * the restrictions contained in a BSD-style copyright.) + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if defined(HAVE_CONFIG_H) +#include +#endif + +#define PAM_SM_PASSWORD + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "opasswd.h" + +#define NEW_PASSWORD_PROMPT _("New %s%spassword: ") +#define AGAIN_PASSWORD_PROMPT _("Retype new %s%spassword: ") +#define MISTYPED_PASSWORD _("Sorry, passwords do not match.") + +#define DEFAULT_BUFLEN 2048 + +struct options_t { + int debug; + int use_authtok; + int enforce_for_root; + int remember; + int tries; +}; +typedef struct options_t options_t; + + +static void +parse_option (pam_handle_t *pamh, const char *argv, options_t *options) +{ + if (strcasecmp (argv, "use_first_pass") == 0) + /* ignore */; + else if (strcasecmp (argv, "use_first_pass") == 0) + /* ignore */; + else if (strcasecmp (argv, "use_authtok") == 0) + options->use_authtok = 1; + else if (strcasecmp (argv, "debug") == 0) + options->debug = 1; + else if (strncasecmp (argv, "remember=", 9) == 0) + { + options->remember = strtol(&argv[9], NULL, 10); + if (options->remember < 0) + options->remember = 0; + if (options->remember > 400) + options->remember = 400; + } + else if (strncasecmp (argv, "retry=", 6) == 0) + { + options->tries = strtol(&argv[6], NULL, 10); + if (options->tries < 0) + options->tries = 1; + } + else if (strcasecmp (argv, "enforce_for_root") == 0) + options->enforce_for_root = 1; + else + pam_syslog (pamh, LOG_ERR, "pam_pwhistory: unknown option: %s", argv); +} + + +PAM_EXTERN int +pam_sm_chauthtok (pam_handle_t *pamh, int flags, int argc, const char **argv) +{ + struct passwd *pwd; + char *newpass; + const char *user; + void *newpass_void; + int retval, tries; + options_t options; + + memset (&options, 0, sizeof (options)); + + /* Set some default values, which could be overwritten later. */ + options.remember = 10; + options.tries = 1; + + /* Parse parameters for module */ + for ( ; argc-- > 0; argv++) + parse_option (pamh, *argv, &options); + + if (options.debug) + pam_syslog (pamh, LOG_DEBUG, "pam_sm_chauthtok entered"); + + + if (options.remember == 0) + return PAM_IGNORE; + + retval = pam_get_user (pamh, &user, NULL); + if (retval != PAM_SUCCESS) + return retval; + + if (user == NULL || strlen (user) == 0) + { + if (options.debug) + pam_syslog (pamh, LOG_DEBUG, + "User is not known to system"); + + return PAM_USER_UNKNOWN; + } + + if (flags & PAM_PRELIM_CHECK) + { + if (options.debug) + pam_syslog (pamh, LOG_DEBUG, + "pam_sm_chauthtok(PAM_PRELIM_CHECK)"); + + return PAM_SUCCESS; + } + + pwd = pam_modutil_getpwnam (pamh, user); + if (pwd == NULL) + return PAM_USER_UNKNOWN; + + /* Ignore root if not enforced */ + if (pwd->pw_uid == 0 && !options.enforce_for_root) + return PAM_SUCCESS; + + if ((strcmp(pwd->pw_passwd, "x") == 0) || + ((pwd->pw_passwd[0] == '#') && + (pwd->pw_passwd[1] == '#') && + (strcmp(pwd->pw_name, pwd->pw_passwd + 2) == 0))) + { + struct spwd *spw = pam_modutil_getspnam (pamh, user); + if (spw == NULL) + return PAM_USER_UNKNOWN; + + retval = save_old_password (pamh, user, pwd->pw_uid, spw->sp_pwdp, + options.remember, options.debug); + if (retval != PAM_SUCCESS) + return retval; + } + else + { + retval = save_old_password (pamh, user, pwd->pw_uid, pwd->pw_passwd, + options.remember, options.debug); + if (retval != PAM_SUCCESS) + return retval; + } + + retval = pam_get_item (pamh, PAM_AUTHTOK, (const void **) &newpass_void); + newpass = (char *) newpass_void; + if (retval != PAM_SUCCESS) + return retval; + if (options.debug) + { + if (newpass) + pam_syslog (pamh, LOG_DEBUG, "got new auth token"); + else + pam_syslog (pamh, LOG_DEBUG, "new auth token not set"); + } + + /* If we haven't been given a password yet, prompt for one... */ + if (newpass == NULL) + { + if (options.use_authtok) + /* We are not allowed to ask for a new password */ + return PAM_AUTHTOK_ERR; + + tries = 0; + + while ((newpass == NULL) && (tries++ < options.tries)) + { + retval = pam_prompt (pamh, PAM_PROMPT_ECHO_OFF, &newpass, + NEW_PASSWORD_PROMPT, "UNIX", " "); + if (retval != PAM_SUCCESS) + { + _pam_drop (newpass); + if (retval == PAM_CONV_AGAIN) + retval = PAM_INCOMPLETE; + return retval; + } + + if (newpass == NULL) + { + /* We want to abort the password change */ + pam_error (pamh, _("Password change aborted.")); + return PAM_AUTHTOK_ERR; + } + + if (options.debug) + pam_syslog (pamh, LOG_DEBUG, "check against old password file"); + + if (check_old_password (pamh, user, newpass, + options.debug) != PAM_SUCCESS) + { + pam_error (pamh, + _("Password has been already used. Choose another.")); + _pam_overwrite (newpass); + _pam_drop (newpass); + if (tries >= options.tries) + { + if (options.debug) + pam_syslog (pamh, LOG_DEBUG, + "Aborted, too many tries"); + return PAM_MAXTRIES; + } + } + else + { + int failed; + char *new2; + + retval = pam_prompt (pamh, PAM_PROMPT_ECHO_OFF, &new2, + AGAIN_PASSWORD_PROMPT, "UNIX", " "); + if (retval != PAM_SUCCESS) + return retval; + + if (new2 == NULL) + { /* Aborting password change... */ + pam_error (pamh, _("Password change aborted.")); + return PAM_AUTHTOK_ERR; + } + + failed = (strcmp (newpass, new2) != 0); + + _pam_overwrite (new2); + _pam_drop (new2); + + if (failed) + { + pam_error (pamh, MISTYPED_PASSWORD); + _pam_overwrite (newpass); + _pam_drop (newpass); + if (tries >= options.tries) + { + if (options.debug) + pam_syslog (pamh, LOG_DEBUG, + "Aborted, too many tries"); + return PAM_MAXTRIES; + } + } + } + } + + /* Remember new password */ + pam_set_item (pamh, PAM_AUTHTOK, (void *) newpass); + } + else /* newpass != NULL, we found an old password */ + { + if (options.debug) + pam_syslog (pamh, LOG_DEBUG, "look in old password file"); + + if (check_old_password (pamh, user, newpass, + options.debug) != PAM_SUCCESS) + { + pam_error (pamh, + _("Password has been already used. Choose another.")); + /* We are only here, because old password was set. + So overwrite it, else it will be stored! */ + pam_set_item (pamh, PAM_AUTHTOK, (void *) NULL); + + return PAM_AUTHTOK_ERR; + } + } + + return PAM_SUCCESS; +} + + +#ifdef PAM_STATIC +/* static module data */ +struct pam_module _pam_pwhistory_modstruct = { + "pam_pwhistory", + NULL, + NULL, + NULL, + NULL, + NULL, + pam_sm_chauthtok +}; +#endif diff --git a/modules/pam_pwhistory/tst-pam_pwhistory b/modules/pam_pwhistory/tst-pam_pwhistory new file mode 100755 index 00000000..3531a88a --- /dev/null +++ b/modules/pam_pwhistory/tst-pam_pwhistory @@ -0,0 +1,2 @@ +#!/bin/sh +../../tests/tst-dlopen .libs/pam_pwhistory.so diff --git a/po/Linux-PAM.pot b/po/Linux-PAM.pot index f9d1eddf..c7d34cbf 100644 --- a/po/Linux-PAM.pot +++ b/po/Linux-PAM.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -167,16 +167,19 @@ msgid "Unknown PAM error" msgstr "" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "" #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "" #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "" @@ -354,6 +357,17 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +msgid "Password change aborted." +msgstr "" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "" + #: modules/pam_selinux/pam_selinux.c:172 msgid "Would you like to enter a security context? [N] " msgstr "" @@ -511,10 +525,6 @@ msgstr "" msgid "You must choose a longer password" msgstr "" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "" - #: modules/pam_unix/pam_unix_passwd.c:571 #, c-format msgid "Changing password for %s." diff --git a/po/POTFILES.in b/po/POTFILES.in index 7887aad7..39889b06 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -58,6 +58,8 @@ ./modules/pam_namespace/pam_namespace.c ./modules/pam_nologin/pam_nologin.c ./modules/pam_permit/pam_permit.c +./modules/pam_pwhistory/opasswd.c +./modules/pam_pwhistory/pam_pwhistory.c ./modules/pam_rhosts/pam_rhosts.c ./modules/pam_rootok/pam_rootok.c ./modules/pam_securetty/pam_securetty.c diff --git a/po/ar.po b/po/ar.po index 6ee867dd..d5b416a5 100644 --- a/po/ar.po +++ b/po/ar.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: @PACKAGE@\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2001-07-13 15:36+0200\n" "Last-Translator: Novell Language \n" "Language-Team: Novell Language \n" @@ -166,16 +166,19 @@ msgid "Unknown PAM error" msgstr "خطأ PAM غير معروف" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "كلمة سر %s%s الجديدة: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "أعد كتابة كلمة سر %s%s الجديدة: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "عذرًا، يوجد عدم تطابق بين كلمات السر." @@ -353,6 +356,18 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "لم يتم تغيير كلمة السر" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "كلمة السر التي تم إدخالها مستخدمة بالفعل. اختر كلمة سر أخرى." + #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy msgid "Would you like to enter a security context? [N] " @@ -515,10 +530,6 @@ msgstr "تعذر تغيير كلمة السر الخاصة بـ NIS." msgid "You must choose a longer password" msgstr "يجب اختيار كلمة سر أطول" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "كلمة السر التي تم إدخالها مستخدمة بالفعل. اختر كلمة سر أخرى." - #: modules/pam_unix/pam_unix_passwd.c:571 #, fuzzy, c-format msgid "Changing password for %s." @@ -540,6 +551,10 @@ msgstr "أدخل كلمة سر UNIX الجديدة: " msgid "Retype new UNIX password: " msgstr "أعد كتابة كلمة سر UNIX الجديدة: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "كلمة السر التي تم إدخالها مستخدمة بالفعل. اختر كلمة سر أخرى." + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "السياق الافتراضي لك هو %s. \n" diff --git a/po/as.po b/po/as.po index f79c2e78..3f39c41b 100644 --- a/po/as.po +++ b/po/as.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: as\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2007-06-22 13:19+0530\n" "Last-Translator: Amitakhya Phukan \n" "Language-Team: Assamese \n" @@ -167,16 +167,19 @@ msgid "Unknown PAM error" msgstr "অজ্ঞাত PAM ভুল" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "নতুন %s%s গুপ্তশব্দ: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "নতুন %s%s গুপ্তশব্দ পুনঃ লিখক: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "ক্ষমা কৰিব, গুপ্তশব্দৰ অমিল " @@ -354,6 +357,18 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "গুপ্ত শব্দ অপৰিবৰ্ত্তিত" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "গুপ্তশব্দ ইতিমধ্যে ব্যৱহৃত । অন্য এটা বাচি লওক ।" + #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy msgid "Would you like to enter a security context? [N] " @@ -516,10 +531,6 @@ msgstr "NIS গুপ্তশব্দ সলনি কৰিব পৰা ন msgid "You must choose a longer password" msgstr "আপুনি ইয়াতকৈ এটা দীঘল গুপ্তশব্দ নিৰ্ব্বাচন কৰিব লাগিব" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "গুপ্তশব্দ ইতিমধ্যে ব্যৱহৃত । অন্য এটা বাচি লওক ।" - #: modules/pam_unix/pam_unix_passwd.c:571 #, fuzzy, c-format msgid "Changing password for %s." @@ -541,6 +552,10 @@ msgstr "নতুন UNIX গুপ্তশব্দ দিয়ক: " msgid "Retype new UNIX password: " msgstr "নতুন UNIX গুপ্তশব্দ পুনঃ লিখক: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "গুপ্তশব্দ ইতিমধ্যে ব্যৱহৃত । অন্য এটা বাচি লওক ।" + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "আপোনাৰ অবিকল্পিত সন্দৰ্ভ হ'ল %s. \n" diff --git a/po/bn_IN.po b/po/bn_IN.po index 650875d7..ff034157 100644 --- a/po/bn_IN.po +++ b/po/bn_IN.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: bn_IN\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2007-06-21 15:05+0530\n" "Last-Translator: Runa Bhattacharjee \n" "Language-Team: Bengali (India) \n" @@ -167,16 +167,19 @@ msgid "Unknown PAM error" msgstr "PAM সংক্রান্ত অজানা ত্রুটি" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "নতুন %s%s পাসওয়ার্ড: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "নতুন %s%s পাসওয়ার্ড পুনরায় লিখুন: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "দুঃখিত, পাসওয়ার্ড দুটি এক নয়।" @@ -354,6 +357,18 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "পাসওয়ার্ড পরিবর্তন করা হয়নি" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "পাসওয়ার্ড পূর্বে ব্যবহৃত হয়েছে। একটি পৃথক পাসওয়ার্ড নির্বাচন করুন।" + #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy msgid "Would you like to enter a security context? [N] " @@ -518,10 +533,6 @@ msgstr "NIS পাসওয়ার্ড পরিবর্তন করা স msgid "You must choose a longer password" msgstr "চিহ্নিত পাসওয়ার্ডের থেকে লম্বা পাসওয়ার্ড উল্লেখ করা আবশ্যক" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "পাসওয়ার্ড পূর্বে ব্যবহৃত হয়েছে। একটি পৃথক পাসওয়ার্ড নির্বাচন করুন।" - #: modules/pam_unix/pam_unix_passwd.c:571 #, fuzzy, c-format msgid "Changing password for %s." @@ -543,6 +554,10 @@ msgstr "নতুন UNIX পাসওয়ার্ড উল্লেখ কর msgid "Retype new UNIX password: " msgstr "নতুন UNIX পাসওয়ার্ড পুনরায় লিখুন: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "পাসওয়ার্ড পূর্বে ব্যবহৃত হয়েছে। একটি পৃথক পাসওয়ার্ড নির্বাচন করুন।" + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "ডিফল্ট কনটেক্সট হল %s। \n" diff --git a/po/ca.po b/po/ca.po index d8598fa5..63a21aff 100644 --- a/po/ca.po +++ b/po/ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: @PACKAGE@\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2007-02-22 20:57+0100\n" "Last-Translator: Anna \n" "Language-Team: Catalan\n" @@ -168,16 +168,19 @@ msgid "Unknown PAM error" msgstr "Error de PAM desconegut" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Nova contrasenya de %s%s: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Torneu a escriure la nova contrasenya de %s%s: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Les contrasenyes no coincideixen." @@ -355,6 +358,18 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "No s'ha canviat la contrasenya" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "Aquesta contrasenya ja s'ha fet servir. Trieu-ne una altra." + #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy msgid "Would you like to enter a security context? [N] " @@ -519,10 +534,6 @@ msgstr "No s'ha pogut canviar la contrasenya NIS." msgid "You must choose a longer password" msgstr "Heu de triar una contrasenya més llarga" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "Aquesta contrasenya ja s'ha fet servir. Trieu-ne una altra." - #: modules/pam_unix/pam_unix_passwd.c:571 #, fuzzy, c-format msgid "Changing password for %s." @@ -544,6 +555,10 @@ msgstr "Introduïu la nova contrasenya d'UNIX: " msgid "Retype new UNIX password: " msgstr "Torneu a escriure la nova contrasenya d'UNIX: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "Aquesta contrasenya ja s'ha fet servir. Trieu-ne una altra." + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "El context per defecte és %s. \n" diff --git a/po/cs.po b/po/cs.po index 5d81cef2..acaacdfe 100644 --- a/po/cs.po +++ b/po/cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2008-09-19 15:54+0100\n" "Last-Translator: Tomas Mraz \n" "Language-Team: cs_CZ \n" @@ -167,16 +167,19 @@ msgid "Unknown PAM error" msgstr "Neznámá chyba PAM" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Nové %s%sheslo: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Opakujte nové %s%sheslo: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Hesla se neshodují." @@ -355,6 +358,18 @@ msgstr "Vytváření adresáře '%s'." msgid "Unable to create directory %s: %m" msgstr "Nezdařilo se vytvořit adresář %s: %m" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "Heslo nebylo změněno" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "Heslo již bylo použito. Zvolte jiné." + #: modules/pam_selinux/pam_selinux.c:172 msgid "Would you like to enter a security context? [N] " msgstr "Chcete zadat bezpečnostní kontext? [N] " @@ -515,10 +530,6 @@ msgstr "NIS heslo se nepodařilo změnit." msgid "You must choose a longer password" msgstr "Musíte zvolit delší heslo" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "Heslo již bylo použito. Zvolte jiné." - #: modules/pam_unix/pam_unix_passwd.c:571 #, c-format msgid "Changing password for %s." @@ -539,3 +550,7 @@ msgstr "Zadejte nové UNIX heslo: " #: modules/pam_unix/pam_unix_passwd.c:678 msgid "Retype new UNIX password: " msgstr "Opakujte nové UNIX heslo: " + +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "Heslo již bylo použito. Zvolte jiné." diff --git a/po/da.po b/po/da.po index 7d5c8e6c..af578b5b 100644 --- a/po/da.po +++ b/po/da.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: @PACKAGE@\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2005-08-16 20:00+0200\n" "Last-Translator: Novell Language \n" "Language-Team: Novell Language \n" @@ -171,16 +171,19 @@ msgid "Unknown PAM error" msgstr "Ukendt PAM-fejl" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Ny %s%sadgangskode: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Genindtast ny %s%sadgangskode: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Adgangskoderne stemmer desværre ikke overens." @@ -358,6 +361,18 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "Adgangskoden er uændret" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "Adgangskoden er allerede blevet brugt. Vælg en anden." + # power-off message #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy @@ -522,10 +537,6 @@ msgstr "NIS-adgangskoden kunne ikke ændres." msgid "You must choose a longer password" msgstr "Du skal vælge en længere adgangskode" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "Adgangskoden er allerede blevet brugt. Vælg en anden." - #: modules/pam_unix/pam_unix_passwd.c:571 #, fuzzy, c-format msgid "Changing password for %s." @@ -547,6 +558,10 @@ msgstr "Indtast ny UNIX-adgangskode: " msgid "Retype new UNIX password: " msgstr "Genindtast ny UNIX-adgangskode: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "Adgangskoden er allerede blevet brugt. Vælg en anden." + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "Din standardkontekst er %s. \n" diff --git a/po/de.po b/po/de.po index 9ddd8d04..ae7fc03e 100644 --- a/po/de.po +++ b/po/de.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" -"PO-Revision-Date: 2008-02-29 12:59+0100\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" +"PO-Revision-Date: 2008-10-10 08:53+0200\n" "Last-Translator: Fabian Affolter \n" "Language-Team: German \n" "MIME-Version: 1.0\n" @@ -170,16 +170,19 @@ msgid "Unknown PAM error" msgstr "Unbekannter PAM-Fehler" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Geben Sie ein neues %s%sPasswort ein: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Geben Sie das neue %s%sPasswort erneut ein: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Die Passwörter stimmen nicht überein." @@ -288,23 +291,24 @@ msgstr "Willkommen in Ihrem neuen Account!" #. TRANSLATORS: "Last failed login: from on " #: modules/pam_lastlog/pam_lastlog.c:460 -#, fuzzy, c-format +#, c-format msgid "Last failed login:%s%s%s" -msgstr "Letzte Anmeldung:%s%s%s" +msgstr "Letzte fehlgeschlagene Anmeldung:%s%s%s" #: modules/pam_lastlog/pam_lastlog.c:469 modules/pam_lastlog/pam_lastlog.c:476 #, c-format msgid "There was %d failed login attempt since the last successful login." msgid_plural "" "There were %d failed login attempts since the last successful login." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Es gab %d fehlgeschagenen Versuch seit der letzten erfolgreichen Anmeldung." +msgstr[1] "Es gab %d fehlgeschlagene Versuche seit der letzten erfolgreichen Anmeldung." #. TRANSLATORS: only used if dngettext is not supported #: modules/pam_lastlog/pam_lastlog.c:481 #, c-format msgid "There were %d failed login attempts since the last successful login." msgstr "" +"Es gab %d fehlgeschlagene Versuche seit der letzten erfolgreichen Anmeldung." #: modules/pam_limits/pam_limits.c:712 #, c-format @@ -357,6 +361,17 @@ msgstr "Erstelle Verzeichnis '%s'." msgid "Unable to create directory %s: %m" msgstr "Verzeichnis %s kann nicht erstellt werden: %m" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +msgid "Password change aborted." +msgstr "Passwort Änderung wurde abgebrochen." + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "Passwort wurde bereits verwendet. Wählen Sie ein anderes aus." + #: modules/pam_selinux/pam_selinux.c:172 msgid "Would you like to enter a security context? [N] " msgstr "Möchten Sie einen Sicherheitskontext eingeben? [N] " @@ -516,10 +531,6 @@ msgstr "Änderung des NIS-Passworts nicht möglich." msgid "You must choose a longer password" msgstr "Sie müssen ein längeres Passwort auswählen." -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "Passwort wurde bereits verwendet. Wählen Sie ein anderes aus." - #: modules/pam_unix/pam_unix_passwd.c:571 #, c-format msgid "Changing password for %s." @@ -540,3 +551,7 @@ msgstr "Geben Sie ein neues UNIX-Passwort ein: " #: modules/pam_unix/pam_unix_passwd.c:678 msgid "Retype new UNIX password: " msgstr "Geben Sie das neue UNIX-Passwort erneut ein: " + +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "Passwort wurde bereits verwendet. Wählen Sie ein anderes aus." diff --git a/po/es.po b/po/es.po index 0f4e70ec..064c6d57 100644 --- a/po/es.po +++ b/po/es.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM.tip.es\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2008-02-21 00:03-0200\n" "Last-Translator: Domingo Becker \n" "Language-Team: Spanish \n" @@ -171,16 +171,19 @@ msgid "Unknown PAM error" msgstr "Error desconocido de PAM" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Nueva %s%scontraseña:" #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Vuelva a escribir la nueva %s%scontraseña:" #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Las contraseñas no coinciden." @@ -358,6 +361,18 @@ msgstr "Creando directorio '%s'." msgid "Unable to create directory %s: %m" msgstr "No se pudo crear el directorio %s: %m" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "La contraseña no ha cambiado" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "La contraseña ya se ha utilizado. Seleccione otra." + #: modules/pam_selinux/pam_selinux.c:172 msgid "Would you like to enter a security context? [N] " msgstr "¿Desea introducir un contexto de seguridad? [N]" @@ -521,10 +536,6 @@ msgstr "No es posible cambiar la contraseña NIS." msgid "You must choose a longer password" msgstr "Debe elegir una contraseña más larga" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "La contraseña ya se ha utilizado. Seleccione otra." - #: modules/pam_unix/pam_unix_passwd.c:571 #, c-format msgid "Changing password for %s." @@ -546,6 +557,10 @@ msgstr "Introduzca la nueva contraseña de UNIX:" msgid "Retype new UNIX password: " msgstr "Vuelva a escribir la nueva contraseña de UNIX:" +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "La contraseña ya se ha utilizado. Seleccione otra." + #~ msgid "Requested MLS level not in permitted range" #~ msgstr "El nivel MLS requerido no está en el rango permitido" diff --git a/po/fi.po b/po/fi.po index df521d0b..0a1cb59b 100644 --- a/po/fi.po +++ b/po/fi.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2006-05-04 08:30+0200\n" "Last-Translator: Jyri Palokangas \n" "Language-Team: \n" @@ -169,16 +169,19 @@ msgid "Unknown PAM error" msgstr "Tuntematon PAM-virhe" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Uusi %s%ssalasana: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Anna uudelleen uusi %s%ssalasana: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Salasanat eivät täsmää." @@ -356,6 +359,18 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "Salasanaa ei vaihdettu" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "Salasana on jo käytetty. Valitse toinen." + #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy msgid "Would you like to enter a security context? [N] " @@ -519,10 +534,6 @@ msgstr "NIS-salasanaa ei voitu vaihtaa." msgid "You must choose a longer password" msgstr "Salasanan tulee olla pidempi" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "Salasana on jo käytetty. Valitse toinen." - #: modules/pam_unix/pam_unix_passwd.c:571 #, fuzzy, c-format msgid "Changing password for %s." @@ -544,6 +555,10 @@ msgstr "Anna uusi UNIX-salasana: " msgid "Retype new UNIX password: " msgstr "Anna uusi UNIX-salasana uudelleen: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "Salasana on jo käytetty. Valitse toinen." + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "Oletusympäristösi on %s. \n" diff --git a/po/fr.po b/po/fr.po index b8186452..4c9ec4df 100644 --- a/po/fr.po +++ b/po/fr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: pam.fr2\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2008-03-12 12:17+0100\n" "Last-Translator: Canniot Thomas \n" "Language-Team: Français \n" @@ -177,16 +177,19 @@ msgid "Unknown PAM error" msgstr "Erreur PAM inconnue" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Nouveau %s%smot de passe : " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Retapez le nouveau %s%smot de passe : " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Les mots de passe ne correspondent pas." @@ -364,6 +367,18 @@ msgstr "Création du répertoire « %s »." msgid "Unable to create directory %s: %m" msgstr "Impossible de créer le répertoire %s : %m" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "Mot de passe inchangé" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "Mot de passe déjà utilisé. Choisissez-en un autre." + #: modules/pam_selinux/pam_selinux.c:172 msgid "Would you like to enter a security context? [N] " msgstr "Voulez-vous entrer un contexte de sécurité ? [N]" @@ -522,10 +537,6 @@ msgstr "Le mot de passe NIS n'a pas pu être changé." msgid "You must choose a longer password" msgstr "Vous devez choisir un mot de passe plus long" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "Mot de passe déjà utilisé. Choisissez-en un autre." - #: modules/pam_unix/pam_unix_passwd.c:571 #, c-format msgid "Changing password for %s." @@ -547,5 +558,9 @@ msgstr "Entrez le nouveau mot de passe UNIX : " msgid "Retype new UNIX password: " msgstr "Retapez le nouveau mot de passe UNIX : " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "Mot de passe déjà utilisé. Choisissez-en un autre." + #~ msgid "Requested MLS level not in permitted range" #~ msgstr "Niveau MLS demandé hors de la plage autorisée" diff --git a/po/gu.po b/po/gu.po index 009b723c..adf66289 100644 --- a/po/gu.po +++ b/po/gu.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM.tip.gu\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2008-03-13 14:29+0530\n" "Last-Translator: Ankit Patel \n" "Language-Team: Gujarati \n" @@ -169,16 +169,19 @@ msgid "Unknown PAM error" msgstr "અજ્ઞાત PAM ભૂલ" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "નવો %s%sપાસવર્ડ: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "નવો %s%sપાસવર્ડ ફરી લખો: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "માફ કરજો, પાસવર્ડો બંધબેસતા નથી." @@ -356,6 +359,18 @@ msgstr "ડિરેક્ટરી '%s' બનાવી રહ્યા છી msgid "Unable to create directory %s: %m" msgstr "ડિરેક્ટરી %s બનાવવામાં અસમર્થ: %m" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "પાસવર્ડ બદલાયેલ નથી" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "પાસવર્ડ પહેલાથી જ વપરાઈ ગયેલ છે. બીજો પસંદ કરો." + #: modules/pam_selinux/pam_selinux.c:172 msgid "Would you like to enter a security context? [N] " msgstr "શું તમે સુરક્ષા સંદર્ભ દાખલ કરવા ઈચ્છો છો? [N] " @@ -514,10 +529,6 @@ msgstr "NIS પાસવર્ડ બદલી શક્યા નહિં." msgid "You must choose a longer password" msgstr "તમારે લાંબો પાસવર્ડ જ પસંદ કરવો જોઈએ" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "પાસવર્ડ પહેલાથી જ વપરાઈ ગયેલ છે. બીજો પસંદ કરો." - #: modules/pam_unix/pam_unix_passwd.c:571 #, c-format msgid "Changing password for %s." @@ -539,5 +550,9 @@ msgstr "નવો UNIX પાસવર્ડ દાખલ કરો: " msgid "Retype new UNIX password: " msgstr "નવો UNIX પાસવર્ડ ફરીથી લખો: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "પાસવર્ડ પહેલાથી જ વપરાઈ ગયેલ છે. બીજો પસંદ કરો." + #~ msgid "Requested MLS level not in permitted range" #~ msgstr "અરજી થયેલ MLS સ્તર એ પરવાનગીય વિસ્તારમાં નથી" diff --git a/po/hi.po b/po/hi.po index 8582b9f8..eb574065 100644 --- a/po/hi.po +++ b/po/hi.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: hi\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2007-06-21 15:22+0530\n" "Last-Translator: Rajesh Ranjan \n" "Language-Team: Hindi \n" @@ -169,16 +169,19 @@ msgid "Unknown PAM error" msgstr "अनजान PAM त्रुटि" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "नया %s%spassword: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "नया %s%spassword फिर टाइप करें: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "क्षमा करें, शब्दकूट नहीं मिलते हैं." @@ -356,6 +359,18 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "शब्दकूट परिवर्तित" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "शब्दकूट को पहले ही बदला जा चुका है. दूसरा चुनें." + #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy msgid "Would you like to enter a security context? [N] " @@ -518,10 +533,6 @@ msgstr "NIS शब्दकूट बदला नहीं जा सका." msgid "You must choose a longer password" msgstr "आपको जरूर एक लंबा शब्दकूट चुनना चाहिए" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "शब्दकूट को पहले ही बदला जा चुका है. दूसरा चुनें." - #: modules/pam_unix/pam_unix_passwd.c:571 #, fuzzy, c-format msgid "Changing password for %s." @@ -543,6 +554,10 @@ msgstr "नया UNIX शब्दकूट दें: " msgid "Retype new UNIX password: " msgstr "नया UNIX शब्दकूट फिर टाइप करें: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "शब्दकूट को पहले ही बदला जा चुका है. दूसरा चुनें." + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "आपका मूलभूत संदर्भ %s है. \n" diff --git a/po/hu.po b/po/hu.po index e5c53e36..dff81541 100644 --- a/po/hu.po +++ b/po/hu.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: pam\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2008-04-30 08:23+0100\n" "Last-Translator: Sulyok Péter \n" "Language-Team: Hungarian \n" @@ -176,16 +176,19 @@ msgid "Unknown PAM error" msgstr "Ismeretlen PAM hiba" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Új %s%sjelszó: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Ismét az új %s%sjelszó: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Sajnálom, de a jelszavak nem egyeznek." @@ -363,6 +366,18 @@ msgstr "\"%s\" mappa teremtése" msgid "Unable to create directory %s: %m" msgstr "%s mapa nem teremthető meg: %m" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "Változatlan jelszó" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "A jelszót már használta. Válasszon másikat!" + #: modules/pam_selinux/pam_selinux.c:172 msgid "Would you like to enter a security context? [N] " msgstr "Kíván biztonsági környezetet megadni? [N]" @@ -521,10 +536,6 @@ msgstr "NIS jelszót nem sikerült módosítani." msgid "You must choose a longer password" msgstr "Hosszabb jelszót kell választani" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "A jelszót már használta. Válasszon másikat!" - #: modules/pam_unix/pam_unix_passwd.c:571 #, c-format msgid "Changing password for %s." @@ -546,5 +557,9 @@ msgstr "Adja meg az új UNIX jelszót: " msgid "Retype new UNIX password: " msgstr "Írja be újra a UNIX jelszót: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "A jelszót már használta. Válasszon másikat!" + #~ msgid "Requested MLS level not in permitted range" #~ msgstr "Nincs az engedélyezett intervallumban a kért MLS szint" diff --git a/po/it.po b/po/it.po index 7daaf97f..f0339e69 100644 --- a/po/it.po +++ b/po/it.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2007-11-24 13:39+0100\n" "Last-Translator: Luca Bruno \n" "Language-Team: Italian \n" @@ -171,16 +171,19 @@ msgid "Unknown PAM error" msgstr "Errore PAM sconosciuto" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Nuova password%s%s: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Reimmettere la nuova password%s%s: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Le password non corrispondono." @@ -358,6 +361,18 @@ msgstr "Creazione della directory \"%s\"." msgid "Unable to create directory %s: %m" msgstr "Impossibile creare la directory %s: %m" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "Password non modificata" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "Password già utilizzata. Sceglierne un'altra." + #: modules/pam_selinux/pam_selinux.c:172 msgid "Would you like to enter a security context? [N] " msgstr "Attivare un contesto di sicurezza? [N] " @@ -519,10 +534,6 @@ msgstr "Impossibile modificare la password NIS." msgid "You must choose a longer password" msgstr "Scegliere una password più lunga" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "Password già utilizzata. Sceglierne un'altra." - #: modules/pam_unix/pam_unix_passwd.c:571 #, c-format msgid "Changing password for %s." @@ -544,6 +555,10 @@ msgstr "Immettere nuova password UNIX: " msgid "Retype new UNIX password: " msgstr "Reimmettere la nuova password UNIX: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "Password già utilizzata. Sceglierne un'altra." + #~ msgid "Requested MLS level not in permitted range" #~ msgstr "Il livello MLS richiesto non è nell'intervallo permesso" diff --git a/po/ja.po b/po/ja.po index 106561c3..b0ef9bdf 100644 --- a/po/ja.po +++ b/po/ja.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ja\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2007-06-21 16:36+1000\n" "Last-Translator: Noriko Mizumoto \n" "Language-Team: Japanese \n" @@ -167,16 +167,19 @@ msgid "Unknown PAM error" msgstr "不明なPAMエラー" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "新しい%s%sパスワード:" #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "新しい%s%sパスワードを再入力してください:" #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "パスワードが一致しません。" @@ -353,6 +356,19 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "パスワードが変更されていません" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "" +"パスワードはすでに使用されています。 別のパスワードを選択してください。" + #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy msgid "Would you like to enter a security context? [N] " @@ -515,11 +531,6 @@ msgstr "NISパスワードを変更できませんでした。" msgid "You must choose a longer password" msgstr "長いパスワードを選択する必要があります" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "" -"パスワードはすでに使用されています。 別のパスワードを選択してください。" - #: modules/pam_unix/pam_unix_passwd.c:571 #, fuzzy, c-format msgid "Changing password for %s." @@ -541,6 +552,11 @@ msgstr "新しいUNIXパスワードを入力してください:" msgid "Retype new UNIX password: " msgstr "新しいUNIX パスワードを再入力してください:" +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "" +#~ "パスワードはすでに使用されています。 別のパスワードを選択してください。" + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "デフォルトのコンテキストは%sです。 \n" diff --git a/po/km.po b/po/km.po index f2dccf65..024f16d9 100644 --- a/po/km.po +++ b/po/km.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2006-03-17 10:32+0700\n" "Last-Translator: Khoem Sokhem \n" "Language-Team: Khmer \n" @@ -170,16 +170,19 @@ msgid "Unknown PAM error" msgstr "មិន​ស្គាល់​កំហុស PAM" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "ពាក្យ​សម្ងាត់ %s%s ថ្មី ៖" #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "វាយ​ពាក្យ​សម្ងាត់ %s%s ថ្មី​ឡើង​វិញ ៖" #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "សូម​ទោស ពាក្យ​សម្ងាត់​មិន​ដូច​គ្នា​ឡើយ ។" @@ -357,6 +360,18 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "ពាក្យសម្ងាត់​មិន​បាន​ផ្លាស់ប្ដូរ​ឡើយ" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "ពាក្យសម្ងាត់​ត្រូវ​បាន​ប្រើ​រួច​ហើយ ។ សូម​ជ្រើស​មួយ​ទៀត ។" + #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy msgid "Would you like to enter a security context? [N] " @@ -519,10 +534,6 @@ msgstr "មិន​អាច​ផ្លាស់ប្ដូរ​ពាក្ msgid "You must choose a longer password" msgstr "អ្នក​ត្រូវ​តែ​ជ្រើស​ពាក្យសម្ងាត់​វែង​ជាង​នេះ" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "ពាក្យសម្ងាត់​ត្រូវ​បាន​ប្រើ​រួច​ហើយ ។ សូម​ជ្រើស​មួយ​ទៀត ។" - #: modules/pam_unix/pam_unix_passwd.c:571 #, fuzzy, c-format msgid "Changing password for %s." @@ -544,6 +555,10 @@ msgstr "បញ្ចូល​ពាក្យ​សម្ងាត់ UNIX ថ្ msgid "Retype new UNIX password: " msgstr "វាយ​ពាក្យ​សម្ងាត់ UNIX ថ្មី​ម្ដង​ទៀត ៖ " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "ពាក្យសម្ងាត់​ត្រូវ​បាន​ប្រើ​រួច​ហើយ ។ សូម​ជ្រើស​មួយ​ទៀត ។" + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "បរិបទ​លំនាំដើម​របស់​អ្នក​គឺ %s ។ \n" diff --git a/po/kn.po b/po/kn.po index 7356371b..b4e2a98a 100644 --- a/po/kn.po +++ b/po/kn.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: kn\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2007-06-22 13:29+0530\n" "Last-Translator: Shankar Prasad \n" "Language-Team: Kannada \n" @@ -167,16 +167,19 @@ msgid "Unknown PAM error" msgstr "ಗೊತ್ತಿರದ PAM ದೋಷ" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "ಹೊಸ %s%sಗುಪ್ತಪದ: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "ಹೊಸ %s%sಗುಪ್ತಪದವನ್ನು ಪುನರ್ ಟೈಪಿಸಿ: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "ಕ್ಷಮಿಸಿ, ಗುಪ್ತಪದಗಳು ತಾಳೆಯಾಗುತ್ತಿಲ್ಲ." @@ -354,6 +357,18 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "ಗುಪ್ತಪದ ಬದಲಾಗಿಲ್ಲ" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "ಗುಪ್ತಪದವು ಈಗಾಗಲೆ ಬಳಸಲ್ಪಟ್ಟಿದೆ. ಬೇರೊಂದನ್ನು ಬಳಸಿ." + #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy msgid "Would you like to enter a security context? [N] " @@ -517,10 +532,6 @@ msgstr "NIS ಗುಪ್ತಪದವನ್ನು ಬದಲಾಯಿಸಲಾಗ msgid "You must choose a longer password" msgstr "ನೀವು ಒಂದು ಉದ್ದವಾದ ಗುಪ್ತಪದವನ್ನು ಆರಿಸಬೇಕು" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "ಗುಪ್ತಪದವು ಈಗಾಗಲೆ ಬಳಸಲ್ಪಟ್ಟಿದೆ. ಬೇರೊಂದನ್ನು ಬಳಸಿ." - #: modules/pam_unix/pam_unix_passwd.c:571 #, fuzzy, c-format msgid "Changing password for %s." @@ -542,6 +553,10 @@ msgstr "ಹೊಸ UNIX ಗುಪ್ತಪದವನ್ನು ದಾಖಲಿಸ msgid "Retype new UNIX password: " msgstr "ಹೊಸ UNIX ಗುಪ್ತಪದವನ್ನು ಪುನಃ ಟೈಪಿಸಿ: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "ಗುಪ್ತಪದವು ಈಗಾಗಲೆ ಬಳಸಲ್ಪಟ್ಟಿದೆ. ಬೇರೊಂದನ್ನು ಬಳಸಿ." + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "ನಿಮ್ಮ ಡಿಫಾಲ್ಟ್ ಸನ್ನಿವೇಶವು %s ಆಗಿದೆ. \n" diff --git a/po/ko.po b/po/ko.po index 1098954d..038557b2 100644 --- a/po/ko.po +++ b/po/ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ko\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2007-06-22 10:02+1000\n" "Last-Translator: Eunju Kim \n" "Language-Team: Korean \n" @@ -167,16 +167,19 @@ msgid "Unknown PAM error" msgstr "알 수 없는 PAM 오류" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "새 %s%s 암호:" #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "새 %s%s 암호 재입력:" #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "죄송합니다. 암호가 일치하지 않습니다." @@ -353,6 +356,18 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "암호가 변경되지 않음" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "이미 사용되고 있는 암호입니다. 다른 암호를 선택해 주십시오." + #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy msgid "Would you like to enter a security context? [N] " @@ -514,10 +529,6 @@ msgstr "NIS 암호는 변경할 수 없습니다." msgid "You must choose a longer password" msgstr "더 긴 암호를 선택해 주십시오" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "이미 사용되고 있는 암호입니다. 다른 암호를 선택해 주십시오." - #: modules/pam_unix/pam_unix_passwd.c:571 #, fuzzy, c-format msgid "Changing password for %s." @@ -539,6 +550,10 @@ msgstr "새 UNIX 암호 입력:" msgid "Retype new UNIX password: " msgstr "새 UNIX 암호 재입력:" +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "이미 사용되고 있는 암호입니다. 다른 암호를 선택해 주십시오." + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "기본 문맥은 %s입니다. \n" diff --git a/po/ml.po b/po/ml.po index 4d251447..f8a153c8 100644 --- a/po/ml.po +++ b/po/ml.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ml\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2007-06-22 17:15+0530\n" "Last-Translator: Ani Peter \n" "Language-Team: Malayalam \n" @@ -167,16 +167,19 @@ msgid "Unknown PAM error" msgstr "അപരിചിതമായ PAM പിശക്" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "പുതിയ %s%s പാസ്‌വേറ്‍ഡ്: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "വീണ്ടും %s%s പാസ്‌വേറ്‍ഡ് ടൈപ്പ് ചെയ്യുക: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "ക്ഷമിക്കണം, പാസ്‌വേറ്‍ഡുകള്‍ തമ്മില്‍ ചേരുന്നില്ല." @@ -354,6 +357,18 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "പാസ്‌വേറ്‍ഡ് മാറ്റിയിട്ടില്ല" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "പാസ്‌വേറ്‍ഡ് നിലവില്‍ ഉപയോഗിത്തിലുള്ളതാണ്. മറ്റൊന്ന് നല്‍കുക." + #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy msgid "Would you like to enter a security context? [N] " @@ -518,10 +533,6 @@ msgstr "NIS പാസ്‌വേറ്‍ഡ് മാറ്റുവാന് msgid "You must choose a longer password" msgstr "ഇതിലും വലിയ പാസ്‌വേറ്‍ഡ് തിരഞ്ഞെടുക്കുക" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "പാസ്‌വേറ്‍ഡ് നിലവില്‍ ഉപയോഗിത്തിലുള്ളതാണ്. മറ്റൊന്ന് നല്‍കുക." - #: modules/pam_unix/pam_unix_passwd.c:571 #, fuzzy, c-format msgid "Changing password for %s." @@ -543,6 +554,10 @@ msgstr "പുതിയ UNIX പാസ്‌വേറ്‍ഡ് നല്‍ msgid "Retype new UNIX password: " msgstr "പുതിയ UNIX പാസ്‌വേറ്‍ഡ് വീണ്ടും ടൈപ്പ് ചെയ്യുക: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "പാസ്‌വേറ്‍ഡ് നിലവില്‍ ഉപയോഗിത്തിലുള്ളതാണ്. മറ്റൊന്ന് നല്‍കുക." + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "%s ആണ് നിങ്ങളുടെ ഡീഫോള്‍ട്ട് കോണ്‍ടെക്സ്റ്റ്. \n" diff --git a/po/nb.po b/po/nb.po index 70244f3c..794152c8 100644 --- a/po/nb.po +++ b/po/nb.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2008-04-30 12:59+0200\n" "Last-Translator: Olav Pettershagen \n" "Language-Team: \n" @@ -166,16 +166,19 @@ msgid "Unknown PAM error" msgstr "Ukjent PAM-feil" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Nytt %s%spassord: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Bekreft nytt %s%s-passord: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Beklager, ikke samsvar mellom passord." @@ -353,6 +356,18 @@ msgstr "Oppretter katalog «%s»." msgid "Unable to create directory %s: %m" msgstr "Kan ikke opprette katalog %s: %m" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "Passord uendret" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "Passordet er allerede benyttet. Velg et annet." + #: modules/pam_selinux/pam_selinux.c:172 msgid "Would you like to enter a security context? [N] " msgstr "Vil du angi sikkerhetskontekst? [N] " @@ -511,10 +526,6 @@ msgstr "NIS-passord kunne ikke endres." msgid "You must choose a longer password" msgstr "Du må velge et lengre passord" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "Passordet er allerede benyttet. Velg et annet." - #: modules/pam_unix/pam_unix_passwd.c:571 #, c-format msgid "Changing password for %s." @@ -536,5 +547,9 @@ msgstr "Angi nytt UNIX-passord: " msgid "Retype new UNIX password: " msgstr "Bekreft nytt UNIX-passord: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "Passordet er allerede benyttet. Velg et annet." + #~ msgid "Requested MLS level not in permitted range" #~ msgstr "Forespurt MLS-nivå er ikke i tillatt område" diff --git a/po/nl.po b/po/nl.po index d0557929..941ee9ab 100644 --- a/po/nl.po +++ b/po/nl.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2008-02-22 23:33+0100\n" "Last-Translator: Peter van Egdom \n" "Language-Team: Dutch \n" @@ -169,16 +169,19 @@ msgid "Unknown PAM error" msgstr "Onbekende PAM-fout" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Nieuw %s%swachtwoord: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Nieuw %s%swachtwoord herhalen: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Sorry, wachtwoorden komen niet overeen." @@ -356,6 +359,18 @@ msgstr "Aanmaken van map '%s'." msgid "Unable to create directory %s: %m" msgstr "Niet in staat om map %s aan te maken: %m" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "Wachtwoord is niet gewijzigd" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "Wachtwoord is al gebruikt. Kies een ander wachtwoord." + #: modules/pam_selinux/pam_selinux.c:172 msgid "Would you like to enter a security context? [N] " msgstr "Wilt u een beveiligingscontext invoeren? [N] " @@ -517,10 +532,6 @@ msgstr "NIS-wachtwoord kon niet worden gewijzigd." msgid "You must choose a longer password" msgstr "U moet een langer wachtwoord kiezen" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "Wachtwoord is al gebruikt. Kies een ander wachtwoord." - #: modules/pam_unix/pam_unix_passwd.c:571 #, c-format msgid "Changing password for %s." @@ -542,6 +553,10 @@ msgstr "Nieuw UNIX-wachtwoord invoeren: " msgid "Retype new UNIX password: " msgstr "Nieuw UNIX-wachtwoord herhalen: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "Wachtwoord is al gebruikt. Kies een ander wachtwoord." + #~ msgid "Requested MLS level not in permitted range" #~ msgstr "Aangevraagd MLS-niveau niet in toegestaan bereik" diff --git a/po/or.po b/po/or.po index 176314c9..0ac767fa 100644 --- a/po/or.po +++ b/po/or.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM.tip.or\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2008-09-30 11:42+0530\n" "Last-Translator: Manoj Kumar Giri \n" "Language-Team: Oriya\n" @@ -171,16 +171,19 @@ msgid "Unknown PAM error" msgstr "ଅଜଣା PAM ତୃଟି" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "ନୂତନ %s%s ପ୍ରବେଶ ସଙ୍କେତ: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "ନୂତନ %s%s ପ୍ରବେଶ ସଙ୍କେତକୁ ପୁନର୍ବାର ଟାଇପ କରନ୍ତୁ: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "କ୍ଷମା କରିବେ, ପ୍ରବେଶ ସଙ୍କେତ ମିଶୁ ନାହିଁ।" @@ -358,6 +361,18 @@ msgstr "ଡ଼ିରେକ୍ଟୋରୀ '%s' ନିର୍ମାଣ କରୁ msgid "Unable to create directory %s: %m" msgstr "ଡ଼ିରେକ୍ଟୋରୀ '%s' ନିର୍ମାଣ କରିବାରେ ଅସମର୍ଥ: %m" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "ପ୍ରବେଶ ସଙ୍କେତ ଅପରିବର୍ତ୍ତିତ ଅଛି" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "ପ୍ରବେଶ ସଙ୍କେତଟି ପୂର୍ବରୁ ବ୍ଯବହୃତ ହେଉଛି। ଅନ୍ଯ ଗୋଟିଏ ପ୍ରବେଶ ସଙ୍କେତ ଚୟନ କରନ୍ତୁ।" + #: modules/pam_selinux/pam_selinux.c:172 msgid "Would you like to enter a security context? [N] " msgstr "ଆପଣ ଗୋଟିଏ ସୁରକ୍ଷା ପ୍ରସଙ୍ଗ ଭରଣ କରିବା ପାଇଁ ଚାହୁଁଛନ୍ତି କି? [N]" @@ -517,10 +532,6 @@ msgstr "NIS ପ୍ରବେଶ ସଙ୍କେତକୁ ବଦଳାଇ ହେ msgid "You must choose a longer password" msgstr "ଆପଣ ଗୋଟିଏ ଲମ୍ବା ପ୍ରବେଶ ସଙ୍କେତ ଚୟନ କରିବା ଉଚିତ" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "ପ୍ରବେଶ ସଙ୍କେତଟି ପୂର୍ବରୁ ବ୍ଯବହୃତ ହେଉଛି। ଅନ୍ଯ ଗୋଟିଏ ପ୍ରବେଶ ସଙ୍କେତ ଚୟନ କରନ୍ତୁ।" - #: modules/pam_unix/pam_unix_passwd.c:571 #, c-format msgid "Changing password for %s." @@ -542,5 +553,9 @@ msgstr "ନୂତନ UNIX ପ୍ରବେଶ ସଙ୍କେତ ଭରଣ କର msgid "Retype new UNIX password: " msgstr "ନୂତନ UNIX ପ୍ରବେଶ ସଙ୍କେତକୁ ପୁନର୍ବାର ଟାଇପ କରନ୍ତୁ: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "ପ୍ରବେଶ ସଙ୍କେତଟି ପୂର୍ବରୁ ବ୍ଯବହୃତ ହେଉଛି। ଅନ୍ଯ ଗୋଟିଏ ପ୍ରବେଶ ସଙ୍କେତ ଚୟନ କରନ୍ତୁ।" + #~ msgid "Requested MLS level not in permitted range" #~ msgstr "ଅନୁରୋଧିତ MSL ସ୍ତର ଅନୁମୋଦିତ ପରିସର ମଧ୍ଯରେ ନାହିଁ" diff --git a/po/pa.po b/po/pa.po index 8de6229b..be1a2e57 100644 --- a/po/pa.po +++ b/po/pa.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM.pa\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2005-08-06 08:34+0530\n" "Last-Translator: Amanpreet Singh Alam[ਆਲਮ] \n" "Language-Team: Panjabi \n" @@ -169,16 +169,19 @@ msgid "Unknown PAM error" msgstr "ਅਣਜਾਣ PAM ਗਲਤੀ" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, fuzzy, c-format msgid "New %s%spassword: " msgstr "ਗੁਪਤ-ਕੋਡ ਨਾ-ਤਬਦੀਲ ਹੈ" #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, fuzzy, c-format msgid "Retype new %s%spassword: " msgstr "ਨਵਾਂ STRESS ਗੁਪਤ-ਕੋਡ ਮੁੜ-ਲਿਖੋ: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 #, fuzzy msgid "Sorry, passwords do not match." msgstr "NIS ਗੁਪਤ-ਕੋਡ ਤਬਦੀਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ ਹੈ।" @@ -359,6 +362,18 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "ਗੁਪਤ-ਕੋਡ ਨਾ-ਤਬਦੀਲ ਹੈ" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "ਗੁਪਤ-ਕੋਡ ਪਹਿਲਾਂ ਵੀ ਵਰਤਿਆ ਗਿਆ ਹੈ। ਵੱਖਰਾ ਚੁਣੋ।" + #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy msgid "Would you like to enter a security context? [N] " @@ -521,10 +536,6 @@ msgstr "NIS ਗੁਪਤ-ਕੋਡ ਤਬਦੀਲ ਨਹੀਂ ਕੀਤਾ ਜ msgid "You must choose a longer password" msgstr "ਤੁਹਾਨੂੰ ਲੰਮੇ ਗੁਪਤ-ਕੋਡ ਦੀ ਚੋਣ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "ਗੁਪਤ-ਕੋਡ ਪਹਿਲਾਂ ਵੀ ਵਰਤਿਆ ਗਿਆ ਹੈ। ਵੱਖਰਾ ਚੁਣੋ।" - #: modules/pam_unix/pam_unix_passwd.c:571 #, c-format msgid "Changing password for %s." @@ -548,6 +559,10 @@ msgstr "ਨਵਾਂ STRESS ਗੁਪਤ-ਕੋਡ ਦਿਓ: " msgid "Retype new UNIX password: " msgstr "ਨਵਾਂ STRESS ਗੁਪਤ-ਕੋਡ ਮੁੜ-ਲਿਖੋ: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "ਗੁਪਤ-ਕੋਡ ਪਹਿਲਾਂ ਵੀ ਵਰਤਿਆ ਗਿਆ ਹੈ। ਵੱਖਰਾ ਚੁਣੋ।" + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "ਤੁਹਾਡਾ ਮੁੱਲ ਪਰਸੰਗ %s ਹੈ \n" diff --git a/po/pl.po b/po/pl.po index ad5a8c44..9f43fff1 100644 --- a/po/pl.po +++ b/po/pl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: pl\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2008-03-03 21:59+0200\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" @@ -168,16 +168,19 @@ msgid "Unknown PAM error" msgstr "Nieznany błąd PAM" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Nowe hasło %s%s: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Ponownie podaj nowe hasło %s%s: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Podane hasła nie są zgodne." @@ -356,6 +359,18 @@ msgstr "Tworzenie folderu \"%s\"." msgid "Unable to create directory %s: %m" msgstr "Nie można utworzyć folderu %s: %m" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "Hasło nie zostało zmienione" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "Hasło było już używane. Wybierz inne." + #: modules/pam_selinux/pam_selinux.c:172 msgid "Would you like to enter a security context? [N] " msgstr "Czy chcesz podać kontekst bezpieczeństwa? [N]" @@ -516,10 +531,6 @@ msgstr "Nie można zmienić hasła NIS." msgid "You must choose a longer password" msgstr "Wybierz dłuższe hasło" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "Hasło było już używane. Wybierz inne." - #: modules/pam_unix/pam_unix_passwd.c:571 #, c-format msgid "Changing password for %s." @@ -541,5 +552,9 @@ msgstr "Podaj nowe hasło UNIX: " msgid "Retype new UNIX password: " msgstr "Ponownie podaj hasło UNIX: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "Hasło było już używane. Wybierz inne." + #~ msgid "Requested MLS level not in permitted range" #~ msgstr "Żądany poziom MLS nie jest w dozwolonym zakresie" diff --git a/po/pt.po b/po/pt.po index 9ffdc9ac..109b9749 100644 --- a/po/pt.po +++ b/po/pt.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM.pt\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2006-05-03 21:54+0200\n" "Last-Translator: Antonio Cardoso Martins \n" "Language-Team: portuguese\n" @@ -167,16 +167,19 @@ msgid "Unknown PAM error" msgstr "Erro PAM desconhecido" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Nova %s%spalavra passe: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Digite novamente a nova %s%spalavra passe: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Lamento, as palavras passe não coincidem." @@ -354,6 +357,18 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "Palavra passe inalterada" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "A palavra passe já foi anteriormente utilizada. Escolha outra." + #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy msgid "Would you like to enter a security context? [N] " @@ -520,10 +535,6 @@ msgstr "A palavra passe de NIS não pode ser alterada." msgid "You must choose a longer password" msgstr "Deve escolher uma palavra passe mais longa" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "A palavra passe já foi anteriormente utilizada. Escolha outra." - #: modules/pam_unix/pam_unix_passwd.c:571 #, fuzzy, c-format msgid "Changing password for %s." @@ -545,6 +556,10 @@ msgstr "Digite a nova palavra passe UNIX: " msgid "Retype new UNIX password: " msgstr "Digite novamente a nova palavra passe UNIX: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "A palavra passe já foi anteriormente utilizada. Escolha outra." + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "O seu contexto pré-definido é %s: \n" diff --git a/po/pt_BR.po b/po/pt_BR.po index 4d32d2de..0d41b5e6 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM.tip\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2008-08-18 13:41-0300\n" "Last-Translator: Taylon \n" "Language-Team: Brazilian Portuguese \n" @@ -169,16 +169,19 @@ msgid "Unknown PAM error" msgstr "Erro desconhecido no PAM" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Nova %s%ssenha:" #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Redigite a nova %s%ssenha:" #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "As senhas não são iguais." @@ -356,6 +359,18 @@ msgstr "Criando o diretório '%s'." msgid "Unable to create directory %s: %m" msgstr "Impossível criar o diretório %s: %m" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "Senha inalterada" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "A senha já foi usada. Escolha outra." + #: modules/pam_selinux/pam_selinux.c:172 msgid "Would you like to enter a security context? [N] " msgstr "Deseja digitar um contexto de segurança? [N]" @@ -514,10 +529,6 @@ msgstr "A senha NIS não pôde ser mudada." msgid "You must choose a longer password" msgstr "Escolha uma senha mais longa" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "A senha já foi usada. Escolha outra." - #: modules/pam_unix/pam_unix_passwd.c:571 #, c-format msgid "Changing password for %s." @@ -539,6 +550,10 @@ msgstr "Digite a nova senha UNIX:" msgid "Retype new UNIX password: " msgstr "Redigite a nova senha UNIX:" +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "A senha já foi usada. Escolha outra." + #~ msgid "Requested MLS level not in permitted range" #~ msgstr "Nível MLS requerido fora da faixa permitida" diff --git a/po/ru.po b/po/ru.po index 50b69d26..2fda5d6c 100644 --- a/po/ru.po +++ b/po/ru.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM.tip\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2008-02-23 20:11+0300\n" "Last-Translator: Andrew Martynov \n" "Language-Team: Russian \n" @@ -175,17 +175,20 @@ msgid "Unknown PAM error" msgstr "Неизвестная ошибка PAM" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Новый пароль %s%s: " # Keep the newlines and spaces after ':'! #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Повторите ввод нового пароля %s%s: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Извините, но пароли не совпадают." @@ -365,6 +368,19 @@ msgstr "Создание каталога '%s'." msgid "Unable to create directory %s: %m" msgstr "Невозможно создать каталог %s: %m" +# password dialog title +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "Пароль не изменен" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "Этот пароль уже был использован. Выберите другой." + # power-off message #: modules/pam_selinux/pam_selinux.c:172 msgid "Would you like to enter a security context? [N] " @@ -532,10 +548,6 @@ msgstr "Пароль NIS изменить нельзя." msgid "You must choose a longer password" msgstr "Выберите пароль большей длины" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "Этот пароль уже был использован. Выберите другой." - #: modules/pam_unix/pam_unix_passwd.c:571 #, c-format msgid "Changing password for %s." @@ -559,6 +571,10 @@ msgstr "Введите новый пароль UNIX: " msgid "Retype new UNIX password: " msgstr "Повторите ввод нового пароля UNIX: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "Этот пароль уже был использован. Выберите другой." + #~ msgid "Requested MLS level not in permitted range" #~ msgstr "Запрошенный уровень MLS вне границ разрешенного диапазона" diff --git a/po/si.po b/po/si.po index b7ef2aca..55cb7bb6 100644 --- a/po/si.po +++ b/po/si.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: si\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2007-06-22 12:24+0530\n" "Last-Translator: Danishka Navin \n" "Language-Team: Sinhala \n" @@ -167,16 +167,19 @@ msgid "Unknown PAM error" msgstr "නොදන්නා PAM දෝෂය" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "නව %s%sරහස්පදය: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "නව %s%sරහස්පදය නැවත ඇතුළත් කරන්න: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "සමාවෙන්න, රහස්පද ගැලපෙන්නේ නැත." @@ -354,6 +357,18 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "රහස්පදය වෙනස් නොවිනි" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "රහස්පදය දැනටමත් භාවිතා වේ. වෙනත් එකක් තෝරාගන්න." + #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy msgid "Would you like to enter a security context? [N] " @@ -516,10 +531,6 @@ msgstr "NIS රහස්පදය වෙනස් කළ නොහැක." msgid "You must choose a longer password" msgstr "ඔබ විසින් දිගු රහස්පදයක් තෝරාගත යුතුම වේ" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "රහස්පදය දැනටමත් භාවිතා වේ. වෙනත් එකක් තෝරාගන්න." - #: modules/pam_unix/pam_unix_passwd.c:571 #, fuzzy, c-format msgid "Changing password for %s." @@ -541,6 +552,10 @@ msgstr "නව UNIX රහස්පදය ඇතුළත් කරන්න:" msgid "Retype new UNIX password: " msgstr "නව UNIX රහස්පදය නැවත ඇතුළත් කරන්න:" +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "රහස්පදය දැනටමත් භාවිතා වේ. වෙනත් එකක් තෝරාගන්න." + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "ඔබගේ ප්‍රකෘති ප්‍රකරණය %s වේ. \n" diff --git a/po/sr.po b/po/sr.po index ddbe5ab7..ddc65078 100644 --- a/po/sr.po +++ b/po/sr.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2008-04-05 10:48+0100\n" "Last-Translator: Miloš Komarčević \n" "Language-Team: Serbian (sr) \n" @@ -171,16 +171,19 @@ msgid "Unknown PAM error" msgstr "Непозната PAM грешка" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Нова %s%sлозинка: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Поновите нову %s%sлозинку: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Извините, лозинке се не подударају." @@ -359,6 +362,18 @@ msgstr "Правим директоријум „%s“." msgid "Unable to create directory %s: %m" msgstr "Не могу да направим директоријум %s: %m" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "Лозинка непромењена" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "Лозинка је већ у употреби. Изаберите другу." + #: modules/pam_selinux/pam_selinux.c:172 msgid "Would you like to enter a security context? [N] " msgstr "Да ли желите да уђете у сигурносни контекст? [Н]" @@ -520,10 +535,6 @@ msgstr "NIS лозинка не може бити промењена." msgid "You must choose a longer password" msgstr "Морате изабрати дужу лозинку" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "Лозинка је већ у употреби. Изаберите другу." - #: modules/pam_unix/pam_unix_passwd.c:571 #, c-format msgid "Changing password for %s." @@ -545,5 +556,9 @@ msgstr "Унесите нову UNIX лозинку: " msgid "Retype new UNIX password: " msgstr "Поново унесите нову UNIX лозинку: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "Лозинка је већ у употреби. Изаберите другу." + #~ msgid "Requested MLS level not in permitted range" #~ msgstr "Захтевани MLS ниво није у дозвољеном опсегу" diff --git a/po/sr@latin.po b/po/sr@latin.po index 24abc687..03568596 100644 --- a/po/sr@latin.po +++ b/po/sr@latin.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2008-04-05 10:48+0100\n" "Last-Translator: Miloš Komarčević \n" "Language-Team: Serbian (sr) \n" @@ -171,16 +171,19 @@ msgid "Unknown PAM error" msgstr "Nepoznata PAM greška" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Nova %s%slozinka: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Ponovite novu %s%slozinku: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Izvinite, lozinke se ne podudaraju." @@ -359,6 +362,18 @@ msgstr "Pravim direktorijum „%s“." msgid "Unable to create directory %s: %m" msgstr "Ne mogu da napravim direktorijum %s: %m" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "Lozinka nepromenjena" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "Lozinka je već u upotrebi. Izaberite drugu." + #: modules/pam_selinux/pam_selinux.c:172 msgid "Would you like to enter a security context? [N] " msgstr "Da li želite da uđete u sigurnosni kontekst? [N]" @@ -520,10 +535,6 @@ msgstr "NIS lozinka ne može biti promenjena." msgid "You must choose a longer password" msgstr "Morate izabrati dužu lozinku" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "Lozinka je već u upotrebi. Izaberite drugu." - #: modules/pam_unix/pam_unix_passwd.c:571 #, c-format msgid "Changing password for %s." @@ -545,5 +556,9 @@ msgstr "Unesite novu UNIX lozinku: " msgid "Retype new UNIX password: " msgstr "Ponovo unesite novu UNIX lozinku: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "Lozinka je već u upotrebi. Izaberite drugu." + #~ msgid "Requested MLS level not in permitted range" #~ msgstr "Zahtevani MLS nivo nije u dozvoljenom opsegu" diff --git a/po/sv.po b/po/sv.po index 6eb6e9bf..c5f879c6 100644 --- a/po/sv.po +++ b/po/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2007-12-24 13:39+0100\n" "Last-Translator: Christer Andersson \n" "Language-Team: Swedish \n" @@ -166,16 +166,19 @@ msgid "Unknown PAM error" msgstr "Oknt PAM-fel" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Nytt %s%slsenord: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Ange nytt %s%slsenord igen: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Ledsen, lsenorden stmmer inte verens." @@ -353,6 +356,18 @@ msgstr "Skapar katalogen \"%s\"." msgid "Unable to create directory %s: %m" msgstr "Kan inte skapa katalogen %s: %m" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "Ofrndrat lsenord" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "Lsenordet har redan anvnds. Vlj ett annat." + #: modules/pam_selinux/pam_selinux.c:172 msgid "Would you like to enter a security context? [N] " msgstr "Vill du ange en skerhetskontext? [N]" @@ -511,10 +526,6 @@ msgstr "NIS-l msgid "You must choose a longer password" msgstr "Du mste vlja ett lngre lsenord" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "Lsenordet har redan anvnds. Vlj ett annat." - #: modules/pam_unix/pam_unix_passwd.c:571 #, c-format msgid "Changing password for %s." @@ -536,6 +547,10 @@ msgstr "Ange nytt UNIX-l msgid "Retype new UNIX password: " msgstr "Ange nytt UNIX-lsenord igen: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "Lsenordet har redan anvnds. Vlj ett annat." + #~ msgid "Requested MLS level not in permitted range" #~ msgstr "Begrd MLS-niv utanfr giltigt intervall" diff --git a/po/ta.po b/po/ta.po index 0de0379c..4d118538 100644 --- a/po/ta.po +++ b/po/ta.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ta\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2007-06-21 15:33+0530\n" "Last-Translator: I felix \n" "Language-Team: Tamil \n" @@ -169,16 +169,19 @@ msgid "Unknown PAM error" msgstr "தெரியாத PAM பிழை" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "புதிய %s%spassword: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "புதிய %s%spassword மீண்டும் உள்ளிடவும்: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "கடவுச்சொல் பொருந்தவில்லை." @@ -356,6 +359,18 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "கடவுச்சொல் மாற்றப்படவில்லை" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "கடவுச்சொல் ஏற்கனவே பயன்படுத்தப்பட்டது. வேறொன்றை பயன்படுத்தவும்." + #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy msgid "Would you like to enter a security context? [N] " @@ -518,10 +533,6 @@ msgstr "NIS கடவுச்சொல்லை மாற்ற முடிய msgid "You must choose a longer password" msgstr "நீங்கள் நீண்ட கடவுச்சொல்லை தேர்ந்தெடுக்க வேண்டும்" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "கடவுச்சொல் ஏற்கனவே பயன்படுத்தப்பட்டது. வேறொன்றை பயன்படுத்தவும்." - #: modules/pam_unix/pam_unix_passwd.c:571 #, fuzzy, c-format msgid "Changing password for %s." @@ -543,6 +554,10 @@ msgstr "புதிய UNIX கடவுச்சொல்லை உள்ள msgid "Retype new UNIX password: " msgstr "புதிய UNIX கடவுச்சொல்லை மீண்டும் உள்ளிடவும்: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "கடவுச்சொல் ஏற்கனவே பயன்படுத்தப்பட்டது. வேறொன்றை பயன்படுத்தவும்." + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "உங்கள் முன்னிருப்பு சூழல் %s. \n" diff --git a/po/tr.po b/po/tr.po index bf44489d..7448491c 100644 --- a/po/tr.po +++ b/po/tr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2006-05-03 19:00+0200\n" "Last-Translator: Koray Löker \n" "Language-Team: Türkçe \n" @@ -167,16 +167,19 @@ msgid "Unknown PAM error" msgstr "Bilinmeyen PAM hatası" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Yeni %s%sparolası: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Yeni %s%sparolasını tekrar girin: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Üzgünüm, parolalar birbirine uymuyor." @@ -353,6 +356,18 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "Parola değiştirilmedi" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "Parola kullanımda. Lütfen başka bir parola seçin." + #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy msgid "Would you like to enter a security context? [N] " @@ -514,10 +529,6 @@ msgstr "NIS parolası değiştirilemiyor" msgid "You must choose a longer password" msgstr "Daha uzun bir parola girmelisiniz" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "Parola kullanımda. Lütfen başka bir parola seçin." - #: modules/pam_unix/pam_unix_passwd.c:571 #, fuzzy, c-format msgid "Changing password for %s." @@ -539,6 +550,10 @@ msgstr "Yeni parolayı girin: " msgid "Retype new UNIX password: " msgstr "Yeni parolayı tekrar girin: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "Parola kullanımda. Lütfen başka bir parola seçin." + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "Öntanımlı bağlamınız %s \n" diff --git a/po/uk.po b/po/uk.po index a1b4db39..fa4708e0 100644 --- a/po/uk.po +++ b/po/uk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM.uk\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2006-05-03 18:59+0200\n" "Last-Translator: Ivan Petrouchtchak \n" "Language-Team: Ukrainian \n" @@ -168,16 +168,19 @@ msgid "Unknown PAM error" msgstr "Невідома помилка PAM" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "Новий пароль %s%s:" #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Повторіть новий пароль %s%s: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Ваші нові паролі не співпадають." @@ -356,6 +359,18 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "Пароль не змінено" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "Пароль вже вживається. Виберіть інший." + #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy msgid "Would you like to enter a security context? [N] " @@ -522,10 +537,6 @@ msgstr "Не вдалося змінити пароль NIS." msgid "You must choose a longer password" msgstr "Необхідно вибрати довший пароль" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "Пароль вже вживається. Виберіть інший." - #: modules/pam_unix/pam_unix_passwd.c:571 #, fuzzy, c-format msgid "Changing password for %s." @@ -547,6 +558,10 @@ msgstr "Введіть новий пароль UNIX: " msgid "Retype new UNIX password: " msgstr "Повторіть новий пароль UNIX: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "Пароль вже вживається. Виберіть інший." + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "Ваш типовий контекст - %s. \n" diff --git a/po/zh_CN.po b/po/zh_CN.po index 7fe86301..85a1e865 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM.tip\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2008-03-25 15:11+1000\n" "Last-Translator: Leah Liu \n" "Language-Team: Simplified Chinese \n" @@ -169,16 +169,19 @@ msgid "Unknown PAM error" msgstr "未知的 PAM 错误" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "新的 %s%s密码:" #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "重新输入新的 %s%s密码:" #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "抱歉,密码不匹配。" @@ -355,6 +358,18 @@ msgstr "创建目录 '%s'。" msgid "Unable to create directory %s: %m" msgstr "无法创建目录 %s:%m" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "密码未更改" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "密码已使用。请选择其他密码。" + #: modules/pam_selinux/pam_selinux.c:172 msgid "Would you like to enter a security context? [N] " msgstr "是否愿意进入安全性环境?[N]" @@ -511,10 +526,6 @@ msgstr "无法更改 NIS 密码。" msgid "You must choose a longer password" msgstr "必须选择更长的密码" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "密码已使用。请选择其他密码。" - #: modules/pam_unix/pam_unix_passwd.c:571 #, c-format msgid "Changing password for %s." @@ -536,5 +547,9 @@ msgstr "输入新的 UNIX 密码:" msgid "Retype new UNIX password: " msgstr "重新输入新的 UNIX 密码:" +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "密码已使用。请选择其他密码。" + #~ msgid "Requested MLS level not in permitted range" #~ msgstr "请求的 MLS 级别不在允许范围内" diff --git a/po/zh_TW.po b/po/zh_TW.po index 5fe4cc0a..6f205724 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux_PAM\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2006-05-03 18:55+0200\n" "Last-Translator: Novell Language \n" "Language-Team: Novell Language \n" @@ -165,16 +165,19 @@ msgid "Unknown PAM error" msgstr "未知的 PAM 錯誤" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "新 %s%s密碼:" #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "再次輸入新的 %s%s密碼:" #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "抱歉,密碼不符合。" @@ -352,6 +355,18 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "密碼未變更" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "密碼已經由其他使用者使用。請選擇其他密碼。" + #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy msgid "Would you like to enter a security context? [N] " @@ -514,10 +529,6 @@ msgstr "無法變更 NIS 密碼。" msgid "You must choose a longer password" msgstr "您必須選擇更長的密碼" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "密碼已經由其他使用者使用。請選擇其他密碼。" - #: modules/pam_unix/pam_unix_passwd.c:571 #, fuzzy, c-format msgid "Changing password for %s." @@ -539,6 +550,10 @@ msgstr "輸入新的 UNIX 密碼:" msgid "Retype new UNIX password: " msgstr "再次輸入新的 UNIX 密碼:" +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "密碼已經由其他使用者使用。請選擇其他密碼。" + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "您的預設網路位置為 %s。\n" diff --git a/po/zu.po b/po/zu.po index 4dddee24..72fda271 100644 --- a/po/zu.po +++ b/po/zu.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Linux-PAM\n" "Report-Msgid-Bugs-To: http://sourceforge.net/projects/pam\n" -"POT-Creation-Date: 2008-09-30 16:45+0200\n" +"POT-Creation-Date: 2008-10-10 08:49+0200\n" "PO-Revision-Date: 2006-11-03 12:03\n" "Last-Translator: Novell Language \n" "Language-Team: Novell Language \n" @@ -163,16 +163,19 @@ msgid "Unknown PAM error" msgstr "Iphutha le-PAM elingaziwa" #: modules/pam_cracklib/pam_cracklib.c:64 +#: modules/pam_pwhistory/pam_pwhistory.c:61 #, c-format msgid "New %s%spassword: " msgstr "%s%siphasiwedi entsha: " #: modules/pam_cracklib/pam_cracklib.c:66 +#: modules/pam_pwhistory/pam_pwhistory.c:62 #, c-format msgid "Retype new %s%spassword: " msgstr "Thayipha kabusha %s%siphasiwedi entsha: " #: modules/pam_cracklib/pam_cracklib.c:67 +#: modules/pam_pwhistory/pam_pwhistory.c:63 msgid "Sorry, passwords do not match." msgstr "Uxolo, amaphasiwedi awahambelani." @@ -350,6 +353,18 @@ msgstr "" msgid "Unable to create directory %s: %m" msgstr "" +#: modules/pam_pwhistory/pam_pwhistory.c:224 +#: modules/pam_pwhistory/pam_pwhistory.c:258 +#, fuzzy +msgid "Password change aborted." +msgstr "Iphasiwedi ayishintshwanga" + +#: modules/pam_pwhistory/pam_pwhistory.c:235 +#: modules/pam_pwhistory/pam_pwhistory.c:295 +#: modules/pam_unix/pam_unix_passwd.c:470 +msgid "Password has been already used. Choose another." +msgstr "Le phasiwedi isetshenziswa ngothile. Khetha enye." + #: modules/pam_selinux/pam_selinux.c:172 #, fuzzy msgid "Would you like to enter a security context? [N] " @@ -519,10 +534,6 @@ msgstr "Iphasiwedi ye-NIS ayivumanga ukushintshwa." msgid "You must choose a longer password" msgstr "Kumelwe ukhethe iphasiwedi ethe ukuba yinjana" -#: modules/pam_unix/pam_unix_passwd.c:470 -msgid "Password has been already used. Choose another." -msgstr "Le phasiwedi isetshenziswa ngothile. Khetha enye." - #: modules/pam_unix/pam_unix_passwd.c:571 #, fuzzy, c-format msgid "Changing password for %s." @@ -544,6 +555,10 @@ msgstr "Faka iphasiwedi entsha ye-UNIX: " msgid "Retype new UNIX password: " msgstr "Thayipha iphasiwedi entsha ye-UNIX: " +#, fuzzy +#~ msgid "Password has been used already. Choose another." +#~ msgstr "Le phasiwedi isetshenziswa ngothile. Khetha enye." + #, fuzzy #~ msgid "Error translating default context." #~ msgstr "Indawo okuyo yohlelo ingu-%s. \n" diff --git a/xtests/.cvsignore b/xtests/.cvsignore index 530ce890..cc96e8c7 100644 --- a/xtests/.cvsignore +++ b/xtests/.cvsignore @@ -21,3 +21,4 @@ tst-pam_succeed_if1 tst-pam_group1 tst-pam_authfail tst-pam_authsucceed +tst-pam_pwhistory1 diff --git a/xtests/Makefile.am b/xtests/Makefile.am index 30a923aa..620c61d1 100644 --- a/xtests/Makefile.am +++ b/xtests/Makefile.am @@ -28,7 +28,8 @@ EXTRA_DIST = run-xtests.sh tst-pam_dispatch1.pamd tst-pam_dispatch2.pamd \ tst-pam_substack3.pamd tst-pam_substack3a.pamd tst-pam_substack3.sh \ tst-pam_substack4.pamd tst-pam_substack4a.pamd tst-pam_substack4.sh \ tst-pam_substack5.pamd tst-pam_substack5a.pamd tst-pam_substack5.sh \ - tst-pam_assemble_line1.pamd tst-pam_assemble_line1.sh + tst-pam_assemble_line1.pamd tst-pam_assemble_line1.sh \ + tst-pam_pwhistory1.pamd tst-pam_pwhistory1.sh XTESTS = tst-pam_dispatch1 tst-pam_dispatch2 tst-pam_dispatch3 \ tst-pam_dispatch4 tst-pam_dispatch5 \ @@ -36,7 +37,8 @@ XTESTS = tst-pam_dispatch1 tst-pam_dispatch2 tst-pam_dispatch3 \ tst-pam_unix1 tst-pam_unix2 tst-pam_unix3 \ tst-pam_access1 tst-pam_access2 tst-pam_access3 \ tst-pam_access4 tst-pam_limits1 tst-pam_succeed_if1 \ - tst-pam_group1 tst-pam_authfail tst-pam_authsucceed + tst-pam_group1 tst-pam_authfail tst-pam_authsucceed \ + tst-pam_pwhistory1 NOSRCTESTS = tst-pam_substack1 tst-pam_substack2 tst-pam_substack3 \ tst-pam_substack4 tst-pam_substack5 tst-pam_assemble_line1 diff --git a/xtests/run-xtests.sh b/xtests/run-xtests.sh index 4e981858..b06685da 100755 --- a/xtests/run-xtests.sh +++ b/xtests/run-xtests.sh @@ -23,6 +23,8 @@ cp /etc/security/group.conf /etc/security/group.conf-pam-xtests install -m 644 "${SRCDIR}"/group.conf /etc/security/group.conf cp /etc/security/limits.conf /etc/security/limits.conf-pam-xtests install -m 644 "${SRCDIR}"/limits.conf /etc/security/limits.conf +mv /etc/security/opasswd /etc/security/opasswd-pam-xtests + for testname in $XTESTS ; do for cfg in "${SRCDIR}"/$testname*.pamd ; do install -m 644 $cfg /etc/pam.d/$(basename $cfg .pamd) @@ -49,6 +51,7 @@ done mv /etc/security/access.conf-pam-xtests /etc/security/access.conf mv /etc/security/group.conf-pam-xtests /etc/security/group.conf mv /etc/security/limits.conf-pam-xtests /etc/security/limits.conf +mv /etc/security/opasswd-pam-xtests /etc/security/opasswd if test "$failed" -ne 0; then echo "===================" echo "$failed of $all tests failed" diff --git a/xtests/tst-pam_pwhistory1.c b/xtests/tst-pam_pwhistory1.c new file mode 100644 index 00000000..5c3246fa --- /dev/null +++ b/xtests/tst-pam_pwhistory1.c @@ -0,0 +1,169 @@ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, and the entire permission notice in its entirety, + * including the disclaimer of warranties. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * ALTERNATIVELY, this product may be distributed under the terms of + * the GNU Public License, in which case the provisions of the GPL are + * required INSTEAD OF the above restrictions. (This clause is + * necessary due to a potential bad interaction between the GPL and + * the restrictions contained in a BSD-style copyright.) + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Check remember handling + * Change ten times the password + * Try the ten passwords again, should always be rejected + * Try a new password, should succeed + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include +#include + +static int in_test; + +static const char *passwords[] = { + "pamhistory01", "pamhistory02", "pamhistory03", + "pamhistory04", "pamhistory05", "pamhistory06", + "pamhistory07", "pamhistory08", "pamhistory09", + "pamhistory10", + "pamhistory01", "pamhistory02", "pamhistory03", + "pamhistory04", "pamhistory05", "pamhistory06", + "pamhistory07", "pamhistory08", "pamhistory09", + "pamhistory10", + "pamhistory11", + "pamhistory01", "pamhistory02", "pamhistory03", + "pamhistory04", "pamhistory05", "pamhistory06", + "pamhistory07", "pamhistory08", "pamhistory09", + "pamhistory10"}; + +static int debug; + +/* A conversation function which uses an internally-stored value for + the responses. */ +static int +fake_conv (int num_msg, const struct pam_message **msgm, + struct pam_response **response, void *appdata_ptr UNUSED) +{ + struct pam_response *reply; + int count; + + /* Sanity test. */ + if (num_msg <= 0) + return PAM_CONV_ERR; + + if (debug) + fprintf (stderr, "msg_style=%d, msg=%s\n", msgm[0]->msg_style, + msgm[0]->msg); + + if (msgm[0]->msg_style != 1) + return PAM_SUCCESS; + + /* Allocate memory for the responses. */ + reply = calloc (num_msg, sizeof (struct pam_response)); + if (reply == NULL) + return PAM_CONV_ERR; + + /* Each prompt elicits the same response. */ + for (count = 0; count < num_msg; ++count) + { + reply[count].resp_retcode = 0; + reply[count].resp = strdup (passwords[in_test]); + if (debug) + fprintf (stderr, "send password %s\n", reply[count].resp); + } + + /* Set the pointers in the response structure and return. */ + *response = reply; + return PAM_SUCCESS; +} + +static struct pam_conv conv = { + fake_conv, + NULL +}; + + +int +main(int argc, char *argv[]) +{ + pam_handle_t *pamh=NULL; + const char *user="tstpampwhistory"; + int retval; + + if (argc > 1 && strcmp (argv[1], "-d") == 0) + debug = 1; + + for (in_test = 0; + in_test < (int)(sizeof (passwords)/sizeof (char *)); in_test++) + { + + retval = pam_start("tst-pam_pwhistory1", user, &conv, &pamh); + if (retval != PAM_SUCCESS) + { + if (debug) + fprintf (stderr, "pwhistory1-%d: pam_start returned %d\n", + in_test, retval); + return 1; + } + + retval = pam_chauthtok (pamh, 0); + if (in_test < 10 || in_test == 20) + { + if (retval != PAM_SUCCESS) + { + if (debug) + fprintf (stderr, "pwhistory1-%d: pam_chauthtok returned %d\n", + in_test, retval); + return 1; + } + } + else if (in_test < 20) + { + if (retval != PAM_MAXTRIES) + { + if (debug) + fprintf (stderr, "pwhistory1-%d: pam_chauthtok returned %d\n", + in_test, retval); + return 1; + } + } + + retval = pam_end (pamh,retval); + if (retval != PAM_SUCCESS) + { + if (debug) + fprintf (stderr, "pwhistory1: pam_end returned %d\n", retval); + return 1; + } + } + + return 0; +} diff --git a/xtests/tst-pam_pwhistory1.pamd b/xtests/tst-pam_pwhistory1.pamd new file mode 100644 index 00000000..b03098fa --- /dev/null +++ b/xtests/tst-pam_pwhistory1.pamd @@ -0,0 +1,7 @@ +#%PAM-1.0 +auth required pam_permit.so +account required pam_permit.so +password required pam_pwhistory.so remember=10 retry=1 debug +password required pam_unix.so use_authtok md5 +session required pam_permit.so + diff --git a/xtests/tst-pam_pwhistory1.sh b/xtests/tst-pam_pwhistory1.sh new file mode 100644 index 00000000..ddb3b8b1 --- /dev/null +++ b/xtests/tst-pam_pwhistory1.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +/usr/sbin/useradd tstpampwhistory +./tst-pam_pwhistory1 +RET=$? +/usr/sbin/userdel -r tstpampwhistory 2> /dev/null +exit $RET -- cgit v1.2.3