Ubuntu Server не может изменить пароли

451
Plazgoth

В настоящее время я использую trusty (Ubuntu 14.04.3 LTS) с общей версией ядра 3.13.0-65.

Как пользователь root, я не могу изменить пароль пользователя:

 root@server:~# passwd newuser passwd: Authentication token manipulation error passwd: password unchanged 

Я также не могу изменить пароль для учетной записи root:

root@server:~# passwd passwd: Authentication token manipulation error passwd: password unchanged 

Я долго искал. Это не проблема с / должна быть смонтирована как r / w. Разрешения для / etc / passwd и / etc / shadow в порядке. Я могу вручную изменить пароль в файле / etc / shadow, и это работает. Но мне нужно понять, почему passwd получает ошибку.

Я думаю, что мне нужно копнуть глубже в /etc/pam.d/*, но я не уверен, с чего начать.

Любые идеи очень приветствуются. Спасибо!

ОБНОВЛЕННАЯ ИНФОРМАЦИЯ:

  • В командной строке не передаются посторонние символы.
  • В настоящее время это проблема для всех существующих и новых пользователей. Я попытался добавить нового пользователя с помощью adduser и получил ту же ошибку из сценария adduser, когда он должен был попросить у меня пароль.
2
`ПАРОЛЬ `должен запросить у вас новый пароль пользователя, а затем повторить для подтверждения. То, что вы вставили, похоже, что вы можете включать посторонние символы после имени пользователя. У вас есть пробел после имени пользователя? Есть ли в / var / log / secure или / var / log / messages какие-либо другие подсказки? Это происходит только для этого одного пользователя? Если вы создаете user2, это происходит для них? Xalorous 7 лет назад 0
Спасибо за идеи. Я обновил исходный вопрос некоторыми ответами на ваши вопросы и посмотрю журналы, которые вы упомянули далее. Plazgoth 7 лет назад 0
Может быть, проверить свой профиль Bash для псевдонимов для пароля, который добавляет элементы? Я не знаю Ubuntu, поэтому я не могу сказать вам, где искать. На RHEL это `~ / .bashrc` и` ~ / .bash_profile`. А если у вас его нет, он дает вам `/ etc / .bashrc` и` / etc / .bash_profile`. И не забывайте, что root `~` - это `/ root /`, а не `/ user / username`. Также попробуйте `sudo passwd username` с пользователем с правами sudoer. Xalorous 7 лет назад 0
Спасибо за предложения. Вы можете проверить псевдонимы с помощью самой команды alias без поиска в скриптах запуска. Псевдоним сам по себе дает псевдонимы текущего пользователя. Я также пытался использовать sudo безрезультатно. Ничего интересного в журналах, которые вы упомянули, тоже. Plazgoth 7 лет назад 0
Проверьте владение и права доступа к файлу / etc / shadow. Если кто-то еще является владельцем, а бит «прочее» не включает «запись», это может быть причиной этого. И это выходит за рамки моего опыта по устранению неполадок, но если бит setuid для команды passwd не установлен или что-то маскирует его, это может привести к тому, что другие не смогут установить passwd, но root все еще может. Но root тоже не работает. Xalorous 7 лет назад 0
Также проверьте этот [вопрос] (http://superuser.com/questions/107386/try-to-change-a-ubuntu-users-password-authentication-token-manipulation-err?rq=1), в частности, 2-й и 3-ий ответы. 3-й раз упоминает разрешения etc / passwd, их легко проверить. Второй ссылается на сайт, который рассказывает, как снимать PAM. Будьте очень осторожны и прислушайтесь к его советам о резервном копировании файлов перед тем, как редактировать их, и при необходимости откройте другого администратора, чтобы выполнить восстановление. Xalorous 7 лет назад 0
Checked permissions on /etc/shadow they look fine, like you said root is the owner. -rw-r----- 1 root shadow 1687 Sep 14 16:26 shadow Plazgoth 7 лет назад 0
Во 2-й есть ссылка на отладку PAM, но эта ссылка кажется мертвой :( Plazgoth 7 лет назад 0
Давайте [продолжим обсуждение в чате] (http://chat.stackexchange.com/rooms/45477/discussion-between-plazgoth-and-xalorous). Plazgoth 7 лет назад 0

2 ответа на вопрос

1
Plazgoth

Ok I think I have it figured out. Digging into /etc/pam.d/* I enabled debug and audit options for most common-* files. That did not help much other than to point me toward the pam_unix module:

passwd[45463]: pam_unix(passwd:chauthtok): username [root] obtained passwd[45463]: pam_unix(passwd:chauthtok): username [root] obtained passwd[45463]: pam_unix(passwd:chauthtok): password - new password not obtained 

I started looking more closely at each of the options in common-password given to the pam_unix.so. The options I had were: obscure use_authtok try_first_pass sha512

Reading the man page for pam_unix I saw that use_authtok was related to changing the password. And it talked about using it after pam_cracklib. In my case there is no pam_cracklib so I decided to try and remove that option. That restored the passwd command's functionality fully.

I am not sure if a script had added that option or it was a default.

Thanks for all those who tried to provide ideas.

0
DrNoone

Кажется, проблема связана с encryptfs (зашифрованный модуль pam файловой системы). Когда пользователь меняет свой пароль, парольную фразу шифрования диска необходимо как-то изменить. Когда эта попытка изменения не удалась, весь процесс смены пароля завершается неудачно и откатывается. Смотрите: https://bugs.launchpad.net/ecryptfs/+bug/1486470

Спасибо за предложение. В файлах common- * ecryptfs был установлен как необязательный, не обязательный, поэтому я продолжил и прокомментировал его. Это заставило ПРЕДУПРЕЖДЕНИЕ перестать появляться в /var/log/auth.log. Однако это не решило проблему неработающей команды passwd. На этом этапе даже вошел в систему как пользователь root, я не могу выполнить команду passwd, чтобы изменить пароль root. Plazgoth 7 лет назад 0