adduser говорит, что пользователь существует, когда пользователь не существует

Шаг 1: Остановите службу apache2 от запуска

Перед удалением введите эту команду в терминал / другой CLI:

sudo systemctl stop apache2.service

Шаг 2: Удалите бинарные файлы пакетов, общесистемные файлы конфигурации и сиротские зависимости

Чтобы полностью удалить сам пакет, а также его файлы конфигурации всей системы и любые зависимости, которые были необходимы для пакета, но больше не нужны, выполните:

sudo apt-get purge --auto-remove

Объяснение: purge выполняет то же, что и apt-get remove --purge; он избавляется от самого пакета и связанных файлов конфигурации. Это похоже на один шаг выше apt-get remove, который удаляет только двоичные файлы. --auto-remove делает то же, что и apt-get autoremove; он избавляется от сиротских зависимостей.

Извините, я не дал вам эту конкретную команду для использования в комментариях, но совершенно нормально делать все, используя отдельные команды, а не одну команду, поскольку выполняются те же действия. В вашем конкретном случае, поскольку вы уже выполнили remove --purge, вы можете просто выполнить часть автозапуска с помощью sudo apt autoremove, и это должно позаботиться о том, что удалить --purge не удалил.

В качестве альтернативы, если вы хотите быть выборочным относительно того, какие зависимости удаляются, вы можете избавиться от флага --auto-remove (выполняя sudo apt-get purge ) и следовать шаги, которые я нашел из этого удивительного ответа, чтобы легко создать своего рода пользовательскую функцию-зависимость. В следующей команде перечислены все зависимости пакета, а затем каналы, которые перечисляются в отдельные команды apt-get remove, которые все отправляются в сценарий оболочки, который можно открыть в текстовом редакторе, и при необходимости изменить. Затем вы просто выполняете сценарий оболочки, как только вы этого доволите. Команда:

apt-cache depends |awk '{print "sudo apt-get remove "$NF}' >pg_remove.sh

Файл pg_remove.sh сохраняется в вашем домашнем каталоге (очевидно, вы можете добавить путь до имени выходного файла, если вы хотите его сохранить где-нибудь еще). Для запуска скрипта выполните bash pg_remove.sh (опять же, если ваш выходной файл не находится в вашем домашнем каталоге, измените эту команду, чтобы указать путь к ее местоположению).

Шаг 3: Удалите файлы конфигурации пользователя

Затем вам нужно вручную удалить файлы конфигурации для конкретного пользователя, хранящиеся в вашем домашнем каталоге. Они могут находиться в их собственном каталоге и / или в ~ / .config, ~ / .cache, ~ / .local.

Сначала найдите файлы, содержащие имя пакета в ~/.config, и удалите их. Вы можете использовать ls -a ~/.config или ls -A ~/.config, чтобы просмотреть все содержимое вашего дома, включая скрытые файлы / папки. Если вы используете Nautilus для этого, убедитесь, что вы включили возможность просмотра скрытых файлов (View>Show Hidden Files). Затем удалите их с помощью rm или Nautilus.

Также посмотрите в своей домашней папке каталог с именем пакета (или что-то похожее на имя пакета - это может быть не совсем то же самое). Вероятно, он будет скрыт по умолчанию, и он, вероятно, начнется с «.» - если он существует. Я не так много знаю об apache, поэтому я не уверен, будет ли этот каталог там, или как он будет выглядеть. В любом случае, если он существует, удалите его и!

Кроме того, зайдите в ~/.cache и ~/.local/share для каталога с именем после пакета.

Ссылки для шагов 2 и 3: Как полностью удалить пакет ?, Каков правильный способ полностью удалить приложение ?, Как полностью удалить файлы конфигурации

Возможная будущая переустановка

В этом пакете могут быть библиотеки вам действительно нужно в будущем, и вам может потребоваться переустановить его. Ubuntu поставляется с установленным libapache2-mod-wsgi-py3, который походит на версию по умолчанию, поэтому я предполагаю, что он не мог хорошо играть с любой версией Python, которую вы использовали. Если вы хотите узнать больше, проверьте вывод which python и ps -fA | grep python ... Если конфликт с версией Python действительно был проблемой, тогда удивительный ответ и этот адрес, как вы можете правильно установите mod-wgsi через pip (установка пакетов пакета называется mod_wgsi).

5
задан 17 February 2012 в 01:29

3 ответа

Попробуйте ввести следующее в терминале

sudo userdel -r atc

Это должно удалить все экземпляры пользователя

6
ответ дан 25 May 2018 в 14:12
  • 1
    Правильно, никогда не выбрал ответ на этот вопрос. Если я правильно помню, у меня был другой пользователь atc, и удаление этого исправляло проблему. Поэтому я выбираю это как свой ответ. – David R. 3 November 2012 в 04:06

Есть ли какая-то причина, по которой вы указываете uid, а не позволяете системе выбрать ее для вас? Вы можете видеть, используется ли ваш выбранный идентификатор, выполнив grep '10141' /etc/passwd. Если это так, сообщение об ошибке, безусловно, немного вводит в заблуждение: /

Также вполне возможно, что ваша система распознает пользователей, которые не находятся в /etc/passwd, например, используя LDAP. Один быстрый способ проверить это - сделать id atc и посмотреть, распознает ли система его. Другой способ - getent passwd atc, который также покажет вам пользователей, которых система распознает, кто не находится в /etc/passwd. Или вы можете снова проверить, используется ли uid с getent passwd 10141. (Вы также можете запустить getent passwd, чтобы получить полный список записей.) Подробнее о getent.

Чтобы узнать, откуда могут прийти эти пользователи, вы можете посмотреть /etc/nsswitch.conf ( Подробнее о getent ) - начало строки passwd покажет вам, где ваша система ищет пользователей. Общие значения по умолчанию: files и compat, хотя более сложные настройки могут иметь несколько значений, включая такие значения, как ldap, dns и winbind. files означает стандартные файлы, включая /etc/passwd.

Я не так четко понимаю точный смысл compat, но мое чтение справочной страницы nsswitch.conf предполагает, что это комбинация files и nis. nis - это Сетевая информационная служба, которая в настоящее время в основном исключена, но может повлиять на вашу систему.

9
ответ дан 25 May 2018 в 14:12
  • 1
    Я сделал grep файлы etc для UID. Что касается того, почему я его использую ... Я монтирую файлы из NFS, принадлежащие этому UID. Так что проще просто добавить пользователей с их существующими UID, чем перебирать все файлы на новый UID. Я использую аутентификацию LDAP, но я знаю, что в LDAP нет пользователя atc. пытается попробовать id и getent commans – David R. 17 February 2012 в 05:06
  • 2
    Хм ... И он где-то существует. Теперь, чтобы выяснить, можно ли его удалить. root @ ws-prod-www-01: ~ # id atc uid = 199999999 (atc) gid = 20 (dialout) groups = 20 (dialout) root @ ws-prod-www-01: ~ # getent passwd atc atc: x : 199999999: 20: АТЙ: / Users / АТЙ: / bin / Tcsh – David R. 17 February 2012 в 05:10
  • 3
    команда id username показала для меня, что мой пользователь был учетной записью домена, а не локальной, имея выход gid=16777222(domain users). Остановка samba / winbind позволяет запускать adduser, чтобы сделать его локальным пользователем. После добавления пользователя я могу снова запустить samba / winbind, и домены домена связывают локальный пользователь по имени пользователя. – BeowulfNode42 22 July 2015 в 06:25

В моем случае у /etc/nsswitch.conf было это для passwd:

passwd:     files winbind

Пользователь находился в Active Directory, поэтому winbind видел «существующую» учетную запись пользователя в AD.

Running:   # service winbind stop

Затем запуск useradd позволил мне добавить учетную запись пользователя.

0
ответ дан 25 May 2018 в 14:12

Другие вопросы по тегам:

Похожие вопросы: